Это определяется: )какие символы отправляет эмулятор терминала при нажатии клавиши BackSpace(^H
/ BS
или ^?
/DEL
)и b )какой символ используется как VERASE
с помощью драйвера tty (см. и измените последний с помощьюstty(1)
--stty erase ^H
).
Если эмулятор терминала отправляет ^H
, но tty не распознает его как специальный символ, нажатие клавиши BackSpace визуально «сотрет» последний символ на экране[1], но символ будет отправлен поскольку -равно (вместе с символом перед ним )для чтения процесса с tty(cat
).
Редакторы и интерактивные программы с возможностями редактирования строки -устанавливают tty в необработанный режим и выполняют собственную обработку специальных символов и могут обрабатывать ^H
и ^?
одинаково; cat
не один из них ;-)
[1] это зависит от настройкиechoctl
stty
--, если она установлена, терминал будет отображать управляющие символы обратно в формате "^"+chr(char^0x40)
(^H
для BS = 8
и т. д. ).