Angenommen, Sie haben einen Terminalemulator (T1) mit einer PID von 6350 geöffnet.
Geben Sie an einem anderen Terminal diesen Befehl ein (C1):
echo "lsn" > /proc/6350/fd/0
Dies schreibt ls
und die neue Zeile in T1, führt sie aber nicht aus. Warum?
Ich habe auch versucht, cat|bash
zu verwenden mit echo "lsn" > /proc/catid/fd/0
aber es wird immer noch nicht ausgeführt.
Wie kann ich den Befehl in einem anderen Terminal echoen und den Befehl ausführen lassen?
mögliche Antwort :
$ mkfifo toto;
$ bash < toto;
$ echo "ls" > toto;
In diesem Fall können Sie nicht mehr direkt in das Terminal schreiben (alles wird so angezeigt, wie der Befehl (C1) es in diesem Terminal angezeigt hat.
Akzeptierte Antwort:
Es gibt ein Befehlszeilenprogramm namens ttyecho
das einen Befehl an ein anderes Terminal (tty/pts) senden und den Befehl ausführen lassen kann.
sudo ttyecho -n /dev/pts/5 ls
Siehe:Dienstprogramm zum Senden von Befehlen oder Daten an andere Terminals (tty/pts)
Siehe auch:ttyecho
Quellcode auf github.
Ein weiterer interessanter tty-Befehl ist selector
, ein interaktiver Musterabgleicher in Echtzeit in der Konsole, der den tty-Eingabepuffer aktualisiert.
# selector examples
selector -v -x @ <(find . -maxdepth 2 -type d | awk '{print $0"@cd "$0}')
selector -v -x @ <(grep -E -o 'http[^ ]+' fileWithURLS)
Siehe:Selektor – DYNAMISCHE SUCHE IN DER KONSOLE