PuTTY: подключен к какому-либо серверу Ubuntu, иногда перестает переходить на новую строку при нажатии enter

16

Я использую PuTTY для SSH к какому-то серверу Ubuntu 14.04.4 LTS x64. При нажатии клавиши ENTERтерминал переходит на новую строку. Тем не менее, время от времени некоторые программы выводят некоторый текст, и после этого нажатие клавиши ENTERбольше не приводит к тому, что терминал переходит на новую строку (см. Демонстрацию ниже).

введите описание изображения здесь

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

Франк Дернонкур
источник
2
Франк - Когда это произойдет, нажмите Ctrl+C, а затем введите resetи нажмите Enter. Дайте мне знать, если это поможет.
Сок Pimp IT
@Facebook Спасибо, наберите resetи нажмите Enterработает!
Франк Дернонкур
Кроме того, подайте отчет об ошибке для этой glancesпрограммы, чтобы оставить терминал в плохом состоянии после сбоя;)
marcelm
По совпадению, аналогичный вопрос только что возник на Unix & Linux Stack Exchange: unix.stackexchange.com/questions/398291
JdeBP
Рассмотрите возможность использования cygwin и установки терминала. Замазка очень ужасная. Например, mc не будет отображаться правильно и не позволит вам выбирать файлы со сдвигом.
JorgeeFG

Ответы:

25

Вы можете использовать команду сброса , набрав, а resetзатем нажав, Enterкогда это произойдет, для сброса терминала, чтобы он перешел на новую строку при Enter повторном нажатии .

команда

ubuntu@db200krctc:~$ ubuntu@db200krctc:~$ ubuntu@db200krctc:~$ ubuntu@db200krctc:~$
ubuntu@db200krctc:~$ reset
ubuntu@db200krctc:~$
ubuntu@db200krctc:~$
ubuntu@db200krctc:~$

Дополнительные ресурсы

  • сброс настроек

    При вызове в качестве сброса tset устанавливает режимы cooked и echo, отключает режимы cbreak и raw, включает перевод новой строки и сбрасывает любые неустановленные специальные символы в их значения по умолчанию перед выполнением инициализации терминала, описанной выше. Это полезно после того, как программа умирает, оставляя терминал в ненормальном состоянии.

Сок Pimp IT
источник
16

В resetэтом конкретном случае команда делает больше, чем вам действительно нужно, так как ваша проблема в том, что эхо было отключено. resetфактически испускает управляющие последовательности для сброса самого терминала, когда все, что вам действительно нужно, это перенастроить линейную дисциплину в ядре операционной системы, снова включить режим эха и вообще не касаться терминала .

Для этого просто используйте:

в здравом уме
или даже просто:

стое эхо

resetобращается к ситуациям, когда собственно состояние терминала требует сброса, а не (просто) состояния дисциплины линии; то есть табуляторы были стерты, терминал оставлен переключенным на альтернативный экранный буфер, был заменен неудобный 8-битный набор символов и так далее.

дальнейшее чтение

JdeBP
источник
Как дисциплина линии на самом деле в ядре? Этот ответ звучит правильно для меня, за исключением той части, в которой я очень сомневаюсь.
Стивен Остермиллер,
@StephenOstermiller: Где еще это будет?
psmears
3
Линейная дисциплина на самом деле является одним из первых драйверов ядра, которые когда-либо конфигурировались из пространства пользователя, Unix имел sttyи gtty(устанавливал и получал) системные вызовы задолго до того, как они были заменены более общим ioctlвызовом.
Гунтрам Блом поддерживает Монику
6
Это имеет смысл, потому что тогда он не зависит от оболочки, поэтому он будет работать и в других программах. И в первые дни не было, так сказать, терминальной программы - последовательные консоли взаимодействовали бы напрямую с ядром (и, действительно, все еще могут).
Музер
1
Чтобы уточнить: в былые времена задняя сторона / dev / tty была физическим последовательным портом. Линейная дисциплина управлялась драйвером ядра tty. При фальшивом терминальном сеансе или сеансе сетевого терминала / dev / tty является псевдо-терминалом, а его задняя сторона является не физическим последовательным портом, а другим псевдо-ведущим устройством, с которого данные сеанса считываются / записываются и подаются в сетевой сокет или эмулятор терминала Сторона / dev / tty псевдотерминала ведет себя так же, как сторона / dev / tty реального последовательного порта. en.wikipedia.org/wiki/Pseudoterminal
Сэм Лиддикотт,