Hola gente de T!

Bueno hoy les dejo este post simple dedicado a las tuberías, pipes y re-direcciones de datos en GMU/Linux.

Primero el punto y coma ;
Su sintaxis seria: comado1 ; comando2
El punto y coma lo que hace es ejecutar un comando tras otro sin importar si el comando anterior se ejecuto correctamente o no.
Un ejemplo seria ejecutar un comando que no existe (lalalala) y un ls
due204[~]$ lalalala ; ls
bash: lalalala: no se encontró la orden
Desktop Documentos
Imagenes Musica
Varios Videos
CAt.txt Florencia Peña.mp4
En este ejemplo el primer comando dio un error y paso al segundo.
due204[~]$ cd Imagenes ; ls
Imagen1.jpg Imagen2.jpg
imagen3.jpg Imagen4.jpg
XXX.gif
Y en este ultimo ejemplo el primer comando se ejecuto correctamente y paso al segundo.
Bueno ahora que pasaría si nosotros necesitamos que cuando un comando nos de un error el flujo de datos se detenga???
Aquí ya entra el doble ampersand &&
Trabaja exactamente igual al punto y coma con la diferencia que si un comando da un error se detiene y no ejecuta el siguiente.
El ejemplo seria el mismo que el aterior
due204[~]$ lalalala && ls
bash: lalalala: no se encontró la orden
Como ven al dar un error lalalala no ejecuto el ls.
due204[~]$ cd Imagenes && ls
Imagen1.jpg Imagen2.jpg
imagen3.jpg Imagen4.jpg
XXX.gif
Y en este ultimo ejemplo el primer comando se ejecuto correctamente y paso al segundo.
Otro de los mas usados de todos, el pipe |
El concepto de tubería o pipe en GNU/Linux consiste en unir dos comandos en la terminal, con lo cual podemos tomar la salida del primer comando y utilizarlo como entrada en el segundo, dando lugar a que la linea de comandos sea todavía más poderosa, gracias a las innumerables combinaciones que se podrían hacer.
La sintaxis del proceso es sencilla: comando1 | comando2 | comando3...
Un ejemplo seria averiguar rápidamente la id de un proceso con un ps -A y un grep.
due204[~]$ ps -A | grep "mplayer"
2381 pts/0 00:01:05 mplayer
ps -A nos mostrara todos los procesos que se están ejecutando.
grep "mplayer" me filtra la linea que contenga el nombre clave, en este caso mplayer.
La salida del primer comando pasa a ser la entrada del segundo.
Otro muy utilizado (Yo lo utilizo mucho en script) es el doble pipe ||
Trabaja al revés que el doble ampersand &&
Si el primer comando se ejecuto bien no ejecuta el siguiente, su sintaxis seria así: comando1 || comando2
Y un ejemplo seria este:
due204[~]$ lalalala || echo "Te equivocaste de comando, ¡boludo!"
bash: lalalala: no se encontró la orden
Te equivocaste de comando, ¡boludo!
Como ven a no existir lalalala da un error y ejecuta el siguiente comando.
due204[~]$ ls || echo "Te equivocaste de comando, ¡boludo!"
Desktop Documentos
Imagenes Musica
Varios Videos
CAt.txt Florencia Peña.mp4
Ahora en este ejemplo al ejecutarse correctamente el primer comando no ejecuta el segundo.
Súper fácil no?
Bien ahora sigamos con direccionamiento de datos < >. Hablando a lo criollo seria dirigir los datos de un lugar a otro.
En linux se puede cambiar la entrada(stdin) / salida(stdout) estandar o la salida de error(stderr) en cualquier orden.
Estos son los que conozco:
< fichero Toma stdin del fichero
>fichero Envía stdout al fichero
>>fichero Envía stdoutal final del fichero (añade)
2>fichero Envía el fd 2 (stderr) al fichero
2>&1 Envía stderr a donde vaya stdout
&>fichero stdout y stderr al fichero
<<cadena stdin de aquí en adelante hasta encontrar "cadena"
Ahora lo que es cada cosa:
El símbolo < sirve para redireccionar la entrada estándar. Si ejecutamos esto:
less < archivo
El programa leerá del archivo como si fuesen pulsaciones de teclado.
El símbolo > sirve para redireccionar la salida estandar. Si ejecutamos esto:
echo "Hola Mundo" > archivo
Ese texto, en lugar de salir por pantalla, se escribirá en el archivo.
El símbolo >> sirve para "cortar" una palabra, linea o documento y mandarlo a otro fichero.
archivo1 >> archivo2
El contenido de archivo1 será cortado y pegado en archivo2 quedando archivo1 vacio.
También agrega al final del archivo
echo "Hola Mundo" >> archivo
Agregara "Hola Mundo" al final del fichero (Muy útil para hacer logs)
El símbolo 2> Redirecciona el error estandar. Funciona igual que >.
El símbolo << manda un documento a una linea de comando por ejemplo.
Bueno gente eso es todo lo que me acuerdo en este momento, si hay algo
el lo que me equivoque por favor díganme así lo corrijo y si quieren
agregar algo mas no hay problema.
Saludos y hasta la próxima.


