Linux – Tee registrar en archivo el log de un comando o script

por | 25 febrero, 2016

tee es un comando Linux que permite copiar la entrada estándar de un comando hacia un archivo y mantener la salida correspondiente por pantalla o terminal. Esta es la diferencia con el operador «>»  el cual redirecciona simplemete hacia un archivo.

Ejemplo:

# ls |tee log.txt

En este caso el resultado de ls se verá en pantalla de manera normal pero a su ver se volcará en el archivo log.txt

Esto lo podemos utilizar también en cualquier script para redireccionar al mismo tiempo su salida hacia un archivo de log.

log_file="$HOME/milog.txt-`date +'%Y-%m-%d_%H-%M-%S'`"
[ -f "$log_file" ] || touch "$log_file"
exec &> >(tee -a "$log_file")

comando
comando
...

La opción -a de tee hará que se añada la información el final del fichero sin borrar lo anterior.

Si queremos que no se muestra nada por pantalla y sólo vuelque en archivo utilizaremos el operador >> el cual añade al final del fichero sin borrar lo anterior (a diferencia de >):

log_file="$HOME/milog.txt-`date +'%Y-%m-%d_%H-%M-%S'`"
[ -f "$log_file" ] || touch "$log_file"
exec 1>> $log_file 2>&1

comando
comando
...


 

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *