next up previous contents
Next: Tuberías (pipes) Up: Redirección de entradas y Previous: Redirección de entradas y   Índice General

Entrada, salida y error estándar

Haremos una breve introducción a los conceptos que definen los componentes de un programa en línea de comandos.

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.


next up previous contents
Next: Tuberías (pipes) Up: Redirección de entradas y Previous: Redirección de entradas y   Índice General
Proyecto Cursos - LuCAS - http://lucas.hispalinux.es/htmls/cursos.html