
El comando tee de Linux resuelve un problema específico: quieres ver la salida del comando en tu terminal Y guardarla en un archivo al mismo tiempo. Sin tee, eliges uno u otro.
¿Qué es el comando tee de Linux?
tee lee de la entrada estándar y escribe tanto en la salida estándar como en uno o más archivos simultáneamente. El nombre proviene de las conexiones en forma de T en plomería, que dividen el flujo en dos direcciones. La misma idea aquí.
Cómo tee se integra en la tubería de Unix
En una tubería estándar de Unix, los datos fluyen de izquierda a derecha a través de tuberías. tee se inserta en ese flujo y bifurca la salida: una copia continúa por la tubería, una copia va a un archivo. Sin él, tendrías que ejecutar el comando dos veces o sacrificar la visibilidad en la terminal.
Sintaxis del comando tee
command | tee [OPTIONS] [FILE...]El carácter de tubería alimenta la salida del comando anterior a tee. tee luego escribe esa salida en la terminal y en cada archivo especificado.
Cómo usar el comando tee
Escribir salida a un archivo y a la terminal
Uso básico: ejecuta un comando y escribe su salida en un archivo mientras aún la ves en pantalla:
ls -la | tee directory_listing.txtLa terminal muestra la salida de ls. directory_listing.txt obtiene el mismo contenido. Sin tee, ls > directory_listing.txt redirigiría a un archivo pero no mostraría nada en pantalla.
Agregar a un archivo con tee -a
Por defecto, tee sobreescribe el archivo cada vez. La opción -a agrega en su lugar:
echo "New entry" | tee -a logfile.txtEste es el patrón para construir archivos de registro de manera incremental en scripts.
Escribir en múltiples archivos a la vez
Enumera múltiples nombres de archivos y tee escribe en todos ellos simultáneamente:
uptime | tee file1.txt file2.txt file3.txtLos tres archivos reciben el mismo contenido. Útil para copiar snapshots de configuración a múltiples ubicaciones.
Usar sudo con tee para archivos de propiedad de root
Aquí es donde tee se gana su lugar en los sistemas de producción. No puedes usar redirección de salida con sudo porque el identificador maneja la redirección antes de que sudo se ejecute:
echo "net.ipv4.ip_forward=1" | sudo tee /etc/sysctl.confLa tubería alimenta a través de tee, que se ejecuta como root a través de sudo y escribe en el archivo protegido. Para agregar en lugar de sobrescribir, añade -a:
echo "new config line" | sudo tee -a /etc/nginx/nginx.confPatrones avanzados de uso de tee
Suprimir salida de la terminal con tee
Si quieres guardar la salida en un archivo pero no verla en pantalla, redirige la salida de tee a /dev/null:
command | tee output.txt > /dev/nullEl archivo aún se escribe. La terminal no ve nada.
Combinar tee con otros comandos
tee puede estar en medio de una tubería, permitiendo inspeccionar datos en etapas intermedias:
cat large_file.txt | tee snapshot.txt | grep "ERROR" | wc -lsnapshot.txt captura el archivo completo. La terminal muestra solo el conteo de líneas de ERROR. Dos resultados de un pase.
tee vs redirección de salida: cuándo usar cada una
La redirección de salida (>) es más simple cuando solo necesitas guardar en un archivo y no te importa la salida en la terminal. tee es la opción correcta cuando necesitas ambas cosas, cuando necesitas escribir en múltiples archivos simultáneamente, o cuando necesitas sudo para escribir en rutas protegidas. Si tu script se ejecuta sin supervisión, la redirección suele ser suficiente. Si alguien lo está monitoreando en vivo, tee mantiene la salida visible.
FAQ: Comando tee de Linux
Lee de la entrada estándar y escribe tanto en la terminal como en uno o más archivos al mismo tiempo. Piensa en ello como un divisor de tuberías.
Agrega la opción -a: comando | tee -a nombrearchivo.txt. Sin -a, tee sobrescribe el archivo cada vez que se ejecuta.
Redirige a sudo tee: echo «contenido» | sudo tee /ruta/a/archivo/protegido. Esto funciona porque tee, y no la redirección de shell, realiza la escritura, y tee se ejecuta con privilegios elevados.
La redirección de salida (> o >>) solo escribe en un archivo. Pierdes visibilidad en la terminal. tee escribe en ambos. Usa redirección para scripts en segundo plano donde la salida en la terminal no importa. Usa tee cuando necesites ver la salida y guardarla.