Интересно, почему символ возврата на одну позицию в обычных терминалах Linux фактически не стирает символы при печати (что обычно работает при вводе) ..
Это работает как ожидалось:
$ echo -e "abc\b\b\bxyz"
xyz
(\b
оценивается как backspace, также может быть вставлен как 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
)