Перенаправить все выходные данные в файл [дубликат]
этот вопрос уже есть ответ здесь:
Я знаю, что в 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/fileEDIT: спасибо Заку за указание на то, что вышеуказанное решение не является портативным-используйте вместо этого:
*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 и т. д.