tubería y tee
100%

Text-Fu · Lección 4

tubería y tee

Aprende cómo conectan órdenes las tuberías y cómo `tee` guarda un flujo mientras lo transmite.

Las tuberías conectan órdenes pequeñas para que los datos fluyan entre ellas sin necesidad de un archivo intermedio. La orden tee puede copiar una parte de ese flujo en un archivo y continuar transmitiéndolo.

Conexión de órdenes con |

Comencemos con un comando que produce mucha salida:

$ ls -la /etc

La lista de elementos es probablemente demasiado larga para caber en tu pantalla, lo que dificulta su lectura. Si bien podrías redirigir esta salida a un archivo, un método más eficiente es enviarla directamente a otro comando, como less, para una visualización fácil.

$ ls -la /etc | less

El operador de tubería | conecta stdout de la orden de la izquierda con stdin de la orden de la derecha. La shell inicia las órdenes de la tubería y prepara la conexión; pueden trabajar al mismo tiempo, de modo que less empiece a leer antes de que ls haya producido toda la lista.

En ls -la /etc | less, ¿qué flujos conecta | de forma predeterminada?

Mantenimiento de stderr por separado

Una tubería normal solo transporta stdout. Stderr de la orden izquierda conserva su destino anterior, que suele ser la terminal:

$ find /etc -name "*.conf" | less

Las rutas coincidentes atraviesan la tubería, mientras que los diagnósticos de permisos pueden seguir apareciendo directamente en la terminal. Redirige stderr por separado si necesitas otro comportamiento:

$ find /etc -name "*.conf" 2> find-errors.log | less

En find /etc -name "*.conf" | less, ¿adónde va normalmente stderr de find si no hay otra redirección?

Copia de un flujo con tee

¿Qué pasa si quieres ver la salida en tu pantalla y guardarla en un archivo simultáneamente? Aquí es donde entra en juego el comando tee. El comando pipe and tee en linux es una combinación clásica para registrar y monitorear.

$ ls | tee listing.txt

tee lee stdin, escribe una copia en cada archivo indicado y también envía los mismos datos a stdout. De forma predeterminada, crea o trunca el archivo, igual que >.

¿Qué orden muestra la salida de generate-report y también sustituye report.txt por esa misma salida?

Utiliza -a para añadir contenido en vez de sustituir el archivo:

$ date | tee -a activity.log

¿Qué orden muestra la fecha actual y la añade a activity.log?

Conservación de un resultado intermedio

Puedes crear flujos de trabajo aún más avanzados encadenando estos comandos. Un patrón común es usar pipe to tee en medio de una cadena de comandos más larga. Esto te permite guardar un resultado intermedio mientras continúas procesando los datos.

Por ejemplo, puedes usar la combinación linux pipe tee para ver y guardar la salida antes de un filtrado adicional:

$ ls -la /etc | tee etc-listing.txt | grep "conf"

Este comando hace tres cosas:

  1. Lista el contenido del directorio /etc.
  2. Envía esa salida por tubería a tee, que guarda una copia en etc-listing.txt y también la pasa adelante.
  3. La salida de tee se envía luego por tubería a grep, que filtra las líneas que contienen "conf".

El archivo contiene los datos anteriores al filtrado de grep. Si quieres guardar únicamente las líneas filtradas, coloca tee después de grep.

¿Qué contiene all.txt cuando produce | tee all.txt | grep error termina correctamente?

Para practicar las tuberías y la copia de flujos, prueba estos laboratorios:

  1. Redirección de Entrada y Salida en Linux - Practica el control del flujo de datos desde comandos manipulando la salida estándar (stdout), el error estándar (stderr) y la entrada estándar (stdin) usando operadores como >, >>, 2> y el comando tee.
  2. Control de Secuencia y Tubería en Linux - Aprende a controlar las secuencias de ejecución de comandos, utilizar tuberías (pipelines) y aprovechar herramientas potentes de procesamiento de texto como cut, grep, wc, sort y uniq.
  3. Redirección de Flujo de Datos - Aprende el arte de la redirección de flujos en Linux, incluida la manipulación de flujos de entrada, salida y error estándar, la combinación de salidas y el uso de /dev/null.

Lección completada

Has completado tubería y tee

Ahora puedes conectar órdenes y conservar puntos concretos de un flujo de datos.

  • Canalizar stdout de una orden hacia stdin de otra.

  • Redirigir stderr por separado cuando sea necesario.

  • Copiar la entrada en un archivo y en stdout con tee.

  • Añadir contenido con tee -a en vez de sustituir un archivo.

  • Colocar deliberadamente tee antes o después de un filtro.

Guarda tu progreso

Crea una cuenta gratuita para guardar esta lección y continuar en cualquier dispositivo.

Crear una cuenta gratuita
Siguiente Lección
Volver a Text-Fu