一般的なLinux端末のバックスペース文字が、印刷されたときに実際に文字を消去しないのはなぜだろうか(通常、入力すると機能します)。
これは期待どおりに機能します。
$ echo -e "abc\b\b\bxyz"
xyz
(バックスペースとして評価され、 + +\b
としても挿入できます- ( )としてレンダリングされます)CtrlV CtrlH^H
0x08
しかし、バックスペースの後に文字が少ない場合、奇妙な動作が明らかになります:
$ echo -e "abc\b\b\bx"
xbc
バックスペースではなく左矢印キーのように動作します。
$ echo -e "abc\e[D\e[D\e[Dx"
xbc
ラインバックの消去は正常に機能します:
$ echo -e "abc\e[1Kx"
x
実際、ターミナルでCtrl+を入力すると、ではなく( )が生成されます。V Backspace^?
0x7f
^H
DelCtrlV Del<ESC>[3~
印刷されたバックスペース文字が文字を消去しない理由を誰かが説明できますか?
(私の環境は xterm Linux で、その他の端末エミュレータも$TERM
== xterm
、試しvt100
てみLinux
ました)