Интересно, почему обратный символ в обычных терминалах Linux фактически не стирает символы при печати (что обычно работает при вводе).
Это работает как ожидалось:
$ echo -e "abc\b\b\bxyz"
xyz
(\b
оценивает обратное пространство, может быть вставлено также как Ctrl + V Ctrl + H - отображается как ^H
(0x08
))
но когда после пробелов меньше символов, обнаруживается странное поведение:
$ echo -e "abc\b\b\bx"
xbc
он ведет себя как клавиши со стрелками влево вместо backspace:
$ echo -e "abc\e[D\e[D\e[Dx"
xbc
стереть строку обратно работает нормально:
$ echo -e "abc\e[1Kx"
x
Фактически, когда я набираю Ctrl + V Backspace в терминале, ^?
(0x7f
) получается вместо ^H
, это символ Del ascii, но Ctrl + V Del создает <ESC>[3~
, но это уже другая история.
Так может кто-нибудь объяснить, почему печатный символ обратного пространства не стирает символы?
(Моя среда - это xterm Linux и некоторые другие эмуляторы терминалов, $TERM
== xterm
, попробовал vt100
, Linux
)