Je me demandais s'il y avait un moyen de diriger la sortie d'une commande et de la diriger vers la sortie standard. Ainsi, par exemple, fortune
imprime un cookie de fortune et le copie également dans le presse-papiers:
$ 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
?Réponses:
Votre hypothèse:
ne fonctionnera pas car la
fortune
sortie sera écrite deux fois en sortie standard, vous doublerez donc la sortiepbcopy
.Dans OSX (et la prise en charge d'autres systèmes
/dev/std{out,err,in}
), vous pouvez le vérifier:sortie
2
deux fois au lieu de1
et2
.Vous devez utiliser d'autres descripteurs de fichiers, exemple d'erreur standard via
/dev/stderr
:ou utilisez
tty
pour obtenir le pseudo terminal connecté:Avec
zsh
etmultios
ensemble d'options, vous n'avez pas besointee
du tout:la source
tee $(tty)
Ou, tu sais,tee /dev/tty
tee
écrit toujours sur sa sortie standard. Si vous souhaitez envoyer les données à une commande en plus du terminal où la sortie standard va déjà, utilisez simplement la substitution de processus avec cette commande. (Notez que malgré le début>
, la substitution de processus ne redirige pas la sortie standard, latee
commande la considère comme un paramètre.)la source
cuonglm a tout dit.
Essayez simplement:
tty
devrait se résoudre à un pseudo terminal réel (comme/dev/pts/99
) dans une session interactive (c'est-à-dire dans un terminal), ou pas de tty en lot, sur et démon.la source