BashコマンドラインでBackSpaceを使用して文字を消去する

BashコマンドラインでBackSpaceを使用して文字を消去する

Bash用の設定ファイルと設定ファイルがありますが、そのファイルを別のサーバーにコピーしたため、バックスペースを押すだけではテキストを削除できません。テキストを削除するには、Shift + バックスペースを押す必要があります。

復元するにはどのパラメータを変更する必要がありますか?

答え1

一般的に(条約使用している特定のシステムの場合)このbackspaceキーはASCII BS(^H)とDEL(^?)を送信します。

一部の端末エミュレータは、^HShift修飾子を使用するとASCII BS()とDEL()を切り替えます。^?一部はそうではありません。明らかにsshに使用するプログラムはそうではありません。

次の行を考慮すると、次のようになります.profile

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

端末は通常(ASCII DEL)を送信しているようですが、(ASCII BS)を^?期待するように指示しています。^Hただし、対応するキーを使用して変更する^Hbackspace、端末がに切り替わりますshift。使えた

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

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

答え2

すべての場合に適用できる一律のソリューションはないと思います。以下は、gnome-terminal(2.31.3)のbash 4.1の問題を解決しました。

stty sane

引用:源泉

答え3

もう1つの可能性はterminfoデータの損失です。 chrootを使用すると、これが起こりました。これフォーラム投稿この問題を解決するのに役立ちましたが、Stackexchangeで同様の操作参照が見つからなかったため、ここにあります。

/usr/share/terminfo/ ディレクトリを chroot ディレクトリ /usr/share/terminfo にコピーすれば十分です。

関連情報