GNU/Linux >> Tutoriales Linux >  >> Linux

¿Cómo enviar Stdout a múltiples comandos?

Hay algunos comandos que filtran o actúan sobre la entrada, y luego la pasan como salida, creo que generalmente a stdout – pero algunos comandos solo tomarán el stdin y hacer lo que sea que hagan con él, y no generar nada.

Estoy más familiarizado con OS X, por lo que hay dos que me vienen a la mente de inmediato:pbcopy y pbpaste – que son medios para acceder al portapapeles del sistema.

De todos modos, sé que si quiero tomar stdout y escupir la salida para ir a ambos stdout y un archivo entonces puedo usar el tee dominio. Y sé un poco sobre xargs , pero no creo que sea eso lo que estoy buscando.

Quiero saber cómo puedo dividir stdout para ir entre dos (o más) comandos. Por ejemplo:

cat file.txt | stdout-split -c1 pbcopy -c2 grep -i errors

Probablemente haya un mejor ejemplo que ese, pero realmente estoy interesado en saber cómo puedo enviar stdout a un comando que no lo transmite y manteniendo stdout de ser "silenciado":no estoy preguntando cómo cat un archivo y grep parte de él y cópielo en el portapapeles; los comandos específicos no son tan importantes.

Además, no estoy preguntando cómo enviar esto a un archivo y stdout – esta puede ser una pregunta "duplicada" (lo siento), pero busqué un poco y solo pude encontrar preguntas similares que preguntaban sobre cómo dividir entre stdout y un archivo, y las respuestas a esas preguntas parecían ser tee , que no creo que funcione para mí.

Finalmente, puede preguntar "¿por qué no hacer que pbcopy sea lo último en la cadena de tuberías?" y mi respuesta es 1) ¿qué pasa si quiero usarlo y aún veo el resultado en la consola? 2) ¿Qué pasa si quiero usar dos comandos que no generan stdout? después de que procesan la entrada?

Ah, y una cosa más:me doy cuenta de que podría usar tee y una canalización con nombre (mkfifo ) pero esperaba encontrar una manera de hacerlo en línea, de manera concisa, sin una configuración previa 🙂

Respuesta aceptada:

Puedes usar tee y proceso de sustitución para esto:

cat file.txt | tee >(pbcopy) | grep errors

Esto enviará toda la salida de cat file.txt a pbcopy , y solo obtendrás el resultado de grep en tu consola.

Relacionado:Ubuntu – XFCE – ¿Enviar ventana a otro monitor al presionar una tecla?

Puede poner múltiples procesos en el tee parte:

cat file.txt | tee >(pbcopy) >(do_stuff) >(do_more_stuff) | grep errors

Linux
  1. Envía comandos a múltiples sesiones SSH con Terminator

  2. Cómo comprimir varios archivos en Linux

  3. ¿Cómo ejecuto múltiples comandos en segundo plano en bash en una sola línea?

  4. ¿Entrada estándar múltiple? ¿Cómo?

  5. ¿Cómo ejecuto múltiples comandos cuando uso find?

Cómo usar comandos personalizados en LibreOffice

Cómo configurar un clúster de múltiples nodos Proxmox VE 4

Cómo controlar Vagrant Box usando comandos de Vagrant

Cómo ejecutar múltiples comandos de Linux en un solo comando

Cómo ejecutar comandos Sudo sin contraseña

Cómo ejecutar varios comandos de Linux a la vez en la terminal de Linux