Me gustaría enviar stdout de un proceso al stdin de otro proceso, pero también a la consola. Enviar stdout a stdout + stderr, por ejemplo.
Por ejemplo, tengo un git edit
alias para lo siguiente:
git status --short | cut -b4- | xargs gvim --remote
Me gustaría que la lista de nombres de archivo se envíe tanto a la pantalla como a xargs
.
Entonces, ¿hay una tee
utilidad similar que haga esto? Para que pueda hacer algo como:
git status --short | \
cut -b4- | almost-but-not-quite-entirely-unlike-tee | \
xargs gvim --remote
io-redirection
stdout
stdin
tee
Roger Lipscombe
fuente
fuente
/dev/stdout
se redirige. Es decir, si estuvieras usandotee /dev/stdout
el efecto sería que todo se envíaxargs
dos veces, y nada va al terminal./dev/stdout
no se redirige por una tubería, se mantendrá la salida estándar del proceso actual. Sin embargo, si encapsula el comando en un script y luego redirige la salida estándar de este script,/dev/stdout
será redirigido. En una consola interactiva,tee /dev/tty
ytee /dev/stdout
tiene el mismo efecto, incluso cuando se utilizan tuberías.echo foo | tee /dev/stdout | tr f b
yecho foo | tee /dev/tty | tr f b
. Aquí hay una pista para usted: es latee
que interpreta el/dev/stdout
nombre del archivo.Una solución más general que
/dev/tty
:fuente
start cmd:>
es tu$PS1
?PS1
, sí: hauke-laging.de/software/prompt (alemán)Puede usar el comando tee , solo aliméntelo con el archivo STDERR, como ejemplo:
entonces en ese caso tu alias quizás:
fuente
/proc/self/fd/2