tee: Duplica la salida de un comando en un fichero

El comando tee permite redirigir la salida de un comando a un archivo y mostrarla simultáneamente por pantalla en GNU/Linux.

El comando tee es una utilidad muy utilizada en sistemas GNU/Linux que permite duplicar la salida de un comando: por un lado la muestra por pantalla (salida estándar) y, al mismo tiempo, la guarda en uno o varios archivos.

Su nombre proviene de la forma en T de una tubería, ya que divide el flujo de datos en dos direcciones. Es una herramienta especialmente útil en scripts, procesos de depuración y automatizaciones, donde se necesita registrar información sin perder la visibilidad en tiempo real.

¿Para qué se usa el comando tee?

El comando tee se utiliza para:

  • Guardar la salida de un comando en un fichero sin dejar de verla en pantalla.
  • Registrar logs mientras se ejecutan procesos.
  • Redirigir resultados a múltiples archivos simultáneamente.
  • Facilitar la depuración de scripts mostrando y almacenando datos a la vez.

A diferencia de la redirección clásica (>), tee no “consume” la salida, sino que la duplica, lo que lo hace mucho más flexible en muchos escenarios.

Sintaxis básica

La sintaxis general del comando es:

comando | tee [opciones] [archivo...]
  • comando: cualquier comando cuya salida quieras capturar.
  • tee: recibe la salida del comando mediante una tubería (|).
  • archivo: uno o varios archivos donde se guardará la salida.

Ejemplos de uso y opciones interesantes

A continuación se muestran ejemplos prácticos del comando.

Guardar la salida de un comando en un archivo

ls /home/t3rr0rz0n3 | tee listado.txt

En este ejemplo, se ejecuta ls sobre el directorio del usuario y su salida se muestra por pantalla mientras se guarda simultáneamente en el archivo listado.txt. Esto es útil cuando quieres conservar un registro del resultado sin perder la visualización inmediata.

Sobrescribir un archivo (comportamiento por defecto)

echo "Hola mundo" | tee salida.txt

Por defecto, tee sobrescribe el contenido del archivo si este ya existe. Es decir, cualquier contenido previo será reemplazado por la nueva salida. Este comportamiento es equivalente al operador > en redirecciones tradicionales.

Añadir contenido a un archivo sin sobrescribir

echo "Nueva línea" | tee -a salida.txt

La opción -a (append) permite añadir la salida al final del archivo en lugar de sobrescribirlo. Es especialmente útil para mantener logs acumulativos o históricos de ejecución.

Guardar la salida en múltiples archivos

date | tee archivo1.txt archivo2.txt

tee permite especificar varios archivos como destino. En este caso, la fecha actual se guarda en archivo1.txt y archivo2.txt al mismo tiempo, además de mostrarse en pantalla. Esto resulta útil cuando necesitas distribuir la misma información en diferentes ubicaciones.

Usar tee con permisos elevados

echo "Configuración" | sudo tee /etc/ejemplo.conf

Este es un uso muy habitual. Cuando necesitas escribir en un archivo que requiere permisos de administrador, no puedes hacerlo directamente con > porque la redirección se ejecuta con permisos del usuario actual. Sin embargo, tee sí puede ejecutarse con sudo, permitiendo escribir en archivos protegidos.

Evitar mostrar la salida en pantalla

ls | tee archivo.txt > /dev/null

Si en algún caso quieres usar tee solo para guardar la salida sin mostrarla, puedes redirigir la salida estándar a /dev/null. Esto elimina la visualización en pantalla pero mantiene la escritura en el archivo.

Registrar la salida de un script o proceso largo

bash script.sh | tee ejecucion.log

Aquí se ejecuta un script y toda su salida se muestra en tiempo real mientras se guarda en ejecucion.log. Esto es extremadamente útil para depuración, ya que permite revisar posteriormente todo lo ocurrido durante la ejecución.

Capturar errores estándar junto con la salida

comando 2>&1 | tee salida_completa.log

Por defecto, tee solo captura la salida estándar (stdout). Con 2>&1, se redirige también la salida de errores (stderr) al mismo flujo, permitiendo guardar absolutamente toda la información generada por el comando en un único archivo.

Conclusión

El comando tee es una herramienta fundamental en GNU/Linux para gestionar flujos de salida de forma flexible. Su capacidad para duplicar datos en tiempo real lo convierte en una pieza clave en tareas de administración, scripting y depuración.

Aunque su uso básico es muy sencillo, combinado con tuberías y redirecciones avanzadas permite construir flujos de trabajo muy potentes. Entender bien tee marca una gran diferencia cuando trabajas con automatizaciones o necesitas controlar con precisión la salida de tus comandos.


¿Buscas otro comando?

¡Revisa nuestro "Diccionario de comandos para GNU/Linux"!

Diccionario de comandos para GNU/Linux
Haz que cada palabra cuente: tu donación nos inspira a seguir creando contenido. Accede al apartado de Donación para hacer tu aportación