Можно перенаправить поток вывода и(или) ошибок в файл с его перезаписью:
1>file выведет данные с потока вывода в файл с его созданием или перезаписью
2>file выведет данные с потока ошибок в файл с его созданием или перезаписью
1&>file (и несколько других вариантов) выведут данные и с потока вывода и с потока ошибок в файл с его созданием и перезаписью.
Можно выводить поток вывода или поток ошибок в файл, записывая в его конец:
1>>file 2>>file
Но если попробовать сделать что-то вроде 1&>>file, то выскочит синтаксическая ошибка.
Как можно записывать в конец файла и с потока вывода и с потока ошибок?
Ответ
Например в Bash так:
$ { echo "stdout text"; echo "stderr text">&2; } >> file 2>&1
$ cat file
stdout text
stderr text
Bash выполняет перенаправление слева направо:
>>file: открывает file в режиме дозаписи и перенаправляет туда стандартный вывод (stdout)
2>&1: перенаправляет вывод ошибок (stderr) туда, куда в настоящий момент выводится стандартный вывод, т.е. в открытый ранее файл file
cmd 2>&1 >> file перенаправит только стандартный вывод в file, т.к вывод ошибок будет перенаправлен на стандартный вывод до того, как последний будет перенаправлен в файл:
$ { echo "stdout text"; echo "stderr text">&2; } 2>&1 >> file
stderr text
$ cat file
stdout text
Комментариев нет:
Отправить комментарий