任意のキーを押すたびに、同じ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番目の部分についてはクリックしてください Ctrl。CINT信号をスクリプトに送ることは、単に信号をキャッチすることです。
すべてを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つの方法は、-を使用してスクリプトを停止してからタスクを終了することですCtrl。Z)