Incluso si es un usuario moderado de la línea de comandos de Linux, debe conocer las canalizaciones, una característica fundamental de la línea de comandos que permite que los procesos se comuniquen. Luego está el concepto de canalizaciones con nombre (sí, canalizaciones con nombres, para que puedas hacer más con las canalizaciones). El mkfifo El comando le permite crear dichos conductos con nombre.
En este tutorial, discutiremos los conceptos básicos de mkfifo utilizando algunos ejemplos fáciles de entender. Pero antes de hacerlo, vale la pena mencionar que todos los ejemplos aquí se han probado en Ubuntu 16.04 LTS.
Comando Linux mkfifo
El comando mkfifo básicamente le permite crear FIFO (también conocido como canalizaciones con nombre). La siguiente es la sintaxis del comando:
mkfifo [OPTION]... NAME...
Y así es como lo explica la página de manual de la herramienta:
Create named pipes (FIFOs) with the given NAMEs.
Los siguientes son algunos ejemplos de preguntas y respuestas que le darán una buena idea de cómo funciona mkfifo.
P1. ¿Qué son exactamente las canalizaciones con nombre?
Para comprender esto, primero debe conocer el concepto de tuberías básicas. Habría visto comandos que contienen una barra vertical (|) en ellos. Esta barra se llama tubería. Lo que hace es crear un canal de comunicación entre los dos procesos (cuando se ejecuta el comando completo).
Por ejemplo:
ls | grep .txt
El comando mencionado anteriormente consta de dos programas: ls y grep. Ambos programas están separados por una tubería (|). Entonces, lo que hace pipe aquí es crear un canal de comunicación entre estos programas:cuando se ejecuta el comando mencionado anteriormente, la salida de ls se alimenta como entrada a grep. Entonces, finalmente, la salida que se muestra en la terminal consta solo de aquellas entradas que tienen la cadena '.txt' en ellas.
Eso fue un repaso rápido de las tuberías normales. Ahora viene el concepto de canalizaciones con nombre. Como su propio nombre indica, se trata de pipas con nombres. Puede crear una tubería con nombre usando el comando mkfifo. Por ejemplo:
mkfifo pipe2
Entonces 'pipe2' ahora es una tubería con nombre. Ahora viene la pregunta de cómo las canalizaciones con nombre son más útiles. Bueno, considere el caso en el que tiene un proceso que se ejecuta en una terminal y produce una salida, y lo que quiere es canalizar esa salida a una terminal diferente. Así que aquí, una canalización con nombre podría ser de gran ayuda.
Por ejemplo, suponga que ls es el proceso que se ejecuta en la primera terminal y desea ver su salida en una terminal diferente. Esto es lo que puede hacer:
ls > pipe2
y esto es lo que puede hacer en la segunda terminal:
cat < pipe2
P2. ¿Cómo identificar tuberías con nombre?
Se puede acceder a las canalizaciones con nombre normalmente como archivos. Eso significa que puede usar el comando ls para acceder a ellos. Si ve los permisos de acceso para una canalización con nombre, verá una 'p' al principio. Esto significa que el archivo en cuestión es una canalización con nombre. He aquí un ejemplo:
Q3. ¿Cómo establecer permisos de acceso personalizados?
Como puede ver en las preguntas y respuestas anteriores, los permisos de acceso predeterminados para canalizaciones con nombre son 'rw', 'rw' y 'r' (para usuario, grupo y otros, respectivamente). Sin embargo, si lo desea, también puede establecer permisos personalizados, algo que puede hacer con la opción -m.
Por ejemplo:
mkfifo pipe3 -m700
La siguiente captura de pantalla confirma que se establecieron permisos personalizados:
Para saber más sobre mkfifo, puede utilizar --help y --versión opciones.
Conclusión
Entonces, dependiendo del tipo de trabajo que realice en la línea de comandos de Linux, el comando mkfifo puede resultarle muy útil. Una vez que haya terminado con el uso básico que hemos discutido aquí, puede obtener más información sobre la herramienta dirigiéndose a su página de manual.