Předpokládejme, že máte otevřený emulátor terminálu (T1) s PID 6350.
Z jiného terminálu zadejte tento příkaz (C1):
echo "lsn" > /proc/6350/fd/0
To zapíše ls
a nový řádek v T1, ale neprovede jej. Proč?
Zkoušel jsem také použít cat|bash
pomocí echo "lsn" > /proc/catid/fd/0
ale stále není provedena.
Jak mohu odeslat příkaz do jiného terminálu a nechat příkaz provést?
možná odpověď:
$ mkfifo toto;
$ bash < toto;
$ echo "ls" > toto;
V tomto případě již nemůžete zapisovat přímo do terminálu (vše se zobrazuje stejně, jako příkaz (C1) zobrazoval věc v tomto terminálu.
Přijatá odpověď:
Existuje nástroj příkazového řádku s názvem ttyecho
který může poslat příkaz na jiný terminál (tty/pts) a nechat příkaz provést.
sudo ttyecho -n /dev/pts/5 ls
Viz:Nástroj pro odesílání příkazů nebo dat do jiných terminálů (tty/pts)
Viz také:ttyecho
zdrojový kód na githubu.
Dalším zajímavým příkazem tty je selector
, interaktivní nástroj pro vyhledávání vzorů v reálném čase v konzoli, který aktualizuje vstupní vyrovnávací paměť tty.
# selector examples
selector -v -x @ <(find . -maxdepth 2 -type d | awk '{print $0"@cd "$0}')
selector -v -x @ <(grep -E -o 'http[^ ]+' fileWithURLS)
Viz:volič – DYNAMIC SEARCH IN CONSOLE