InicioLinuxTuberías y flujo de datos en GNU/Llinux

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.


Datos archivados del Taringa! original
184puntos
354visitas
0comentarios
Actividad nueva en Posteamelo
0puntos
1visitas
0comentarios
Dar puntos:

Dejá tu comentario

0/2000

Autor del Post

d
due204🇦🇷
Usuario
Puntos0
Posts47
Ver perfil →
PosteameloArchivo Histórico de Taringa! (2004-2017). Preservando la inteligencia colectiva de la internet hispanohablante.

CONTACTO

18 de Septiembre 455, Casilla 52

Chillán, Región de Ñuble, Chile

Solo correo postal

© 2026 Posteamelo.com. No afiliado con Taringa! ni sus sucesores.

Contenido preservado con fines históricos y culturales.