next up previous contents index
Siguiente: Redirección no destructiva de Subir: Fontanería Anterior: Redireción de la entrada   Índice General   Índice de Materias

Uso de tuberías

Ya mostramos como usar sort como un filtro. Sin embargo, estos ejemplos dan por hecho que usted tiene los datos guardados en alguna parte o que tecleará los datos desde la entrada estándar. ¿Qué pasa si los datos que quiere ordenar vienen de la salida de otro programa, como ls?

La opción -r de sort ordena los datos en orden alfabético inverso. Si quiere listar los ficheros de su directorio actual en orden inverso una forma de hacerlo es como sigue:
\begin{tscreen}
/home/larry/papers\char93  ls \\
english-list \\
history-final \\
masters-thesis \\
notes \\
\end{tscreen}
Ahora el redireccionamiento d la orden ls a un fichero llamado file-list:
\begin{tscreen}
/home/larry/papers\char93  ls $>$\ file-list \\
/home/larry/pap...
...\\
history-final \\
english-list \\
/home/larry/papers\char93
\end{tscreen}
Aquí, usted guarda la salida de un ls en un fichero, y luego ejecuta sort -r con ese fichero. Pero esto es incómodo y usa un fichero temporal para guardar los datos de ls.

La solución es la canalizaciónpipelining. Ésta es una posibilidad del intérprete de órdenes, que conecta una serie de órdenes mediante una ``tubería.'' La stdout del primer programa se envía a la stdin del segundo programa. En este caso, queremos enviar la stdout de ls a la stdin de sort. Se utiliza el símbolo ``|'' para crear una tubería, como sigue:
\begin{tscreen}
/home/larry/papers\char93  ls $\mid$\ sort -r \\
notes \\
mast...
...\\
history-final \\
english-list \\
/home/larry/papers\char93
\end{tscreen}
Este programa es más corto y más fácil de teclear.

He aquí otro útil ejemplo, la orden
\begin{tscreen}
/home/larry/papers\char93  ls /usr/bin
\end{tscreen}
muestra una lista larga de ficheros, la mayoría de los cuáles salen de la pantalla demasiado rápido como para que lo pueda leer. Así que, usamos more para mostrar la lista de ficheros de /usr/bin.
\begin{tscreen}
/home/larry/papers\char93  ls /usr/bin $\mid$\ more
\end{tscreen}
Ahora ya puede paginar las lista de ficheros cómodamente.

¡Pero lo mejor no termina aquí! Puede hacer canalizaciones entre más de dos programas juntos. El programa head es un filtro que muestra las primeras líneas de un flujo entrante (en este caso, entrada de una canalización). Si quiere mostrar los últimos nombres de fichero en orden alfabético del directorio actual, use estas órdenes:
\begin{tscreen}
/home/larry/papers\char93  ls $\mid$\ sort -r $\mid$\ head -1 \\
notes \\
/home/larry/papers\char93
\end{tscreen}
donde head -1 muestra la primera línea de entrada que recibe (en este caso, el flujo de datos ordenados inversamente de ls).


next up previous contents index
Siguiente: Redirección no destructiva de Subir: Fontanería Anterior: Redireción de la entrada   Índice General   Índice de Materias
Ismael Olea 2002-09-26