Introducción a tee en Linux
En el ecosistema de Linux, el comando tee es una herramienta esencial para redirigir la salida estándar
hacia múltiples destinos de manera simultánea. Su nombre proviene de la forma de la tubería en fontanería (una “T”)
que divide el flujo en dos direcciones. Con tee, puedes ver la salida de un comando en pantalla y guardarla en
uno o varios archivos, o incluso enviarla a otros procesos. En este artículo detallado exploraremos todos los matices
de tee, desde la sintaxis básica hasta ejemplos avanzados y buenas prácticas.
¿Para qué sirve tee
- Capturar la salida de un comando y guardarla en un archivo sin perder la visualización por pantalla.
- Duplicar la salida a varios archivos simultáneamente.
- Formar parte de cadenas de procesamiento en pipelines, encadenando comandos de forma más versátil.
- Registrar logs mientras se monitorea la ejecución en tiempo real.
Sintaxis básica
tee [OPCIONES]... [ARCHIVO]...
Con esta sencilla sintaxis, tee lee de la entrada estándar y escribe tanto en salida estándar
como en los archivos especificados. A continuación, analizamos sus opciones principales.
Opciones más útiles
Opción | Descripción |
---|---|
-a, –append | Añade la salida al final de los archivos en lugar de sobrescribirlos. |
-i, –ignore-interrupts | Ignora señales de interrupción (SIGINT), útil en scripts críticos. |
–help | Muestra la ayuda y sale. |
–version | Muestra la versión del programa. |
Casos de uso esenciales
1. Guardar y ver al mismo tiempo
dmesg tee /tmp/log_dmesg.txt
Aquí dmesg imprime mensajes del kernel, tee muestra todo en pantalla y lo guarda en
/tmp/log_dmesg.txt.
2. Enviar a múltiples ficheros
ls -l tee listado1.txt listado2.txt
La salida de ls -l se duplica en listado1.txt y listado2.txt al mismo tiempo.
3. Append de logs
echo Evento ocurrido tee -a /var/log/mi_aplicacion.log
Al usar -a, no se borra el contenido anterior del archivo, sino que se añade al final.
Redirección de errores y tee
Con frecuencia conviene capturar la salida de errores junto con la salida estándar. Para ello:
# Capturar stdout y stderr simultáneamente comando 2>1 tee salida_completa.txt
Utilizamos 2gtamp1 para enviar los errores (descriptor 2) al mismo canal que la salida estándar (descriptor 1).
Integración avanzada con shell
Proceso sustitución
Mediante process substitution podemos encadenar tee sin interrumpir el flujo:
grep ERROR archivo.log tee >(wc -l gt errores_count.txt) less
Aquí tee envía la salida a wc -l (que cuenta líneas) y a la paginación con less.
Uso en scripts y cronjobs
Para scripts automatizados, tee permite generar archivos de registro legibles y procesables:
#!/bin/bash LOG_DIR=/var/log/mi_script mkdir -p LOG_DIR { echo Iniciando tarea: (date) ./tarea_critica.sh echo Tarea finalizada: (date) } tee -a LOG_DIR/tarea.log
Comparativa: redirección simple vs tee
Característica | Redirección simple (gt) | tee |
---|---|---|
Visualización por pantalla | No | Sí |
Multiples archivos | No | Sí |
Append vs overwrite | Sólo overwrite (sin redirección avanzada) | Ambos (-a) |
Recursos y lecturas recomendadas
- Manual de tee en GNU Coreutils
- Página del manual de tee (man7.org)
- Advanced Bash-Scripting Guide: redirección de E/S
Conclusión
El comando tee es una adición poderosa a tu caja de herramientas de Linux. Te permite duplicar
flujos de datos, mantener registros detallados y construir tuberías más flexibles y legibles.
Con un conocimiento sólido de sus opciones y casos de uso, maximizarás tu eficiencia al trabajar en
entornos de consola, automatización y administración de sistemas.
Leave a Reply