Страницы

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

среда, 10 июля 2019 г.

Перенаправление stdout и stderr и на экран и в файл

Как в начале скрипта перенаправить вывод в файл и на экран одновременно?


Ответ

написанное ниже справедливо, насколько я знаю, лишь для «продвинутых» оболочек типа gnu/bash и zsh

для перенаправления всего, что будут выдавать команды, выполняющиеся внутри скрипта, в файл (вдобавок к выводу на терминал), можно использовать команду exec в комплекте с программой tee
если требуется записывать в файл file только то, что команды скрипта будут выдавать в stdout, можно написать так:
exec > >(tee file) command1 command2
если же требуется записывать в файл и то, что отправляется в stderr, то надо добавить перенаправление 2>&1
exec > >(tee file) 2>&1 command1 command2

дополнение по поводу просто вывода в файл обоих потоков полностью posix-совместимым образом
и stdout и stderr, в которые выведут информацию команды, будут записаны в file
exec >file 2>&1 command1 command2
а так file будет дополнен (а не перезаписан, как в предыдущем примере):
exec >>file 2>&1 command1 command2

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

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