web-dev-qa-db-ja.com

コンソール上のプロセスにキーストロークを送信する

シェルが開いているターミナルがある場合、実行中のプロセスのいずれかにキーストロークを送信するシェルスクリプト(どのスクリプト言語でも問題ありません!)を作成するにはどうすればよいですか?

例として、PIDがわかっていると仮定して、Esc:wqenterをVimプロセスに送信する関数を呼び出すにはどうすればよいですか?

このAPIを提供できる実行可能ファイルはありますか?あるいは、Tmuxのようなものでこれを行うことはできますか?

2
themirror

Viプロセスがtmuxウィンドウで実行されている場合:

tmux send-keys -t "${window_name}:${pane_number}" Escape :wq Enter

Viプロセスを強制終了する場合は、HUPシグナルを送信します。これはファイルを保存しませんが、vim構成で無効にされていない場合はファイル回復データを残します。

kill -HUP $pid