Backspace символ странности
Интересно, почему символ возврата в обычные терминалы 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 возврат на одну позицию в терминале,^?
(0x7f
) дается вместо^H
, этоDel Ascii персонаж, ноCtrl+V Del производит<ESC>[3~
, но это другая история ..
Так может кто-нибудь объяснить, почему напечатанный символ возврата на клавишу не стирает символы?
(Моя среда - xterm Linux и некоторые другие эмуляторы терминала,$TERM
==xterm
, пыталсяvt100
, Linux
также)