backspace character wiredness
- by mykhal
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 "abc\b\b\bxyz"
xyz
(\b 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 "abc\b\b\bx"
xbc
is behaves like left arrow keys instead of backspace:
$ echo -e "abc\e[D\e[D\e[Dx"
xbc
erase line back works normally:
$ echo -e "abc\e[1Kx"
x
in fact, when i type ctrl-v <BS> 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 it xterm linux and some other terminal emulators, $TERM == xterm, tried vt100, linux as well)