PIDが6350のターミナルエミュレータ(T1)を開いているとします。
別の端末から、次のコマンドを入力します(C1):
echo "lsn" > /proc/6350/fd/0
これはls
を書き込みます T1の新しい行ですが、実行されません。なぜですか?
cat|bash
も使ってみました echo "lsn" > /proc/catid/fd/0
を使用 しかし、それはまだ実行されていません。
コマンドを別の端末にエコーしてコマンドを実行するにはどうすればよいですか?
考えられる答え:
$ mkfifo toto;
$ bash < toto;
$ echo "ls" > toto;
この場合、端末に直接書き込むことはできなくなります(コマンド(C1)がこの端末に表示したものと同じようにすべてが表示されます。
承認された回答:
ttyecho
というコマンドラインユーティリティがあります 別の端末(tty / pts)にコマンドを送信し、コマンドを実行することができます。
sudo ttyecho -n /dev/pts/5 ls
参照:コマンドまたはデータを他の端末に送信するユーティリティ(tty / pts)
ttyecho
も参照してください。 githubのソースコード。
もう1つの興味深いttyコマンドはselector
です。 、tty入力バッファを更新するコンソールのリアルタイムインタラクティブパターンマッチャー。
# selector examples
selector -v -x @ <(find . -maxdepth 2 -type d | awk '{print $0"@cd "$0}')
selector -v -x @ <(grep -E -o 'http[^ ]+' fileWithURLS)
参照:セレクター–コンソールの動的検索