7

Иногда, когда сценарий убивается при запросе пароля, я больше не вижу, что мой ввод отображается в терминале. То есть обычно в терминале я вижу это:

$ _
<after typing 'foobar':>
$ foobar_

Но в этом случае я не вижу, что я напечатал.

Я знаю, что могу перезагрузить терминал, чтобы восстановить его обычные настройки, но есть ли способ восстановить входной эхо без перезагрузки?

2 ответа2

13

Для bash я обычно просто набираю reset и он исправляет все, что осталось «смешным». Похоже, он также известен как tset но вызов каждого из них делает что-то немного другое.

tset, reset - terminal initialization

   When  invoked  as  reset,  tset  sets  cooked and echo modes, turns off
   cbreak and raw modes, turns on newline translation and resets any unset
   special  characters  to  their default values before doing the terminal
   initialization described above.  This is useful after  a  program  dies
   leaving a terminal in an abnormal state.  Note, you may have to type

       <LF>reset<LF>

   (the  line-feed character is normally control-J) to get the terminal to
   work, as carriage-return may no longer  work  in  the  abnormal  state.
   Also, the terminal will often not echo the command.
2

Используйте команду stty . В частности, запустите эту команду:

stty echo

Это восстановит эхо (печать вводимых символов), которое, вероятно, было отключено во время запроса пароля.

Чтобы увидеть все настройки вашего терминала, запустите stty -a . В то время как ввод был скрыт, он должен показывать -echo где-то в выводе. После исправления он должен вместо этого показать echo на своем месте.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .