Je voudrais envoyer stdout d'un processus à la stdin d'un autre processus, mais aussi à la console. Envoi de stdout à stdout + stderr, par exemple.
Par exemple, j'ai un git edit
alias pour les éléments suivants:
git status --short | cut -b4- | xargs gvim --remote
J'aimerais que la liste des noms de fichiers soit également envoyée à l'écran xargs
.
Alors, existe-t-il un tee
utilitaire similaire à cela? Pour que je puisse faire quelque chose comme:
git status --short | \
cut -b4- | almost-but-not-quite-entirely-unlike-tee | \
xargs gvim --remote
io-redirection
stdout
stdin
tee
Roger Lipscombe
la source
la source
/dev/stdout
est redirigé. Autrement dit, si vous utilisieztee /dev/stdout
l'effet serait que tout est envoyé àxargs
deux fois, et rien ne va au terminal./dev/stdout
n'est pas redirigé par un tube, il restera la sortie standard du processus en cours. Cependant, si vous encapsulez la commande dans un script, puis redirigez la sortie standard de ce script, vous/dev/stdout
serez redirigé. Dans une console interactive,tee /dev/tty
ettee /dev/stdout
a le même effet, même lorsque vous utilisez des tuyaux.echo foo | tee /dev/stdout | tr f b
etecho foo | tee /dev/tty | tr f b
. Voici un indice pour vous: iltee
interprète le/dev/stdout
nom de fichier as.Une solution plus générale que
/dev/tty
:la source
start cmd:>
est votre$PS1
?PS1
, oui: hauke-laging.de/software/prompt (allemand)Vous pouvez utiliser la commande tee , il suffit de l'alimenter avec le fichier STDERR, par exemple:
dans ce cas, votre alias peut être:
la source
/proc/self/fd/2