Как перенаправить 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.