Как перенаправить 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> и > - одно и то же.
Или, если вам нравится смешивать выходы (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 являются запасными для любого другого временного использования.
Любой файловый дескриптор может быть перенаправлен в файл или в другой дескриптор файла с помощью оператора >. Вместо этого вы можете использовать оператор >> для добавления в файл вместо создания пустого.