PuTTY: collegato ad alcuni server Ubuntu, a volte smette di passare a una nuova linea quando si preme invio


16

Uso PuTTY per SSH su alcuni server Ubuntu 14.04.4 LTS x64. Premendo il tasto ENTER, il terminale passa a una nuova linea. Tuttavia, di tanto in tanto, alcuni programmi emettono del testo e successivamente premendo il tasto ENTERnon si fa più passare al terminale una nuova riga (vedere la dimostrazione di seguito).

inserisci qui la descrizione dell'immagine

Esiste un modo per impedirlo, o almeno quando si preme il tasto ENTERnon si fa più andare il terminale a una nuova linea, c'è comunque un modo per resettare il terminale in modo che ENTER il terminale vada di nuovo a una nuova linea?


2
Franck - Quando ciò accade, premere Ctrl+C, quindi digitare resete premere Enter. Fammi sapere se questo aiuta.
Pimp Juice IT

@Facebook Grazie, digita resete premi Enteropere!
Franck Dernoncourt,

Inoltre, presentare una segnalazione di bug contro quel glancesprogramma per aver lasciato il terminale in cattivo stato dopo un crash;)
marcelm

Per coincidenza, una domanda simile è appena arrivata
JdeBP

Prendi in considerazione l'utilizzo di Cygwin e l'installazione di Terminal. Putty è terribile. Ad esempio, mc non verrà visualizzato correttamente e non ti permetterà di selezionare i file con shift.
JorgeeFG,

Risposte:


25

È possibile utilizzare il comando reset digitando e resetpoi premendo Enterquando ciò si verifica per ripristinare il terminale in modo che passerà a una nuova riga quando si preme di Enter nuovo.

Comando

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

Ulteriori risorse

  • Ripristina

    Quando viene richiamato come reset, tset imposta le modalità cotta ed eco, disattiva le modalità cbreak e raw, attiva la traduzione di nuova riga e ripristina i caratteri speciali non impostati sui loro valori predefiniti prima di eseguire l'inizializzazione del terminale sopra descritta. Ciò è utile dopo che un programma muore lasciando un terminale in uno stato anormale.


16

Il resetcomando fa più del necessario in questo caso particolare, poiché il tuo problema è semplicemente che l'eco è stata disattivata. resetin realtà emette sequenze di controllo per ripristinare il terminale stesso, quando tutto ciò di cui hai effettivamente bisogno è riconfigurare la disciplina di linea all'interno del kernel del sistema operativo, riattivare la modalità eco e non toccare affatto il terminale .

Per questo, usa semplicemente:

sano di mente
o anche solo:

eco stty

resetaffronta situazioni in cui è proprio lo stato del terminale che deve essere ripristinato e non (solo) lo stato della disciplina di linea; vale a dire che i tabstops sono stati cancellati, il terminale viene lasciato al buffer dello schermo alternativo, un set di caratteri a 8 bit scomodo è stato scambiato e così via.

Ulteriori letture


In che modo la disciplina di linea è effettivamente nel kernel? Questa risposta mi suona bene tranne quella parte della quale sono molto dubbiosa.
Stephen Ostermiller,

@StephenOstermiller: dove altro sarebbe?
psmears,

3
La disciplina di linea è in realtà uno dei primi driver del kernel mai configurabili dallo spazio utente, Unix aveva sttye gtty(imposta e riceve) chiamate di sistema molto prima che fossero sostituite dalla ioctlchiamata più generale .
Guntram Blohm supporta Monica il

6
Ha senso perché è quindi indipendente dalla shell, quindi funzionerà anche in altri programmi. E ai primi tempi non esisteva un programma terminale per così dire: le console seriali avrebbero interagito direttamente con il kernel (e in effetti possono ancora).
Muzer,

1
Per chiarire: ai vecchi tempi il retro di / dev / tty era una porta seriale fisica. La disciplina della linea era gestita dal driver tty del kernel. Con una sessione terminale falsa o una sessione terminale di rete, / dev / tty è un terminale psuedo e il suo lato posteriore non è una porta seriale fisica ma un altro dispositivo master pseduo da cui i dati della sessione vengono letti / scritti e inviati al socket di rete o l'emulatore di terminale. Il lato / dev / tty del terminale pseudo si comporta in modo molto simile al lato / dev / tty di una porta seriale reale. it.wikipedia.org/wiki/Pseudoterminal
Sam Liddicott
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.