#linux #bash #командная_строка
Можно перенаправить поток вывода и(или) ошибок в файл с его перезаписью: 1>file выведет данные с потока вывода в файл с его созданием или перезаписью 2>file выведет данные с потока ошибок в файл с его созданием или перезаписью 1&>file (и несколько других вариантов) выведут данные и с потока вывода и с потока ошибок в файл с его созданием и перезаписью. Можно выводить поток вывода или поток ошибок в файл, записывая в его конец: 1>>file 2>>file Но если попробовать сделать что-то вроде 1&>>file, то выскочит синтаксическая ошибка. Как можно записывать в конец файла и с потока вывода и с потока ошибок?
Ответы
Ответ 1
Например в 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
Комментариев нет:
Отправить комментарий