
Ich spiele nur auf meinem Terminal (Gnome-Terminal) herum. Ich habe mich gefragt, ob es eine Möglichkeit gibt, die Ausgabe eines Terminals an ein anderes zu senden, ohne eine neue Datei oder Pipe erstellen zu müssen.
zum Beispiel: Auf dem ersten Terminal führe ich aus ls
und möchte, dass die Ausgabe auf dem zweiten Terminal angezeigt wird (mit oder ohne Verwendung eines Befehls auf dem zweiten)
Antwort1
Wenn beide Terminals demselben Benutzer gehören, können Sie Ihre Ausgabe an das virtuelle Gerät senden, das als TTY des jeweiligen Terminals verwendet wird.
Sie können also die Ausgabe von verwenden w
, die die TTY-Informationen enthält, und direkt auf dieses Gerät schreiben.
ls > /dev/pts/7
(Wenn das von erwähnte Gerät w
pts/7 war)
Eine andere Möglichkeit besteht darin, die Nummer eines Prozesses zu verwenden, der mit diesem Gerät verbunden ist. Senden Sie Ihre Ausgabe an /proc/<process number>/fd/1
.
ls > /proc/5555/fd/1
Angenommen, die Prozessnummer, die Sie gefunden haben und die in diesem Terminal ausgeführt wird, ist 5555.
Beachten Sie, dass dieser direkte Schreibvorgang nur zulässig ist, wennDer Benutzer, der versucht zu schreiben, ist derselbe Benutzer, dem das andere Terminal gehört..
Antwort2
Sie können write
den Befehl verwenden.
Wie @MelBurslan kommentierte, führen Sie bei deaktivierter Schreibberechtigung zuerst Folgendes aus:
$ mesg y
Ausman mesg
OPTIONEN
y Erlauben Sie Schreibzugriff auf Ihr Terminal.
Verwendung von „write“:
$ write username tty
zB ls
Ausgabe an anderes Terminal senden.
$ w
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
user :0 :0 08:15 ?xdm? 7:37 0.25s init --user
user pts/0 :0 08:19 1.00s 0.09s 0.01s w
user pts/12 :0 08:50 54.00s 0.03s 0.03s bash
$ ls | write username pts/12
Antwort3
Ich habe eine ähnliche Methode gefunden.
Am ersten Terminal:
$ tty
/dev/pts/0
$ <no need to run any command here, just see the output>
Am zweiten Terminal:
$ ls > /dev/pts/0
Jetzt erhalten Sie die Ausgabe auf dem ersten Terminal
Antwort4
Sie können auf das TTY des Terminals schreiben, zum Beispiel:
im Terminal 1:
$ tty
ttys000
im Terminal 2:
$ tty
ttys029
$ exec &> >(tee >(cat >&/dev/ttys000))
ls
Die Ausgabe wird während der Eingabe in beiden Terminals in Echtzeit angezeigt.
Funktioniert unter Linux und macOS. Der macOS TTY-Pfad lautet /dev/{number}
unter Linux/dev/pts/{number}