Ich habe mich gefragt, ob es eine Möglichkeit gibt, die Ausgabe eines Befehls an die Standardausgabe weiterzuleiten. Druckt beispielsweise fortune
einen Glückskeks und kopiert ihn auch in die Zwischenablage:
$ 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
?Antworten:
Ihre Annahme:
funktioniert nicht, da die
fortune
Ausgabe zweimal auf Standard ausgegeben wird, sodass Sie die Ausgabe auf verdoppelnpbcopy
.In OSX (und anderen Systemunterstützungen
/dev/std{out,err,in}
) können Sie Folgendes überprüfen:2
zweimal anstelle von1
und ausgeben2
.Sie müssen andere Dateideskriptoren verwenden, Beispiel Standardfehler durch
/dev/stderr
:oder verwenden Sie
tty
, um das angeschlossene Pseudo-Terminal zu erhalten:Mit
zsh
undmultios
Optionssatz brauchen Sie überhaupt nichttee
:quelle
tee $(tty)
Oder, weißt du,tee /dev/tty
tee
schreibt immer in die Standardausgabe. Wenn Sie die Daten zusätzlich zu dem Terminal, an dem die Standardausgabe bereits ausgeführt wird, an einen Befehl senden möchten, verwenden Sie einfach die Prozessersetzung mit diesem Befehl. (Beachten Sie, dass die>
Prozessersetzung trotz des Beginns nicht die Standardausgabe umleitet, sondern vomtee
Befehl als Parameter angesehen wird.)quelle
Cuonglm hat alles gesagt.
Probiere es einfach:
tty
sollte/dev/pts/99
in einer interaktiven Sitzung (dh im Terminal) in ein tatsächliches Pseudo-Terminal (wie ) aufgelöst werden, oder nicht in Batch, at und Daemon.quelle