.

Breaking News
recent

-

Terminal: Standard Streams

Terminal: Standard Streams

Buenas gente, les traigo una data interesante para usar la Terminal, espero que les sirva.



Terminal: Standard Streams:

Standard Stream está compuesto por varios canales de comunicación entre el usuario y la terminal. Estos "canales" Input/Output (Entrada/Salida) muestran o capturan información cuando un comando es ejecutado.


terminalLas 3 conexiones I/O son: stdin Standard input, stdout Standard output, stderr Standard error.


stdin: Standard input

La entrada estándar es la forma en la que capturamos información de un comando, ya sea por medio de pipes, redirección, teclado, etc. Lo identificamos con el descriptor de archivo 0.

El descriptor es un indicador para acceder -en este caso- a los canales de entrada y salida. Estos son valores int, por lo general 0, 1 y 2.



Un ejemplo de stdin seria:

sort < listado

Toma toda la información que se encuentra en listado -en este caso los números escritos de manera aleatoria-, y al redireccionar el archivo al comando ls, éste ordena alfabéticamente la lista numérica. En este ejemplo los indicadores están implícitos.


stdout: Standard output

La salida estándar, como su nombre lo indica, muestra la salida de un comando por medio de la consola. Si escribimos ls toda la información que nos muestra en pantalla es la salida estándar. Es representada por el descriptor 1.

Ahora intentaré ejemplificar stdin y stdout con un script escrito en bash, simplemente porque me encanta bash hahaha.

test.sh



#!/bin/bash

if [ -t 0 ]; then
    echo "Estas usando stdout"
elif [ -t 1 ]; then
    echo "Estas usando stdin"
else 
    echo "Error brutal"
fi

Ahora una captura de pantalla que demuestra cómo utilizar el script. Al redireccionar o usar un pipe con el script usa test -t para saber si sólo se ejecuta el script stdout, y si no obviamente es stdin.

bash test.sh
ls | bash test.sh
bash test.sh < /etc/passwd

standard
Recuerden modificar el comando y practicar así aprenden.

stderr: Standard error

El Error estándar es la manera en la que los programas muestran errores o diagnósticos. Es representado por el descriptor 2.

Para entender el concepto, ésta es la situación: cuando queremos guardar un error de un comando lo primero en que pensamos es redireccionar la salida a un texto plano.


ls > info.txt

Esto funcionaría, la información del comando se almacenará en un archivo de texto plano. Pero al momento de guardar el error, no lo almacena, si no que lo muestra en pantalla y el archivo de texto plano está vacio.
En cambio si usamos 2> para indicar que guarde stderr en el archivo:


ls foo 2> info.txt

Ahora sí guardara la información del error en el archivo de texto.

La mayoría de las Shell permiten almacenar stderr y stdout en un solo comando comando con &> donde Foo es un directorio inexistente



ls Descargas Foo &a;> info.txt

Este fichero contendrá la información del error al ejecutar ls en Foo y listará los directorios dentro de Descargas.
Y para finalizar ¿Que significa ese famoso 2>&a;1?
Sile, redirige stderr a stdout. Ese &a; en medio de > y 1 significa que redireccionará a stdout. Si no estuviera ahí seria algo como… "redirecciona el error hacia el archivo 1″.

Y con esto es posible redireccionar:

  • stdout a un archivo
  • stderr a un archivo
  • stdout a stderr
  • stderr a stdout
  • stderr y stdout a un archivo
  • entre otros




Si les gustó este aporte:

Streams

Y como siere:

bash

Terminal: Standard Streams

Todo comentario desubicado, irrespetuoso y/o fuera de lugar será borrado y en caso de que sea necesario el usuario será bloqueado.

No hay comentarios:

Publicar un comentario en la entrada

-

Con la tecnología de Blogger.