Ir al contenido España-Español
HP.com España principal Productos y Servicios Soporte y Drivers Soluciones Cómo Comprar
» Contactar con HP
Más opciones
HP.com España principal
Utilización de HP-UX: Servidores y estaciones de trabajo HP > Capítulo 3 Utilización del shell

Explicación de los archivos de entrada estándar, salida estándar y error estándar

» 

Documentación técnica

Libro completo en PDF
» Comentarios
Aquí empieza el contenido

 » Tabla de contenido

 » Glosario

 » Índice

Cada proceso abre tres “archivos” estándar: entrada estándar (stdin), salida estándar (stdout) y error estándar (stderr). Los programas utilizan estos archivos del modo siguiente:

  • La entrada estándar es el lugar desde el cual el programa prevé leer su entrada. Por defecto, los procesos leen el archivo stdin desde el teclado.

  • La salida estándar es el lugar donde el programa graba su salida. Por defecto, los procesos graban el archivo stdout en la pantalla del terminal.

  • El error estándar es el lugar donde el programa escribe sus mensajes de error. Por defecto, los procesos graban el archivo stderr en la pantalla del terminal.

La siguiente figura ilustra la relación de estos archivos con el proceso.

Figura 3-1 Entrada estándar, salida estándar y error estándar

Entrada estándar, salida estándar y error estándar

Grabación de la salida estándar en un archivo

El shell permite desviar la salida estándar de un proceso desde la pantalla (el valor por defecto) a un archivo. Desviar la salida permite almacenar el texto generado por un comando en un archivo; además, es una manera práctica de seleccionar qué archivos o dispositivos (por ejemplo, impresoras) utiliza un programa.

En su forma más sencilla, la sintaxis de comando es la siguiente:

stdout

comando > archivosalida

donde comando es el comando cuya salida se desvía y archivosalida es el nombre del archivo en el que el proceso graba su salida estándar. Si el archivo de salida existe, se pierde el contenido que tuviera anteriormente. Si el archivo no existe, se crea.

Para adjuntar la salida a un archivo existente, utilice dos signos mayores que (>>) que señalen el archivo al que haya de adjuntarse.

En la siguiente figura se ilustra el paradero de los archivos stdin, stdout y stderr cuando la salida se desvía a un archivo.

Figura 3-2 Entrada, salida y error estándar cuando se desvía la salida

Entrada, salida y error estándar cuando se desvía la salida

En el siguiente ejemplo se muestra el desvío de la salida con el comando who, que presenta una lista de los usuarios que tienen iniciada una sesión actualmente en el sistema. En lugar de mostrar los usuarios en la pantalla del terminal, la salida se desvía al archivo quiénestáconectado.

who(1)

$ who > quiénestáconectado  Se desvía la salida al archivo quiénestáconectado.
$ more quiénestáconectado   Se muestra el contenido del archivo quiénestáconectado.
luis console 14 Ene 08:50  
teo tty01 14 Ene 11:57  
quique tty02 14 Ene 15:12  

Utilización de archivos para la entrada estándar

El shell permite desviar la entrada estándar de un proceso para que la entrada se lea desde un archivo en lugar de desde el teclado. Para desviar la entrada de un proceso, separe el comando y el nombre del archivo de entrada con un signo menor que (<) apuntando al nombre del comando. Puede utilizar el desvío de la entrada con cualquier comando que acepte la entrada desde el archivo stdin (el teclado).

En su forma más sencilla, la sintaxis de comando es la siguiente:

stdin

comando < archivoentrada

donde comando es el comando cuya entrada se desvía y archivoentrada es el nombre del archivo a partir del cual el proceso lee la entrada estándar. El archivo debe existir para que el desvío se lleve a cabo con éxito.

En la siguiente figura se ilustra el paradero de los archivos stdin, stdout y stderr cuando la entrada se desvía desde un archivo.

Figura 3-3 Entrada, salida y error estándar cuando se desvía la entrada

Entrada, salida y error estándar cuando se desvía la entrada

En el siguiente ejemplo, la salida estándar del comando who se desvía a un archivo llamado guardarquién. A continuación, el comando more muestra el contenido de guardarquién. Por último, la entrada estándar del comando wc (word count) se desvía para que proceda del archivo guardarquién:

Utilización de “>”

$ who > guardarquién Se desvía la salida al archivo guardarquién
$ more guardarquién Se muestra el contenido del archivo guardarquién
luis console 14 Ene 08:50
teo tty01 14 Ene 11:57  
quique tty02 14 Ene 15:12  

Utilización de “<“

$ wc -l < guardarquién Se desvía la entrada desde el archivo guardarquién
4 La respuesta

En el ejemplo anterior, el comando wc con la opción -l cuenta el número de líneas del archivo de entrada. Puesto que la entrada se desvía desde guardarquién, este número es igual al número de usuarios que tenía iniciada una sesión en el sistema cuando se ejecutó el comando who.

