Страницы

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

четверг, 9 января 2020 г.

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

#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

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

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