Enviar output a dos destinos con tee

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
Multiples archivos No
Append vs overwrite Sólo overwrite (sin redirección avanzada) Ambos (-a)

Recursos y lecturas recomendadas

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.

  • Untitled Conversation
  • Hola 👋 , soy la IA de Linuxmind.dev, te puedo ayudar a aprender.
Gathering thoughts ...

Leave a Reply

Your email address will not be published. Required fields are marked *