Me preguntaba si hay una manera de canalizar la salida de un comando y dirigirlo al stdout. Entonces, por ejemplo, fortuneimprime una galleta de la fortuna y también la copia en el portapapeles:
$ fortune | tee >(?stdout?) | pbcopy
"...Unix, MS-DOS, and Windows NT (also known as the Good, the Bad, and
the Ugly)."
(By Matt Welsh)

fortune | tee $(tty) | pbcopy?Respuestas:
Su suposición:
no funcionará porque la
fortunesalida se escribirá en el estándar dos veces, por lo que duplicará la salida enpbcopy.En OSX (y otros sistemas de soporte
/dev/std{out,err,in}), puede verificarlo:salida
2dos veces en lugar de1y2.Debe usar otros descriptores de archivo, ejemplo error estándar a través de
/dev/stderr:o use
ttypara obtener el pseudo terminal conectado:Con
zshymultiosconjunto de opciones, que no es necesarioteeen absoluto:fuente
tee $(tty)O, ya sabes,tee /dev/ttyteesiempre escribe en su salida estándar. Si desea enviar los datos a un comando además del terminal donde ya está yendo la salida estándar, simplemente use la sustitución del proceso con ese comando. (Tenga en cuenta que a pesar de comenzar>, la sustitución del proceso no redirige la salida estándar, elteecomando lo ve como un parámetro).fuente
Cuonglm lo dijo todo.
Sólo inténtalo:
ttydebe resolverse a pseudo terminal real (como/dev/pts/99) en sesión interactiva (es decir, en terminal), o no a tty en batch, at y daemon.fuente