Supponiamo di avere un emulatore di terminale (T1) aperto con un PID di 6350.
Da un altro terminale, digita questo comando (C1):
echo "lsn" > /proc/6350/fd/0
Questo scrive ls
e la nuova riga in T1 ma non la esegue. Perché?
Ho anche provato a usare cat|bash
con echo "lsn" > /proc/catid/fd/0
ma non viene ancora eseguito.
Come posso eseguire l'eco del comando in un altro terminale e far eseguire il comando?
possibile risposta :
$ mkfifo toto;
$ bash < toto;
$ echo "ls" > toto;
In questo caso non puoi più scrivere direttamente nel terminale (tutto viene visualizzato allo stesso modo in cui il comando (C1) mostrava cosa in questo terminale.
Risposta accettata:
C'è un'utilità da riga di comando chiamata ttyecho
che può inviare un comando a un altro terminale (tty/pts) e far eseguire il comando.
sudo ttyecho -n /dev/pts/5 ls
Vedi:Utilità per inviare comandi o dati ad altri terminali (tty/pts)
Vedi anche:ttyecho
codice sorgente su github.
Un altro comando tty interessante è selector
, un pattern matcher interattivo in tempo reale nella console che aggiorna il buffer di input tty.
# selector examples
selector -v -x @ <(find . -maxdepth 2 -type d | awk '{print $0"@cd "$0}')
selector -v -x @ <(grep -E -o 'http[^ ]+' fileWithURLS)
Vedi:selettore – RICERCA DINAMICA IN CONSOLE