GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo usar tuberías y tuberías con nombre en Linux (con ejemplos)

Uno de los operadores de shell más poderosos en Linux es la tubería. En este artículo, veremos cómo funcionan las canalizaciones normales y con nombre, cómo usarlas y en qué se diferencian entre sí.

Las tuberías son una de las capacidades de línea de comandos más valiosas de los sistemas operativos Linux y similares a Unix. Las tuberías se utilizan en una variedad de aplicaciones. Si observa cualquier artículo de la línea de comandos de Linux, notará que las canalizaciones aparecen con frecuencia.

El símbolo de la barra vertical | denota una tubería. Debido a la canalización, puede tomar la salida de un comando y enviarla a otro comando como entrada.

Como resultado, la salida de un comando se puede usar como entrada para otro, y la salida de ese comando se puede usar como entrada para el siguiente comando, y así sucesivamente.

Por lo tanto, no está limitado a un solo comando canalizado. Puedes apilarlos tantas veces como quieras.

En otras palabras, una canalización es una forma de redirección utilizada en Linux para enviar la salida de un programa a otro programa para su posterior procesamiento. Las tuberías le permiten realizar operaciones que el shell no admite de manera inmediata.

La sintaxis del comando tubería o tubería sin nombre es | carácter entre dos comandos cualquiera:

command1 | command2 | ... | commandN

Cómo funciona una tubería en Linux

Para ver cómo funciona la tubería, veamos los ejemplos a continuación.

Tenemos un directorio lleno de muchos tipos diferentes de archivos. Entonces queremos saber cuántos archivos de un tipo en particular hay en este directorio.

Entonces podemos obtener una lista de archivos fácilmente usando ls comando:

ls -l

Usaremos grep para separar los tipos de archivos que estamos buscando. Por ejemplo, buscamos archivos con la palabra txt en su nombre o como extensión de archivo.

Usaremos el carácter especial de shell | para dirigir ls ‘salida a grep .

ls | grep txt

Como puede ver en la imagen de arriba, la salida de ls el comando no se envió a la ventana del terminal.

Por lo tanto, el resultado no se muestra en la pantalla. En su lugar, se redirige a la entrada de grep dominio. La salida que vemos arriba proviene de grep , el último comando de esta cadena.

Ahora, comencemos a extender nuestra cadena. Podemos contar archivos txt agregando el wc mando a la cadena. Usaremos el -l opción (número de líneas) con wc .

ls | grep txt | wc -l

En el ejemplo anterior, grep ya no es el último comando de la cadena, por lo que no vemos su salida. En cambio, la salida de grep se alimenta en el wc comando.

El resultado que vemos en la ventana del terminal proviene de wc . Informa dos archivos, txt en el directorio.

¿Qué es una canalización con nombre en Linux?

Como su propio nombre indica, se trata de pipas con nombres. Una de las diferencias clave entre las canalizaciones normales y las canalizaciones con nombre es que las canalizaciones con nombre tienen presencia en el sistema de archivos . Es decir, se muestran como archivos.

La canalización con nombre en Linux es un método para pasar información de un proceso informático a otro utilizando una canalización a la que se le asigna un nombre específico. Las canalizaciones con nombre también se conocen como FIFO, que significa Primero en entrar, primero en salir .

Puede crear una canalización con nombre utilizando mkfifo dominio. Por ejemplo:

mkfifo mypipe

Puede saber si un archivo es una canalización con nombre por p bit en la sección de permisos de archivos.

ls -l mypipe
prw-r--r--  1 root     root         0 Mar 20 12:58 mypipe

Las canalizaciones con nombre son archivos en el propio sistema de archivos. A diferencia de una canalización estándar, se accede a una canalización con nombre como parte del sistema de archivos, como cualquier otro tipo de archivo.

El contenido de la canalización con nombre reside en la memoria en lugar de escribirse en el disco. Por lo tanto, se pasa solo cuando se han abierto ambos extremos de la tubería. Y puede escribir en una canalización varias veces antes de que se abra en el otro extremo y se lea.

El uso de canalizaciones con nombre le permite establecer un proceso en el que un proceso escribe en una canalización y otro lee desde una canalización sin preocuparse mucho por intentar cronometrar u orquestar cuidadosamente su interacción.

Para ver cómo funcionan las canalizaciones con nombre, veamos los ejemplos a continuación. Primero creemos nuestra canalización con nombre:

mkfifo mypipe

Ahora consumamos mensajes con esta canalización.

tail -f mypipe

Abra otra ventana de terminal, escriba un mensaje a esta tubería:

echo "hi" >> mypipe

Ahora, en la primera ventana, puede ver el "hola" impreso:

tail -f pipe1
hi

Debido a que es una canalización y el mensaje se ha consumido, si verificamos el tamaño del archivo, puede ver que todavía es 0:

ls -l mypipe
prw-r--r-- 1 root root 0 Mar 20 14:11 mypipe

Dado que una tubería con nombre es solo un archivo de Linux, podemos usar el comando rm para eliminar uno. Por lo tanto, para eliminar la tubería que creamos en los ejemplos anteriores, ejecutaríamos:

rm mypipe

Cuándo usar canalizaciones regulares o con nombre

El uso de una canalización normal en lugar de una canalización con nombre en Linux depende de las características que estemos buscando. Algunos pueden ser la persistencia, la comunicación bidireccional, tener un nombre de archivo, crear un filtro y restringir los permisos de acceso.

Por ejemplo, si queremos filtrar la salida de un comando varias veces, usar una canalización anónima parece la opción más adecuada.

Por otro lado, si necesitamos un nombre de archivo y no queremos almacenar datos en el disco, lo que estamos buscando es una canalización con nombre.

En conclusión, la próxima vez que trabaje con comandos en la terminal de Linux y se encuentre moviendo datos entre comandos, con suerte, una canalización hará que el proceso sea rápido y fácil.

Conclusión

Este artículo le mostró la versatilidad de las tuberías cuando se usan en los comandos de Linux. Sin embargo, es relativamente simple, pero puede resolver una amplia gama de consultas complicadas.

Además, esta herramienta de línea de comandos es simple y funciona con plataformas UNIX y Linux.

Para obtener más información sobre pipe comando en Linux, consulte su página de manual.


Linux
  1. Cómo usar el comando Hexdump de Linux con ejemplos prácticos

  2. Cómo usar el comando Sed en Linux con ejemplos

  3. Comando SCP en Linux:cómo usarlo, con ejemplos

  4. Cómo usar el comando Rmmod en Linux con ejemplos

  5. Cómo usar el comando Dig en Linux con ejemplos

Comando alias de Linux:cómo usarlo con ejemplos

Cómo usar el comando gunzip de Linux con ejemplos

Cómo usar el comando rm de Linux con ejemplos

Cómo instalar y usar el comando Ack en Linux con ejemplos

Cómo instalar y usar el comando fd en Linux

Cómo usar el comando de suspensión en Linux:explicado con ejemplos