PuTTY: conectado a algum servidor Ubuntu, às vezes para de ir para uma nova linha ao pressionar enter

16

Eu uso o PuTTY para fazer o SSH em algum servidor Ubuntu 14.04.4 LTS x64. Pressionar a tecla ENTERfaz com que o terminal vá para uma nova linha. No entanto, de tempos em tempos, algum programa gera algum texto e, depois de pressionar a tecla ENTER, o terminal não fica mais em uma nova linha (veja a demonstração abaixo).

insira a descrição da imagem aqui

Existe alguma maneira de impedir isso, ou pelo menos ao pressionar a tecla ENTERnão faz com que o terminal vá para uma nova linha, existe alguma maneira de redefinir o terminal para que ENTER o terminal volte para uma nova linha?

Franck Dernoncourt
fonte
2
Franck - Quando isso acontecer, pressione Ctrl+Ce, em seguida, digite resete pressione Enter. Deixe-me saber se isso ajuda alguma.
Pimp Juice IT
@Facebook Obrigado, digite resete pressione Enterobras!
Franck Dernoncourt
Além disso, um relatório de bug contra esse glancesprograma para sair do terminal em mau estado depois de bater;)
marcelm
Por coincidência, uma pergunta semelhante acabou de aparecer no Unix e no Linux Stack Exchange: unix.stackexchange.com/questions/398291
JdeBP 16/17
Considere usar o cygwin e instalar o Terminal. Putty é muito horrível. Por exemplo, o mc não será exibido corretamente e não permitirá que você selecione os arquivos com shift.
JorgeeFG

Respostas:

25

Você pode usar o comando reset digitando resete pressionando Enterquando isso ocorrer para redefinir o terminal, para que ele Enter volte para uma nova linha ao pressionar novamente.

Comando

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

Recursos adicionais

  • Redefinir

    Quando invocado como redefinido, tset define os modos de cozimento e eco, desativa os modos de quebra e bruto, ativa a conversão de nova linha e redefine qualquer caractere especial não definido para seus valores padrão antes de executar a inicialização do terminal descrita acima. Isso é útil depois que um programa morre, deixando um terminal em um estado anormal.

Pimp Juice IT
fonte
16

O resetcomando faz mais do que você realmente precisa aqui neste caso específico, pois seu problema é apenas que o eco foi desativado. resetna verdade, emite seqüências de controle para redefinir o próprio terminal, quando tudo o que você realmente precisa é reconfigurar a disciplina de linha no kernel do sistema operacional, ativando o modo de eco novamente e sem tocar no terminal .

Para isso, basta usar:

stty sane
ou mesmo apenas:

eco stty

resetaborda situações em que na verdade é o próprio estado do terminal que precisa ser redefinido e não (apenas) o estado da disciplina de linha; ou seja, os tabstops foram apagados, o terminal é deixado alternado para o buffer de tela alternativo, um conjunto de caracteres inconvenientes de 8 bits foi trocado e assim por diante.

Leitura adicional

JdeBP
fonte
Como a disciplina de linha é realmente no kernel? Esta resposta me parece correta, exceto aquela parte da qual sou muito duvidosa.
Stephen Ostermiller
@StephenOstermiller: Onde mais seria?
Psmears 16/10
3
A disciplina de linha é na verdade um dos primeiros drivers de kernel configuráveis ​​no espaço do usuário, o Unix tinha sttye gtty(configurava e obtinha) chamadas de sistema muito antes de serem substituídas pela ioctlchamada mais geral .
Guntram Blohm suporta Monica
6
Faz sentido porque é independente do shell, então também funcionará em outros programas. E nos primeiros dias não havia um programa terminal, por assim dizer - os consoles seriais interagiam diretamente com o kernel (e de fato ainda podem).
Muzer #
11
Para esclarecer: Antigamente, o lado de trás do / dev / tty era uma porta serial física. A disciplina de linha foi gerenciada pelo driver tty do kernel. Com uma sessão de terminal falsa ou uma sessão de terminal de rede, / dev / tty é um terminal psuedo e seu lado traseiro não é uma porta serial física, mas outro dispositivo mestre pseduo do qual os dados da sessão são lidos / gravados e alimentados no soquete de rede ou o emulador de terminal. O lado / dev / tty do pseudo terminal se comporta da mesma forma que o lado / dev / tty de uma porta serial real. en.wikipedia.org/wiki/Pseudoterminal
Sam Liddicott 17/10