Digamos que tengo un script Zsh y que me gustaría dejar que imprima la salida STDOUT
, pero también copiar (volcar) su salida a un archivo en el disco.
Además, el script comienza con la siguiente opción
set -o xtrace
lo que lo obliga a ser detallado e imprimir los comandos que ejecuta. Me gustaría capturar esta salida también en un archivo en el disco.
Entiendo que si lo hago
./my_script.sh > log.txt
solo se enviará STDOUT
a log.txt
, pero ¿qué sucede si también quiero ver la salida en el terminal?
He leído sobre tee
y la MULTIOS
opción en Zsh, pero no estoy seguro de cómo usarlos.
Cuando lo hago:
./my_script | tee log.txt
Puedo ver la salida en el terminal, pero el archivo no log.txt
parece estar capturando todo (de hecho, captura casi nada).
shell-script
zsh
io-redirection
pipe
output
Amelio Vazquez-Reina
fuente
fuente
./my_script.sh > log.txt 2>&1
script
comando. O tal vezmyscript >&1 > log.txt 2>&1
Respuestas:
Podría ser que su script esté produciendo resultados para
stdout
ystderr
, y solo está obteniendo uno de esos flujos de salida en su archivo de registro../my_script.sh | tee log.txt
de hecho enviará todo al terminal, pero solo volcarástdout
al archivo de registro../my_script.sh > log.txt 2>&1
hará lo contrario, volcará todo en el archivo de registro, pero no mostrará nada en la pantalla.El truco es combinar los dos con
tee
:Esto redirige
stderr
(2
) astdout
(1
), luego se canalizastdout
atee
, que lo copia al terminal y al archivo de registro.El
zsh
equivalente multios sería:Es decir, redirija stdout tanto al stdout original como a log.txt (internamente a través de una tubería a algo que funcione
tee
), y luego redirija stderr a eso también (a la tubería altee
proceso interno ).fuente
./myscript.sh >&1 2>&1 > log.txt
? (es decir, cambiar el orden de las dos últimas redirecciones). ¿Habría alguna diferencia entre ellos?stdout
, solo alog.txt
. La última línea en la respuesta (agregada por @ StéphaneChazelas y no yo) sale a ambos.nohup permite que un trabajo continúe incluso si la consola muere o está cerrada, útil para largas copias de seguridad, etc., pero aquí estamos usando su registro automático.
fuente