I wonder why backspace character in common Linux terminals does not actually erase the characters, when printed (which normally works when typed)..
This works as expected:
$ echo -e "abcxyz"
xyz
(
evaluates to backspace, can be inserted also as Ctrl+V Ctrl+H - rendered as ^H
(0x08
))
but when there are less characters after the backspaces, the strange behavior is revealed:
$ echo -e "abcx"
xbc
it behaves like left arrow keys instead of backspace:
$ echo -e "abce[De[De[Dx"
xbc
erase line back works normally:
$ echo -e "abce[1Kx"
x
In fact, when I type Ctrl+V Backspace in terminal, ^?
(0x7f
) is yielded instead of ^H
, this is Del ascii character, but Ctrl+V Del produces <ESC>[3~
, but it is another story..
So can someone explain why printed backspace character does not erase the characters?
(My environment is xterm Linux and some other terminal emulators, $TERM
== xterm
, tried vt100
, Linux
as well)
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…