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)