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 ...