A veces, administrando servidores por linea de comandos, voy a hacer una tarea que se va a demorar mucho tiempo, quizás horas. Por ejemplo, compilar todas las actualizaciones e instalarlas en *BSD, sincronizar un repositorio, etc.
Muchas veces al ejecutar comandos importantes para el sistema es necesario estar atento a la pantalla por si salen mensajes de alerta que nos pueden ser de ayuda, pero es evidente que no podemos estar atentos al 100% con tareas de este tipo. Una solución cutre sería redireccionar el STDOUT (>) a un fichero, usaremos el comando find sólo como ejemplo, por poner algo:
# find / -name *.conf > salida
En este caso, salida contiene toda la salida que hubiese hecho por pantalla el comando en concreto, pero… ¿y si queremos ver la salida en tiempo real, y al mismo tiempo almacenarla en un fichero? Muy facil, vamos a usar tee:
# find / -name *.conf | tee salida
tee envía lo que recibe por el pipe hacia la salida standard STDOUT (la pantalla) y al mismo tiempo lo envia al fichero que le pasemos por parámetro… ¡voilà! Pero supongamos que no queremos escribir de cero el fichero salida como lo haríamos con > sinó añadir esos datos al final como haríamos con >>. En este caso tenemos que usar el parámetro -a (append):
# find / -name *.conf | tee -a salida
Hasta aquí esta mini-explicación de un comando muy útil pero muchas veces desconocido, olvidado o simplemente poco usado.