GNU/Linux >> Tutoriales Linux >  >> Linux

¿Cómo hacer una tubería bidireccional entre dos programas?

Todo el mundo sabe cómo hacer una tubería unidireccional entre dos programas (bind stdout del primero y stdin del segundo):first | second .

Pero, ¿cómo hacer una tubería bidireccional, es decir, enlace cruzado stdin y stdout de dos programas? ¿Hay una manera fácil de hacerlo en un caparazón?

Respuesta aceptada:

Si las canalizaciones en su sistema son bidireccionales (como lo son en Solaris 11 y algunos BSD al menos, pero no en Linux):

cmd1 <&1 | cmd2 >&0

Sin embargo, tenga cuidado con los puntos muertos.

También tenga en cuenta que algunas versiones de ksh93 en algunos sistemas implementan canalizaciones (| ) usando un par de sockets . los pares de sockets son bidireccionales, pero ksh93 apaga explícitamente la dirección inversa, por lo que el comando anterior no funcionaría con esos ksh93 incluso en sistemas donde las tuberías (creadas por pipe(2) llamada del sistema) son bidireccionales.


Linux
  1. ¿Cómo seleccionar la primera aparición entre dos patrones, incluyéndolos?

  2. ¿Cómo extraer registros entre dos marcas de tiempo?

  3. ¿Cómo sincronizar archivos entre dos controles remotos?

  4. Linux:¿cómo eliminar archivos creados entre dos veces?

  5. ¿Cómo obtengo la diferencia entre dos fechas en bash?

Cómo encontrar la diferencia entre dos directorios usando las herramientas Diff y Meld

Cómo hacer un archivo ejecutable en Linux

Cómo Rsync archivos entre dos servidores Linux automáticamente

Cómo conectar y compartir datos entre dos sistemas Linux

¿Cómo hacer que Ubuntu admita el desplazamiento del panel táctil?

Cómo convertir a un usuario en administrador en Debian 11