GNU/Linux >> Tutoriales Linux >  >> Linux

Ejemplo de uso de canalizaciones con nombre en Linux Bash

Uno de los mejores ejemplos de un uso práctico de una canalización con nombre...

De http://en.wikipedia.org/wiki/Netcat:

Otro comportamiento útil es usar netcat como apoderado. Tanto los puertos como los hosts se pueden redirigir. Mira este ejemplo:

nc -l 12345 | nc www.google.com 80

El puerto 12345 representa la solicitud.

Esto inicia un nc servidor en el puerto 12345 y todas las conexiones se redirigen a google.com:80 . Si un navegador web realiza una solicitud a nc , la solicitud se enviará a Google pero la respuesta no se enviará al navegador web. Eso es porque las tuberías son unidireccionales. Esto se puede solucionar con una canalización con nombre para redirigir la entrada y la salida.

mkfifo backpipe
nc -l 12345  0<backpipe | nc www.google.com 80 1>backpipe

Aquí están los comandos:

$ mkfifo named_pipe

$ echo "Hi" > named_pipe &

$ cat named_pipe

El primer comando crea la tubería.

El segundo comando escribe en la tubería (bloqueo). El & pone esto en segundo plano para que pueda continuar escribiendo comandos en el mismo shell. Saldrá cuando el FIFO se vacíe con el siguiente comando.

El último comando se lee desde la canalización.


Abre dos conchas diferentes y déjalas una al lado de la otra. En ambos, ve al /tmp/ directorio:

cd /tmp/

En el primero escribe:

mkfifo myPipe
echo "IPC_example_between_two_shells">myPipe

En el segundo, escribe:

while read line; do echo "What has been passed through the pipe is ${line}"; done<myPipe

El primer shell no le devolverá ningún aviso hasta que ejecute la segunda parte del código en el segundo shell. Es porque la lectura y escritura de fifo está bloqueando.

También puede echar un vistazo al tipo FIFO haciendo un ls -al myPipe y ver los detalles de este tipo específico de archivo.

¡El próximo paso sería embarcar el código en un script!


Linux
  1. Analizando el historial de Bash en Linux

  2. Uso de modificadores de palabras con el historial de Bash en Linux

  3. Usando el comando de suspensión de Linux en Bash Scripts

  4. Uso del comando Linux Basename en Bash Scripts

  5. ¿Redirigir toda la salida al archivo usando Bash en Linux?

Una introducción a las canalizaciones y canalizaciones con nombre en Linux

Comando de historial en Linux (Bash History)

Tutorial de comando Linux mkfifo para principiantes (con ejemplos)

Usando el comando Watch en Linux

Usando el comando Dirname de Linux en Bash Scripts

¿Qué son las tuberías en Linux? ¿Cómo funciona la redirección de tuberías?