При выполнении командной строки
somecommand <f1 >f2 2>f3
- оболочка соединит
f1
со стандартным потоком ввода команды и - стандартный поток вывода команды с
f2
и - стандартный поток ошибок команды в
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
Это связано с тем, что перенаправления обрабатываются отдельно от команды, на которую они влияюти они не являются аргументами командной строки команды.
См. также: