tuberias salida pipes guardar filtros ejemplos comandos comando basicos archivo bash pipe tee

bash - pipes - Salida de tubería a dos comandos diferentes



tuberias en linux ejemplos (3)

Debería estar bien si usas tanto tee como mkfifo .

mkfifo pipe cat pipe | (command 1) & echo ''test'' | tee pipe | (command 2)

Posible duplicado:
osx / linux: ¿tuberías en dos procesos?

¿Hay una manera de canalizar la salida de un comando en la entrada de otros dos comandos, ejecutándolos simultáneamente?

Algo como esto:

$ echo ''test'' |(cat) |(cat) test test

La razón por la que quiero hacer esto es que tengo un programa que recibe una señal de radio FM desde un dispositivo USB SDR y emite el audio como datos PCM sin procesar (como un archivo .wav pero sin encabezado). Dado que la señal no es La música, pero los datos del localizador POCSAG, necesito canalizarla a un programa decodificador para recuperar el texto del localizador. Sin embargo, también quiero escuchar la señal para saber si está llegando algún dato o no. (De lo contrario, no puedo saber si el decodificador está roto o si simplemente no hay datos que se están transmitiendo). Así que, además de canalizar los datos al decodificador de buscapersonas, también debo canalizar los mismos datos al comando de play .

Actualmente, solo sé cómo hacer uno, ya sea canalizarlo al decodificador y leer los datos en silencio, o canalizarlo para play y escucharlo sin ver ningún texto decodificado.

¿Cómo puedo canalizar los mismos datos a ambos comandos, para poder leer el texto y escuchar el audio?

No puedo usar tee ya que solo escribe los datos duplicados en un archivo, pero necesito procesar los datos en tiempo real.


Hay una manera de hacerlo a través de una tubería sin nombre (probado en Linux):

(( echo "hello" | tee /dev/fd/5 | sed ''s/^/1st occure: /'' >/dev/fd/4 ) 5>&1 | sed ''s/^/2nd command: /'' ) 4>&1

dar:

2nd command: hello 1st occure: hello

Esta muestra le permitirá descargar somefile.ext , guardarlos, calcular su md5sum y calcular su sha1sum:

(( wget -O - http://somewhere.someland/somepath/somefile.ext | tee /dev/fd/5 | md5sum >/dev/fd/4 ) 5>&1 | tee somefile.ext | sha1sum ) 4>&1


Tal vez echar un vistazo a tee orden de tee . Lo que hace es simplemente imprimir su entrada en un archivo, pero también imprime su entrada en la salida estándar. Así que algo como:

echo "Hello" | tee try.txt | <some_command>

Creará un archivo con el contenido "Hola" Y pasará hola como argumento a <some_command> .