PuTTY: connecté à un serveur Ubuntu, arrête parfois d'aller sur une nouvelle ligne en appuyant sur Entrée

16

J'utilise PuTTY pour SSH vers un serveur Ubuntu 14.04.4 LTS x64. En appuyant sur la touche ENTER, le terminal passe à une nouvelle ligne. Cependant, de temps en temps, certains programmes affichent du texte, et après avoir appuyé sur la touche, ENTERle terminal ne passe plus à une nouvelle ligne (voir la démonstration ci-dessous).

entrez la description de l'image ici

Existe-t-il un moyen d'empêcher cela, ou du moins lorsque le fait d'appuyer sur la touche ENTERn'entraîne plus le transfert du terminal vers une nouvelle ligne, existe-t-il de toute façon de réinitialiser le terminal afin que ENTER le terminal revienne sur une nouvelle ligne?

Franck Dernoncourt
la source
2
Franck - Lorsque cela se produit, appuyez sur Ctrl+C, puis tapez resetet appuyez sur Enter. Faites-moi savoir si cela aide.
Pimp Juice IT
@Facebook Merci, tapez resetet appuyez sur Entertravaux!
Franck Dernoncourt
En outre, déposez un rapport de bogue contre ce glancesprogramme pour avoir laissé le terminal dans un mauvais état après un crash;)
marcelm
Par coïncidence, une question similaire vient d'apparaître sur Unix et Linux Stack Exchange: unix.stackexchange.com/questions/398291
JdeBP
Pensez à utiliser cygwin et à installer Terminal. Le mastic est très horrible. Par exemple, mc ne s'affichera pas correctement et ne vous permettra pas de sélectionner des fichiers avec shift.
JorgeeFG

Réponses:

25

Vous pouvez utiliser la commande de réinitialisation en tapant resetpuis en appuyant sur Enterlorsque cela se produit pour réinitialiser le terminal afin qu'il passe à une nouvelle ligne lorsque vous appuyez à Enter nouveau.

Commander

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

Autres ressources

  • réinitialiser

    Lorsqu'il est invoqué comme réinitialisation, tset définit les modes cuit et écho, désactive les modes cbreak et raw, active la traduction de nouvelle ligne et réinitialise tous les caractères spéciaux non définis à leurs valeurs par défaut avant de procéder à l'initialisation du terminal décrite ci-dessus. Ceci est utile après la mort d'un programme laissant un terminal dans un état anormal.

Pimp Juice IT
la source
16

La resetcommande fait plus que ce dont vous avez vraiment besoin ici dans ce cas particulier, car votre problème est simplement que l'écho a été désactivé. resetémet en fait des séquences de contrôle pour réinitialiser le terminal lui-même, alors que tout ce dont vous avez réellement besoin est de reconfigurer la discipline de ligne dans le noyau du système d'exploitation, de réactiver le mode écho et de ne pas toucher du tout du terminal .

Pour cela, utilisez simplement:

stty sain d'esprit
ou même simplement:

écho stty

resettraite des situations où c'est en fait le propre état du terminal qui doit être réinitialisé et non (seulement) l'état de la discipline de ligne c'est-à-dire que les onglets ont été effacés, le terminal est laissé basculé sur le tampon d'écran alternatif, un jeu de caractères 8 bits incommode a été échangé, et ainsi de suite.

Lectures complémentaires

JdeBP
la source
Comment la discipline de ligne est-elle réellement dans le noyau? Cette réponse me semble juste, sauf la partie dont je suis très douteuse.
Stephen Ostermiller
@StephenOstermiller: Où serait-ce autrement?
psmears
3
La discipline de ligne est en fait l'un des premiers pilotes de noyau jamais configurables à partir de l'espace utilisateur, Unix avait sttyet gtty(définissait et obtenait) des appels système bien avant qu'ils ne soient remplacés par l' ioctlappel plus général .
Guntram Blohm prend en charge Monica
6
Cela a du sens car il est alors indépendant du shell, donc cela fonctionnera aussi dans d'autres programmes. Et au début, il n'y avait pas de programme terminal pour ainsi dire - les consoles série interagiraient directement avec le noyau (et en effet le peuvent toujours).
Muzer
1
Pour clarifier: Dans les temps anciens, l'arrière de / dev / tty était un port série physique. La discipline de ligne était gérée par le pilote tty du noyau. Avec une fausse session de terminal ou une session de terminal réseau, / dev / tty est un pseudo-terminal et sa face arrière n'est pas un port série physique mais un autre périphérique maître pseduo à partir duquel les données de session sont lues / écrites et envoyées à la prise réseau ou l'émulateur de terminal. Le côté / dev / tty du pseudo-terminal se comporte de la même manière que le côté / dev / tty d'un véritable port série. en.wikipedia.org/wiki/Pseudoterminal
Sam Liddicott