Куда перенаправляется команда bash? - PullRequest
0 голосов
/ 09 июня 2018

Я пытаюсь использовать следующую команду bash "команда f2 2> f3", будет ли она работать следующим образом?

  • stdin из f1 будет перенаправлен на команду
  • стандартный вывод команды будет перенаправлен на f2
  • , а стандартный вывод команды будет перенаправлен на f3

Спасибо

1 Ответ

0 голосов
/ 09 июня 2018

При выполнении командной строки

somecommand <f1 >f2 2>f3
  1. оболочка соединит f1 со стандартным потоком ввода команды и
  2. стандартный поток вывода команды с f2и
  3. стандартный поток ошибок команды в f3,

в этом порядке.

Обратите внимание, что порядок перенаправлений имеет значение:

  • Если f1 недоступен для чтения, будет выдана ошибка (оболочкой), и команда не будет выполнена.Ни f2, ни f3 не будут созданы или усечены.

  • Если f2 недоступен для записи, будет выдана ошибка (оболочкой), и команда выполнит командуне выполнить.f3 не будет создан или усечен.

  • Если f3 недоступен для записи, то будет выдана ошибка (оболочкой), и команда не будет выполнена.f2 все равно будет создан и / или усечен.

Относительное расположение somecommand в командной строке, однако, не имеет значения.

somecommand <f1 >f2 2>f3

аналогично

<f1 somecommand >f2 2>f3

и

<f1 >f2 somecommand 2>f3

и

<f1 >f2 2>f3 somecommand

Это связано с тем, что перенаправления обрабатываются отдельно от команды, на которую они влияюти они не являются аргументами командной строки команды.

См. также:

...