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á STDOUTa log.txt, pero ¿qué sucede si también quiero ver la salida en el terminal?
He leído sobre teey la MULTIOSopció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.txtparece 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>&1scriptcomando. O tal vezmyscript >&1 > log.txt 2>&1Respuestas:
Podría ser que su script esté produciendo resultados para
stdoutystderr, y solo está obteniendo uno de esos flujos de salida en su archivo de registro../my_script.sh | tee log.txtde hecho enviará todo al terminal, pero solo volcarástdoutal archivo de registro../my_script.sh > log.txt 2>&1hará 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 canalizastdoutatee, que lo copia al terminal y al archivo de registro.El
zshequivalente 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 alteeproceso 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