Перенаправить все выходные данные в файл [дубликат]
этот вопрос уже есть ответ здесь:
Я знаю, что в Linux, чтобы перенаправить вывод с экрана в файл, я могу использовать >
или tee
. Однако я не уверен, почему часть вывода по-прежнему выводится экран так и не записан в файл.
есть ли способ перенаправить все выходные данные в файл?
10 ответов:
эта часть записывается в stderr, используйте
2>
чтобы перенаправить его. Например:foo > stdout.txt 2> stderr.txt
или если вы хотите в одном файле:
foo > allout.txt 2>&1
Примечание: это работает в (ba) sh, проверьте вашу оболочку для правильного синтаксиса
все операционные системы POSIX есть 3 потока: stdin, stdout и stderr. stdin-это вход, который может принимать stdout или stderr. stdout-это основной вывод, который перенаправляется с помощью
>
,>>
или|
. stderr-это вывод ошибок, который обрабатывается отдельно, чтобы любые исключения не передавались команде или не записывались в файл, который она может сломать; обычно это отправляется в какой-либо журнал или сбрасывается напрямую, даже когда stdout перенаправляется. Чтобы перенаправить оба в одно и то же место, используйте:
command &> /some/file
EDIT: спасибо Заку за указание на то, что вышеуказанное решение не является портативным-используйте вместо этого:
*command* > file 2>&1
если вы хотите замолчать ошибку, сделайте:
*command* 2> /dev/null
чтобы получить вывод на консоль и в файл
file.txt
например.make 2>&1 | tee file.txt
Примечание:
&
(in2>&1
) указывает, что1
- это не имя файла, а дескриптор файла.
использовать это -
"require command here" > log_file_name 2>&1
подробное описание оператора перенаправления в Unix / Linux.
> оператор перенаправляет вывод в файл, но это может быть к устройству. Вы также можете использовать >> для добавления.
Если вы не укажете число, то предполагается стандартный выходной поток, но вы также можете перенаправить ошибки
> file redirects stdout to file 1> file redirects stdout to file 2> file redirects stderr to file &> file redirects stdout and stderr to file
/dev / null-это нулевое устройство, которое принимает любой вход, который вы хотите, и выбрасывает его. Его можно использовать к подавить любой вывод.
кредиты на osexp2003 и J.а. ...
вместо
&>> your_file.log
за строки
crontab -e
Я использую
#!/bin/bash exec &>> your_file.log …
в начале сценария BASH.
преимущество: у вас есть определения журнала в вашем скрипте. Хорошо для Git и т. д.