Как в начале скрипта перенаправить вывод в файл и на экран одновременно?
Ответ
написанное ниже справедливо, насколько я знаю, лишь для «продвинутых» оболочек типа 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
Комментариев нет:
Отправить комментарий