Скажем, у меня есть сценарий Zsh, и я хотел бы, чтобы он выводил выходные данные STDOUT
, а также копировал (выводил) свои выходные данные в файл на диске.
Более того, скрипт начинается со следующей опции
set -o xtrace
что заставляет его быть многословным и печатать, какие команды он выполняет. Я хотел бы также записать этот вывод в файл на диске.
Я понимаю, что если я сделаю
./my_script.sh > log.txt
это будет просто послать STDOUT
к log.txt
, но что , если я хочу , чтобы быть в состоянии увидеть выход в терминале?
Я прочитал о tee
и MULTIOS
вариант в Zsh, но я не уверен, как их использовать.
Когда я делаю:
./my_script | tee log.txt
Я вижу вывод на терминале, но файл log.txt
не захватывает все (на самом деле он захватывает только что-нибудь).
shell-script
zsh
io-redirection
pipe
output
Амелио Васкес-Рейна
источник
источник
./my_script.sh > log.txt 2>&1
script
команду. Или, может бытьmyscript >&1 > log.txt 2>&1
Ответы:
Может случиться так, что ваш скрипт производит вывод в
stdout
иstderr
, и вы получаете только один из этих потоков в файл журнала../my_script.sh | tee log.txt
будет действительно выводить все на терминал, но будет только дампstdout
в лог-файл../my_script.sh > log.txt 2>&1
поступит наоборот, выгрузит все в файл журнала, но ничего не отобразит на экране.Хитрость заключается в том, чтобы объединить их с
tee
:Это переадресовывает
stderr
(2
) вstdout
(1
), затем трубыstdout
вtee
, который копирует его на терминал и в файл журнала.zsh
Multios эквивалент будет:То есть перенаправить stdout как в исходный stdout, так и в log.txt (внутренне через канал к чему-то, что работает как
tee
), а затем перенаправить stderr на это (в канал к внутреннемуtee
процессу).источник
./myscript.sh >&1 2>&1 > log.txt
? (т.е. переключение порядка двух последних перенаправлений). Будет ли какая-то разница между ними?stdout
, просто чтобыlog.txt
. Последняя строка в ответе (добавленная @ StéphaneChazelas, а не мной) выводит на оба.nohup позволяет выполнять работу, даже если консоль умирает или закрывается, что полезно для длительных резервных копий и т. д., но здесь мы используем ее автоматическое ведение журнала.
источник