Linuxのシェル/ターミナルに誤って入力された見えないパスワードの消去/削除

Linuxのシェル/ターミナルに誤って入力された見えないパスワードの消去/削除

Linux端末を使用するときに私を迷惑にすることの1つは、たとえば、次の実行時に表示されないパスワードを入力する必要があることです。SSH。場合によっては、1つ以上の文字を誤って入力し、再起動する前にすべての項目を削除したことを確認するためにバックスペースキーを数回押す必要があります。

私はこれが大きな問題ではないことを知っていますが、しばらく前にCTRL + Lを押すと端末が「消去される」ことがわかりました。もう一度やり直すには、キーを入力してください。

ベストアンサー1

私はこれが答えられたことを知っていますが、答えは何が起こっているのか説明しません。

Ctrl+ などの文字はL次のように表示されます。アプリケーション。たとえば、シェルに入力を入力すると、bash画面は消去されます。一部のアプリケーションでは、emacsこれを使用して画面を再描画するか、カーソルを中央に配置します。

Ctrlパスワードプロンプトの+などの文字は、U次のように表示されます。TTYライン規律。入力端末が「標準」行編集モード(パスワードを入力したときにプログラムがあるモード)の間に機能します。このモードでは、Linuxカーネル自体がこれらの文字を解釈します。次の出力で、どの機能がどのキーに割り当てられているかを確認できますstty -a

speed 38400 baud; rows 45; columns 128; line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>; eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S;
susp = ^Z; rprnt = ^R; werase = ^W; lnext = ^V; flush = ^O; min = 1; time = 0;
-parenb -parodd cs8 -hupcl -cstopb cread -clocal -crtscts
-ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon -ixoff -iuclc -ixany -imaxbel iutf8
opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt echoctl echoke

Ctrlここでは、+が次のようUに縛られていることがわかります。killstty のマニュアルページ) は「現在行を削除」します。stty以下を使用してこのマッピングを変更することもできます。

stty kill ^E   # make ctrl-e erase the line

このページ興味があれば、TTYレイヤーに関する有用な情報がたくさんあります。


十分に混乱していない場合は、インタラクティブなプロンプトが表示されたら、bash実際にいいえ「標準」行編集モードです。代わりに、bash入力して渡すと各文字が直接受信されます。読書船図書館。この図書館〜するただし、エンドデバイスに設定したマッピングを尊重し、それを変更するために引き続き使用できますstty。あるいは、ファイル内でプロパティを設定して、bash内部的にまたは他のreadlineベースのプログラムで独立してカスタマイズすることもできます。よりunix-line-discard~/.inputrcバッシュのマニュアルページより多くの情報を知りたいです。

プログラムを実行するときは、以前に有効になっていbashた標準行編集モード()を再度有効にし、stty icanonプログラムが完了したら再び無効化()してくださいstty -icanon

おすすめ記事