next up previous contents
Next: Redirección Up: Redirección de entradas y Previous: Entrada, salida y error   Índice General


Tuberías (pipes)

Podríamos graficar cada programa como una «caja negra» que tiene una entrada y una salida que se pueden unir entre ellos.

El ejemplo que utilizamos se encuentra esquematizado en la figura 2.1 siendo la entrada estándar el teclado y la salida estándar la terminal o por simplicidad la pantalla.

Figura 2.1: Esquema de entrada y salida estándar del ejemplo
\includegraphics[scale=0.5]{imagenes/eps/Shell-RedireccionIO-Diagrama-Sort.eps}

Vamos a suponer un caso ficticio donde necesitamos todas las definiciones de cada palabra en un texto. Primero las ordenamos alfabéticamente, luego utilizamos un comando ficticio llamado diccionario que toma palabras de la entrada estándar y las reescribe junto a su significado en la salida estándar.

Su esquema se ve en la figura 2.2. En este caso nombramos por separado las entradas y salidas estándares de los dos programas, pero la «unión» entre ambos programas se puede considerar como un solo «tubo».

Figura 2.2: Esquema de entrada y salida estándar del ejemplo 2
\includegraphics[scale=0.5]{imagenes/eps/Shell-RedireccionIO-Diagrama-Diccionario.eps}

En ese tubo el flujo está en un estado intermedio, donde está ordenado pero no tiene las definiciones de diccionario.

En la linea de comandos esto se escribe de la siguiente manera:

$ sort | dicccionario

Donde el caracter | representa el la conexión entre la salida estándar de un programa y la entrada estándar de otro.

Con este fuerte y simple concepto se pueden concatenar gran cantidad de programas como si fuera una línea de producción en serie para generar resultados complejos.

Para mejorar nuestro ejemplo sacaremos las palabras repetidas, antes de mostrarlas con definiciones. Suponiendo que exista un programa llamado sacar-repetidas, la linea de comando sería:

$ sort | sacar-repetidas | diccionario

Simple, utilizando herramientas sencillas logramos algo un poco más complicado. El inconveniente que tenemos en este ejemplo es que hay que tipear aquello a procesar. Normalmente queremos utilizar archivos como entrada de nuestros datos. Es necesario un comando que envíe a salida estándar un archivo, así se procesa como la entrada estándar del sort y continua el proceso normalmente. Este comando es cat. La sintaxis es simple cat nombre-de-archivo.

Quedando nuestro ejemplo:

$ cat archivo.txt | sort | sacar-repetidas | diccionario

... arma un glosario de las palabras que se encuentren en archivo.txt

La combinación de comandos es incalculable y brinda posibilidades enormes veremos algunos ejemplos en la ejercitación.


next up previous contents
Next: Redirección Up: Redirección de entradas y Previous: Entrada, salida y error   Índice General
Proyecto Cursos - LuCAS - http://lucas.hispalinux.es/htmls/cursos.html