Как перенаправить stderr и stdout в разные файлы в одной строке bash?
Я знаю это много:
$ command 2>> error
$ command 1>> output
Есть ли способ передать stderr в файл ошибки и вывести stdout в выходной файл в той же строке bash?
Ответы
Ответ 1
Просто добавьте их в одну строку command 2>> error 1>> output
Однако обратите внимание, что >>
предназначен для добавления, если в файле уже есть данные. В то время как >
будет перезаписывать любые существующие данные в файле.
Итак, command 2> error 1> output
, если вы не хотите добавлять.
Просто ради завершения, вы можете написать 1>
как только >
, так как дескриптор файла по умолчанию - это выход. поэтому 1>
и >
- одно и то же.
Итак, command 2> error 1> output
становится, command 2> error > output
Ответ 2
Или, если вам нравится смешивать выходы (stdout и stderr) в одном файле, который вы можете использовать:
command > merged-output.txt 2>&1
Ответ 3
Вроде:
$ command >>output 2>>error
Ответ 4
Попробуйте следующее:
your_command 2>stderr.log 1>stdout.log
Дополнительная информация
Цифры 0
через 9
являются файловыми дескрипторами в bash.
0
обозначает стандартный ввод, 1
обозначает стандартный вывод, 2
обозначает стандартную ошибку. 3
через 9
являются запасными для любого другого временного использования.
Любой файловый дескриптор может быть перенаправлен в файл или в другой дескриптор файла с помощью оператора >
. Вместо этого вы можете использовать оператор >>
для добавления в файл вместо создания пустого.
Использование:
file_descriptor > имя_файла
file_descriptor > </Амп; file_descriptor
Обратитесь к http://www.tldp.org/LDP/abs/html/io-redirection.html.