Одна вещь, которая раздражает меня при использовании терминала Linux, - это когда мне приходится вводить невидимый пароль, например, когда вы запускаете ssh . Иногда я неправильно набираю одну или несколько букв, а затем мне нужно несколько раз нажать клавишу возврата, чтобы убедиться, что я стер все, чтобы начать заново.
Я знаю, что это не имеет большого значения, но поскольку на днях я обнаружил, что нажатие CTRL + L «очищает» терминал, мне было интересно, есть ли способ очистить / стереть невидимый пароль, не полагаясь на клавишу возврата или нажав клавишу ввода, чтобы Попробуйте еще раз.
Я знаю, что на это уже ответили, но ответ не объясняет, что происходит.
Символы, такие как Ctrl+ L, обрабатываются приложением . В случае ввода ввода в оболочку, вроде бы
bash
, он очищает экран. Некоторые приложения, напримерemacs
, используют его для перерисовки экрана и / или повторного центрирования курсора.Символы, такие как Ctrl+ Uв приглашении пароля, обрабатываются дисциплиной линии TTY . Они будут работать всякий раз, когда входной терминал находится в «каноническом» режиме редактирования строки, в котором находятся ваши программы, когда вы вводите пароль. В этом режиме само ядро Linux интерпретирует эти символы. Вы можете увидеть, какие функции назначены каким клавишам на выходе
stty -a
:Здесь вы можете видеть, что Ctrl+ Uсвязан с
kill
, который (согласно man-странице stty ) будет «стирать текущую строку». Вы также можете использоватьstty
для изменения этого отображения:На этой странице есть много полезной информации о слое TTY, если вам интересно.
Если вещи не были достаточно запутанными: когда по приглашению интерактива
bash
, вы на самом деле не в «каноническом» режиме редактирования строки. Вместо этогоbash
он получает каждый символ непосредственно по мере его ввода и интерпретирует сами управляющие последовательности через библиотеку readline . Эта библиотека будет учитывать сопоставления, которые вы установили на своем оконечном устройстве, так что вы все равно можете использовать ихstty
для изменения. Или вы можете настроить их независимо друг от друга внутриbash
и в других программах на основе readline, установивunix-line-discard
свойство в вашем~/.inputrc
файле. Смотрите страницу руководства bash для получения дополнительной информации.При запуске программы
bash
повторно включите режим редактирования канонической строки (stty icanon
), если он был включен ранее, а затем снова отключите его, когда программа завершит работу (stty -icanon
).источник