次の最小化された Bash スクリプトを検討してください。
echo Enter your name:
read NAME
echo $NAME
スクリプトを実行して名前を入力し、矢印キーで入力をナビゲートしたい場合、[[D^
文字が返されます。
このような動作に対応するには、スクリプトをどのように書き直しますか。つまり、ASCII コンテストに勝つ代わりに、キーを使用して移動できるようにしますか?
これらの文字シーケンスは、端末が「左カーソル」が押されたことを伝える方法です。それを受け取ったプログラムがそれをそのように解釈せず、代わりに(エスケープ文字をフィルタリングした後)表示するだけの場合、それが得られます。
幸いなことに、bash の read コマンドには-e
、行を読み取るために Readline を使用できるようにするオプションがあります。readline は、(通常の bash コマンド入力の場合と同様に) すべての処理を実行します。
Andreas と検索エンジンのデューデリジェンスのおかげで、スクリプトを書き直すことができました。
echo Enter your name:
read -e NAME
echo $NAME
矢印キーを使用して入力をナビゲートすると、期待どおりに機能するようになりました。
ここでは、 read 組み込みコマンドについて詳しく知ることができます。