Это работает даже в xterm в xorg:
stty -echoctl
sleep
Затем на «мертвом» терминале вы можете напрямую нажать Escape
, а затем
[32m
и следующие клавиши, которые вы нажимаете, уже зеленые! Если вы убьете сон с помощью Ctrl -C, ваша подсказка останется чистой...
Вопрос — это особый случай --способ вывода управляющей последовательности с клавиатуры на экран, в то время как readline/bash находится в коме.
С нормальным echoctl/ctlecho, после sleep
оболочка повторяет нажатия клавиш (ввод ), но также выводит клавишу escape непосредственно как ^[
на экран (вывод ). Специальное значение как «ввод управляющей последовательности (CSI )утрачено.
Так разве (принятый )ответ не неверен?
Здесь я нажимаю ctrl -C с курсором на "l" в "строке", как будто я решаю прервать и не продолжать редактирование строки:
$ weird -cmd ^Cne
$ stty -echoctl
$ weird -cmd line
$ # nice but now it looks like it got exec'd
По-видимому, это основной эффект этой опции stty echoctl.
Я только что понял, что пресса Escape
— это сокращение от control-[
или ^[
. Так что логично, что tty просто сразу выдает ECHO ^[ char, а не ждет последовательности. После sleep
с обычным эхо-вызовом клавиша Home генерирует ^[[H
. Без echoctl, то есть после stty -echoctl
, клавиша Home... помещает курсор вверху слева моего экрана xterm!
(Когда bash бодрствует, клавиша Home работает :в начале строки.)
эти две строки bind -p
встроены в /terminfo xterm:
"\eOH": beginning-of-line
"\e[H": beginning-of-line