Desvío tanto de la entrada estándar como de la salida estándar

Puede desviar tanto la entrada estándar como la salida estándar de un comando. No obstante, no utilice el mismo nombre de archivo para la entrada estándar y la salida estándar, puesto que el contenido original del archivo de entrada se perdería.

En la siguiente figura se ilustra a dónde se dirigen los archivos stdin, stdout y stderr cuando tanto la salida como la entrada se desvían de un archivo a otro.

Figura 3-4 Desvío tanto de la entrada como de la salida

Desvío tanto de la entrada como de la salida

Utilización de la entrada estándar y la salida estándar por defecto

En el siguiente ejemplo se utiliza el comando sort para ordenar el texto escrito en el teclado. Al escribir CTRL-D, se termina la entrada estándar. La salida estándar se muestra en la pantalla del terminal del modo siguiente:

sort(1)
$ sort
rato           
pato           
gato           
CTRL-D          Fin de la entrada estándar.
gato           
pato           
rato            Fin de la salida estándar.

Desvío de la entrada estándar

En el siguiente ejemplo, se desvía la entrada:

$ more calcetines   Muestra el contenido del archivo calcetines.
rombos       
cuadros         
diseño de puntos          
$ sort < calcetines    Se desvía la entrada desde el archivo calcetines y se ordena el contenido.
cuadros
diseño de puntos          
rombos       

En el ejemplo anterior, el comando sort utiliza de entrada un archivo que se llama calcetines. La salida estándar se muestra en la pantalla del terminal.

Utilización del desvío tanto de la entrada estándar como de la salida estándar

En el siguiente ejemplo se combina el desvío de la entrada y la salida:

$ sort < calcetines > ordenarcalcetines Se utiliza el desvío de la entrada y la salida.
$ more ordenarcalcetines Se muestra el contenido del archivo ordenarcalcetines.
cuadros                     
diseño de puntos
rombos 

En este ejemplo, el comando sort lee la entrada del archivo calcetines y graba la salida en el archivo ordenarcalcetines; de este modo, la salida estándar (a diferencia de los dos ejemplos anteriores) no se muestra en la pantalla.

Canalización de la salida y la entrada de los comandos

El shell permite conectar dos o más procesos para que la salida estándar de un proceso se utilice como la entrada estándar para otro proceso. La conexión que une los procesos es una canalización. Para canalizar la salida de un proceso en otro, separe los comandos con una pleca (|). La sintaxis general de una canalización es la siguiente:

comando1 | comando2

donde comando1 es el comando cuya salida estándar se desvía o canaliza a otro comando, y comando2 es el comando cuya entrada estándar lee la salida del comando anterior. Puede combinar dos o más comandos en una sola canalización. La salida de cada comando sucesivo se canaliza como la entrada al siguiente comando de la línea de comandos.

comando1 | comando2 | ... | comandoN

En el siguiente ejemplo, la salida del comando who se vuelve a almacenar en el archivo guardarquién. A continuación, el archivo guardarquién se utiliza como entrada para el comando wc:

wc(1)

$ who > guardarquién     Se desvía la salida del comando who al archivo guardarquién.
$ wc -l < guardarquién El archivo guardarquién se utiliza como entrada para el comando wc.
4        Ejemplo de resultado.

Con una canalización, estos dos comandos se convierten en uno:

$ who | wc -l
4

Tal como se ilustra en este ejemplo, el uso de canalizaciones acaba con la necesidad de que haya archivos intermedios temporales. En su lugar, la salida estándar del primer comando se envía directamente al segundo comando como su entrada estándar.

Utilización del comando tee con las canalizaciones

El comando tee permite desviar una copia de los datos que se transmiten entre los comandos a un archivo sin modificar el modo en que funciona la canalización. En el ejemplo siguiente se utiliza el comando who para determinar quién está conectado al sistema. En el ejemplo, que se ilustra en la figura presentada más adelante, la salida de who se canaliza a través del comando tee, que guarda una copia de la salida en el archivo guardarquién y transmite la salida no modificada al comando wc:

tee(1)
$ who | tee guardarquién | wc -l
4
$ more guardarquién
luis        consola      Oct  9 08:50
teo         tty01        Oct  9 11:57
quique      tty02        Oct  9 08:13

Figura 3-5 Entrada y salida estándar con las canalizaciones y el comando tee

Entrada y salida estándar con las canalizaciones y el comando tee

Para obtener más información:

HP-UX ofrece programas de filtro que resultan útiles en las canalizaciones. Estos programas aceptan texto como entrada, transforman el texto de alguna manera y generan texto como salida. Los comandos de filtro incluyen adjust, awk, more, cut, grep, head, more, pr, rev, sed, sort, spell y tail. Para obtener información sobre estos comandos, consulte las páginas de manual respectivas.

Versión para imprimir
Declaración de privacidad El uso de este sitio implica la aceptación de sus términos de uso
© Hewlett-Packard Development Company, L.P.