web-dev-qa-db-ja.com

bashコマンドラインのBackSpaceで文字を消去する

Bashファイルとプロファイルファイルの構成がありますが、そのファイルを他のサーバーにコピーしたため、バックスペースを押すだけではテキストを消去できません。テキストを消去するには、Shift +バックスペースを押す必要があります。

復元するために変更する必要があるパラメーターは何ですか?

3
luisascoobydoo

一般に(使用している特定のシステムの規則によって異なります)、 backspace キーはASCII BS(^H)およびDEL(^?)のいずれかを送信します

一部の端末エミュレーターは、シフト修飾子を使用すると、ASCII BS(^H)とDEL(^?)の間で切り替わります。一部は切り替えません。明らかに、使用しているプログラムsshはしません。

あなたの.profileからのこの行を考えると:

stty erase "^H" kill "^U" intr "^C" eof "^D" susp "^Z"

端末は通常^?(ASCII DEL)を送信するようですが、^H(ASCII BS)を期待するように指示されました。ただし、変更すると端末が^Hに切り替わります backspace とともに shift キー。あなたは使うことができたでしょう

stty erase "^?" kill "^U" intr "^C" eof "^D" susp "^Z"

より良い結果を得ました。

3
Thomas Dickey

万能のソリューションはないような気がします。次は私のためにgnome-terminal(2.31.3)のbash 4.1の問題を修正しました:

stty sane

参照: ソース

1
Robert Lugg

別の可能性は、terminfoデータが欠落していることです。これは、chrootで作業しているときに起こりました。この フォーラム投稿 は、それを理解するのに役立ち、Stackexchangeでそのようなものに対する有効な参照を見つけることができなかったので、ここに行きます。

/ usr/share/terminfo /ディレクトリをchrootディレクトリの/ usr/share/terminfoにコピーするだけで十分です。

0
jorb