キーを押すとすぐにコマンドを実行するスクリプト

キーを押すとすぐにコマンドを実行するスクリプト

任意のキーを押すたびに、同じ3つのコマンドを実行する繰り返し機能をbashで作成したいと思います。

Windowsでは、バッチファイルの無限ループで一時停止コマンドを使用してこれを行うことができます。これは私のニーズにぴったりです。

ほとんどの*nixディストリビューションには対応する一時停止コマンドがなく、read -p希望の方法で機能しません。

私に必要なことを達成するための最良の方法は何ですか?また、特定のキーの組み合わせ(例:-)を入力するCtrlと、他のコマンド(クリーン)を実行できますか?C

答え1

bashを使用すると仮定すると、このreadオプションが-N役に立ちます。

  -N nchars return only after reading exactly NCHARS characters, unless
            EOF is encountered or read times out, ignoring any delimiter

を使用すると、read -N 1 x改行文字を待たずに文字が入力されるとすぐに返されます。

質問の2番目の部分についてはクリックしてください CtrlCINT信号をスクリプトに送ることは、単に信号をキャッチすることです。

すべてを1つにまとめる例:

trap 'echo special command' INT

while read -N 1 foo; do
    echo normal command
done

そして対話の例(xダブルクリックしてから Ctrl一度クリックしましたC):

xnormal command
xnormal command
^Cspecial command

(このスクリプトを終了するのは面倒です。これを行う1つの方法は、-を使用してスクリプトを停止してからタスクを終了することですCtrlZ

関連情報