Hay algunos comandos que filtran o actúan en la entrada, y luego la pasan como salida, creo que generalmente stdout
, pero algunos comandos simplemente tomarán stdin
y harán lo que hagan con ella, y no generarán nada.
Estoy más familiarizado con OS X, por lo que hay dos que se me ocurren 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 a un archivo, entonces puedo usar el tee
comando. Y sé un poco sobre eso xargs
, pero no creo que eso sea 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 retransmite y mientras evito que stdout
sea "silenciado": no estoy preguntando cómo hacer 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 otras similares que preguntaban cómo dividir entre stdout y un archivo - y las respuestas a esas preguntas parecían ser tee
, lo cual 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 así ver el resultado en la consola? 2) ¿Qué pasa si quiero usar dos comandos que no salen stdout
después de que procesan la entrada?
Ah, y una cosa más: me doy cuenta de que podría usar tee
una tubería con nombre ( mkfifo
), pero esperaba que esto se pudiera hacer en línea, de manera concisa, sin una configuración previa :)