Bashで読み取りを実行するときに制御文字を無視する方法

Bashで読み取りを実行するときに制御文字を無視する方法

Bashで1行を変数として読み取るには、次のようにします。

read -p "here:" _msg; echo "${_msg}" > _read

xyz123期待を持って誤って最初に作成し_msgましたが、今カーソルを移動してから入力を続けるには、3回タップする必要がありますが、123モードに入るのと同じようです。1xyzINSERT123xyz

here:xyz

その後、最終ファイルを確認しました。

xxd _read

私は持っています

00000000: 7879 7a1b 5b44 1b5b 441b 5b44 3132 330a  xyz.[D.[D.[D123.

入力された制御文字を無視する方法

WindowsのMINGW64でbashを実行しています。

答え1

bashman bash( )のドキュメント、特に説明の部分を読むと、追加のreadオプションがあることがわかります。

-e標準入力が端末から出てくる場合readline(上記のREADLINEを参照)、ラインを取得するために使用されます。

それ以外の場合は、次のガイドラインに従ってください。

読書船これは、対話型シェルを使用するときに入力読み取りを処理するライブラリです。 [...]

このディレクティブを適用すると、次のようになります。

read -e -p "here:" _msg; printf '%s\n' "$_msg" > _read

と入力したら、1233つのカーソルが離れてabcファイルから次のものを取得します_read

hexdump -C _read
00000000  61 62 63 31 32 33 0a                              |abc123.|

関連情報