開いている他の端末でコマンドを実行するには? [コピー]

開いている他の端末でコマンドを実行するには? [コピー]

他のオープン端末でコマンドを実行できますか?他の端末からコマンド出力をリダイレクトできることがわかります。たとえば、

ls >/dev/pts/x

ここで、x はttyターゲット端末で実行することで取得できます。ただし、コマンドは現在の端末で実行されます。それは私が望むものではありません。

私の実際の目標が何であるかを明確にするために、開いているすべての端末にコマンドを送信して、各端末を再度開かずにカラーテーマを変更したいと思います。

答え1

/dev/pts/N簡単に作成して、端末にカラー/カーソルエスケープを送信できます。/dev/ttyNたとえば、/dev/pts/5xtermの場合は設定できます。背景どこでも赤に切り替えますprintf %b '\e]11;#ff0000\a' > /dev/pts/5(もちろん書き込み権限が必要です/dev/pts/5)。

これらのコマンドを実行すると、端末で実行されているプログラムが送信した他のエスケープを深刻に妨げる可能性が低くなりますが、最悪の場合は端末を混乱させるだけです。

他の端末/セッションでプログラムを実行するより一般的な問題の場合、私が考えることができると思われる唯一の方法は、その端末で実行されているプロセスをハイジャックし、そこでプログラムをフォーク+実行することです。例:

gdb -p PID -batch -ex 'p system("ls")'

プログラムが端末からデータを読み取る必要がある場合は、実行前にプロセスをフォアグラウンドプロセスグループに追加する必要があります。

関連情報