スクリプトがパスワードプロンプトで強制終了されると、入力がターミナルにエコー表示されなくなることがあります。つまり、通常はターミナルで、これが表示されます。
$ _
<after typing 'foobar':>
$ foobar_
しかし、この場合、入力した内容がわかりません。
端末を再起動して通常の設定に戻すことができることはわかっていますが、再起動せずに入力エコーを復元する方法はありますか?
Bashの場合、通常はreset
と入力するだけで、「おかしい」ままになっているものはすべて修正されます。 tset
としても知られているように見えますが、それぞれを呼び出すと少し異なります。
tset, reset - terminal initialization
When invoked as reset, tset sets cooked and echo modes, turns off
cbreak and raw modes, turns on newline translation and resets any unset
special characters to their default values before doing the terminal
initialization described above. This is useful after a program dies
leaving a terminal in an abnormal state. Note, you may have to type
<LF>reset<LF>
(the line-feed character is normally control-J) to get the terminal to
work, as carriage-return may no longer work in the abnormal state.
Also, the terminal will often not echo the command.
stty
コマンドを使用します。具体的には、次のコマンドを実行します。
stty echo
これにより、おそらくパスワードプロンプト中にオフにされたエコー(入力文字の印刷)が復元されます。
端末設定をすべて表示するには、stty -a
を実行します。入力は非表示でしたが、出力のどこかに-echo
が表示されるはずです。修正後、代わりにecho
が表示されます。