Страницы

Поиск по вопросам

пятница, 1 марта 2019 г.

Перенаправление потока вывода и потока ошибок в конец файла

Можно перенаправить поток вывода и(или) ошибок в файл с его перезаписью: 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

Комментариев нет:

Отправить комментарий