Ich möchte stdout von einem Prozess an den stdin eines anderen Prozesses senden, aber auch an die Konsole. Senden Sie beispielsweise stdout an stdout + stderr.
Zum Beispiel habe ich git edit
folgende Alias:
git status --short | cut -b4- | xargs gvim --remote
Ich möchte, dass die Liste der Dateinamen an den Bildschirm sowie an gesendet wird xargs
.
Gibt es ein tee
ähnliches Dienstprogramm, das dies erledigt? Damit ich etwas machen kann wie:
git status --short | \
cut -b4- | almost-but-not-quite-entirely-unlike-tee | \
xargs gvim --remote
quelle
/dev/stdout
werden umgeleitet. Das heißt, wenn Sietee /dev/stdout
den Effekt verwenden, wird allesxargs
zweimal gesendet , und nichts wird an das Terminal gesendet ./dev/stdout
wird nicht von einer Pipe umgeleitet, sondern behält die aktuelle Prozessstandardausgabe bei. Wenn Sie den Befehl jedoch in ein Skript einkapseln und dann die Standardausgabe dieses Skripts/dev/stdout
umleiten , wird die Umleitung ausgeführt. In einer interaktiven Konsoletee /dev/tty
undtee /dev/stdout
hat den gleichen Effekt, auch wenn Pipes verwendet werden.echo foo | tee /dev/stdout | tr f b
undecho foo | tee /dev/tty | tr f b
. Hier ist ein Hinweis für Sie: Es ist,tee
was/dev/stdout
als Dateiname interpretiert .Eine allgemeinere Lösung als
/dev/tty
:quelle
start cmd:>
ist dein$PS1
?PS1
, ja: hauke-laging.de/software/prompt (deutsch)Sie können den Befehl tee verwenden, indem Sie ihn einfach mit der Datei STDERR füttern. Beispiel:
In diesem Fall könnte Ihr Alias sein:
quelle
/proc/self/fd/2