Linux: перенаправление потоков stderr и stdout в файл

Перенаправить одновременно stderr и stdout в файл можно так:
1
program > log_file 2>&1
или, чтобы не перезаписывать каждый раз файл, а добавлять в конец, соответственно:
1
bash_command >> log_file 2>&1
Что значит выражение: 2>&1:
2 - это дескриптор потока stderr;
&1 - это дескриптор потока stdout (амперсант перед 1 означает, что 1 - это не имя файла, а именно дескриптор);
то есть мы перенаправляем stderr туда же, куда перенаправлен к этому моменту stdout. Поэтому сначала перенаправляем stdout в файл (посредством > log_file), а затем перенаправляем туда же stderr. Например, следующая команда:
1
program > err_file 2>&1 > log_file
Перенаправит stderr туда, куда был к этому моменту перенаправлен stdout (в файл err_file), а потом перенаправит stdout в log_file. Другой способ перенаправить stderr и stdout в разные файлы:
1
program > log_file 2> err_file

Комментариев нет :

Отправить комментарий