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