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:
Ahora el redireccionamiento d la orden ls a un fichero llamado
file-list:
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:
Este programa es más corto y más fácil de teclear.
He aquí otro útil ejemplo, la orden
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.
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:
donde head -1 muestra la primera línea de entrada que recibe (en
este caso, el flujo de datos ordenados inversamente de ls).