Una traducción no oficial de
$ info "Text utilities" "Opening the software toolbox" "Toolbox introduction"
«Mucha gente lleva una navaja de la Armada Suiza en los bolsillos de sus pantalones (o cartera). Una navaja de la Armada Suiza es una herramienta útil de tener: tiene varias hojas de cuchillo, un destornillador, pinzas, palillo para dientes, sacacorchos y probablemente unas cuantas cosas más. Para trabajos chicos misceláneos de todos los días donde se necesita una herramienta de propósito general, es la herramienta indicada.
En la otra mano, un carpintero experimentado no construye una casa utilizando una navaja de la Armada Suiza. En reemplazo, posee una caja de herramientas llena de herramientas especializadas-una sierra, un martillo, un destornillador, etc. Y conoce exactamente dónde y cuando utilizar cada herramienta; no lo vas a agarrar martillando clavos con el mango del destornillador.»
La filosofía de Unix (en línea de comandos) cree que un único programa especializado para hacer todas las tareas no es bueno, al menos no para usuarios avanzados o administradores.
Los usuarios finales sin conocimientos en áreas informáticas pueden preferir tener un sólo programa para todo, pero este único programa tiene dificultades para el mantenimiento y modificación. Se vuelve monstruoso y complicado.
En reemplazo se prefiere la navaja de la Armada Suiza para tareas cotidianas, o sea un conjunto de programas chicos de gran simplicidad que en conjunto se potencian.
Para que los programas trabajen en conjunto se utiliza el concepto de flujo como una corriente de bytes.
Al igual que con las tuberías reales (digamos caños, los grifos o canillas, duchas, etc.) de una casa, se conectan unos a otros donde cada uno tiene una entrada, una función y una salida. El concepto de «tuberías» lo veremos en la sección 2.5.2 por ahora vamos a distinguir los otros tres aspectos con un ejemplo.
El comando sort puede ordenar por orden alfabético. Esta sería la función del programa. Pero ¿qué ordena? bueno aca es donde interviene la entrada. Que sin utilizar la magia de las tuberías, será el teclado la entrada.
Haremos una prueba:
$ sort El comando sort puede ordenar por orden alfabético... luego presionamos Ctrl-D que significa ``fin de archivo'' en la mayoría de los casos, apareciendo en pantalla:
alfabético comando El orden ordenar por puede sort
Con este ejemplo nos damos cuenta que la salida es la pantalla
Para esta altura varios se pueden preguntar ``Pero no es la única entrada que posee mi programa''; es verdad que un programa puede tener muchas entradas y muchas salidas. Por ejemplo cuando lee un archivo, éste es una entrada más. Pero los conceptos que venimos estudiando son entradas y salidas especiales, llamadas entrada estándar y salida estándar.
También existe un tipo de salida adicional que es el error estándar. Por este flujo se canaliza todos los mensajes de error o avisos del programa. Facilitando varias tareas. Una muy común es reunir todos los errores en un archivo separado en caso de problemas, para su posterior análisis.
En nuestro ejemplo si sort intentaba abrir un archivo y no existía, es preferible que escriba:
Fichero o directorio no existe
Antes que lo canalice como salida estándar y diga
directorio existe Fichero no o
Teniendo en claro los conceptos vamos a ver como utilizamos las tuberías para «pegar» los programas entre si.