domingo, 9 de diciembre de 2012

Tutorial flujos estándares de Unix

Esto suena un poco difícil o aburrido,por donde lo quieran ver,pero es algo muy útil y que usamos hasta en Ubuntu si hacemos copy & paste de un sitio,lo que pasa es que todos estos comandos de Unix los mantienen los sistemas tipo Unix GNU/Linux, BSD, o los Single Unix.

Así que vamos a darles un repaso a esto para que usemos mas la Terminal(Consola) de nuestro sistema tipo Unix o single Unix :D

Primero que nada vamos a ver los tres tipos de flugos que existen

stdin : Standard input (Entrada estándar)

stdout : Standard Out (Salida estándar)

stderr : Standard Error(Error estándar)

Explicación:

stdin

stdin es la entrada estándar de nuestro teclado en la mayoría de los casos,mas que nada para interactuar con nosotros y recoger información.

Si visitan este sitio a menudo se habran dado cuenta que coloco algunos scripts en Perl,este lenguaje usa stdin para recoger información desde el teclado:

<STDIN>
Así que en la shell de Unix o Bash/etc no seria mas que solamente escribir algo y estaríamos usando stdin.


stdout

Lo contrario a stdin es la salida de lo que pedimos con stdin,por ejemplo lo que sale de

cat archivo

Al escribir cat archivo estamos haciendo stdin, y al mostrarnos la salida es stdout.

stderr

Esto es los mensajes de error,que imprime la consola al hacer algo que no se puede o da error

por ejemplo escribir

sajdfsjf
Operadores

Como lo habíamos visto antes existen tuberías que redireccionan nuestros comandos, aquí vamos a adentrarnos un poco mas,ya que vamos a hablar mas a fondo de redireccionar stdin stderr y stdout.


Comando >

Redirige el stdout a un archivo,si este no existe lo crea y si existe lo borra y lo llena con el nuevo contenido.

Ejemplo:

echo "Hola" > archivo.txt 

Comando >>

Redirige stdout a un archivo,si este no existe lo crea y si existe añade la salida al final.

Ejemplo:

echo "hola" >> archivo.txt && echo "hola" >> archivo.txt


Comando 2>

Crea un archivo con stderr, si ya existe  lo borra y lo llena con el nuevo contenido.



Comando 2>>

Redirige stderr a un archivo,si este no existe lo crea y si existe añade la salida al final.



Comando &>

Crea un archivo que contiene el stderr y el stdin. Si el fichero existe,lo borra y lo llena con el nuevo contenido.

Ejemplo

cat ksksjd archivo.txt &> fichero.txt
Este nos manda los errores como la salida normal:


Otra forma de hacer esto es:

cat kdkkd archivo.txt > fichero.txt 2>&1




El comando <

Lo que hace este comando no es gran cosa,ya que como dige hace stdin el cual ya estamos haciendo al escribir

Osea que podemos hacer esto

cat < archivo.txt

Y es igual que esto

cat archivo.txt
O

ls < ~/

Es igual que

ls ~/
o

echo -e "Mi HOME\n" > mis_archivos.txt  && ls < ~/ >> mis_archivos.txt

Es igual que


echo -e "Mi HOME\n" > mis_archivos.txt  && ls ~/ >> mis_archivos.txt
Aunque hay algunas excepciones








Comando <<

Con este comando entramos al $PS2 y podemos meter todas las lineas que queramos ya que es stdin sin final de linea,osea que no borra el archivo que usemos.

Ejemplo:

cat << SALIR >> fichero2.txt
Esto es un poco mas complicado ya que al hacer esto es como si comenzaramos a escribir en un editor de texto,el cual mandara lo que escribamos a fichero2.txt y terminaremos de escribir al escribir SALIR:


Eso es todo :D

-->

2 comentarios:

  1. Y el $PS2 no lo modificas ^~^

    Por lo menos:

    echo 'PS2="-{ "' >> ~/.bashrc && source ~/.bashrc

    (^▼^) (^▼^) (^▼^)

    ResponderBorrar
    Respuestas
    1. Casi no entro al $PS2 pero no esta de mas ese pipe que mencionas :D

      Para un poco mas de personalizacion

      Borrar

Los comentarios serán revisados antes de ser publicados.