web-dev-qa-db-fra.com

Mon shell bash ne démarre pas une nouvelle ligne à son retour et ne montre pas la commande taped

Dans ma coque Bash interactive couru dans la fenêtre de Lxterminal, je ne sais pas ce que j'ai gâché.

Typing Touche de retour ne démarre pas d'une nouvelle ligne, mais CTRL-C sera.

$ ^C
$ $ $ $ $ ^C
$ ^C
$ $ $ $ $ $ $ 

Lorsque je tape une commande, bien que la touche de retour de la touche de frappe l'exécute, la commande dactylographiée n'est pas visible.

AVANT CE QUI OUTITÉ, je courais une commande Sudo lsof ... | less (ou Sudo netstat ... | less), et il ne semblait pas de sortie, donc je frappe Ctrl-C et/ou Q plusieurs fois dans un ordre arbitraire. Quand je suis finalement sorti de less, ce problème avec Bash est arrivé.

Ai-je accidentellement redirigé accidentellement le stdouté de la coquille ailleurs?

Je ne veux pas fermer la coquille, alors y a-t-il un moyen de résoudre le problème? Merci.

10
Tim

Je pense que votre terminal peut être coincé dans un mode "drôle". Vous pouvez probablement le réinitialiser avec le /usr/bin/reset commande, qui est normalement livrée avec la bibliothèque ncurses.

14
user2233709

Si reset (proposé dans une autre réponse) ne fonctionne pas, essayez:

stty sane

peut-être suivi de

tput rs1

J'ai défini les alias suivants (suppose que je l'ai choisie quelque part sur Stackoverflow):

alias   fixtty='reset; stty sane; tput rs1; clear; echo -e "\033c"'
10
Ralf

Au fur et à mesure que d'autres réponses suggèrent que la solution la plus simple est juste pour exécuter reset.

Quant à la cause cependant? Cela se produit généralement lorsque vous cat (ou de sortie) un fichier binaire ou des données à votre terminal.

Le texte n'est que du texte et n'est pas traité spécialement par le terminal, mais il existe également des caractères spéciaux qui ne sont pas du texte, et sont utilisés pour faire des choses comme déplacer le curseur, effacer l'écran, changer la couleur, etc. .

Lorsque vous produisez des données binaires (plutôt que du texte), le terminal verra ces caractères de contrôle spéciaux et tentera de les interpréter au fur et à mesure de leur arrivée. Vous remarquerez peut-être que l'écran est clair, clignote ou saute - tout est dû à ces caractères de contrôle à l'honneur. Vous pouvez expérimenter en exécutant head /dev/urandom Dans un nouveau terminal pour voir ce que je veux dire.

La plupart du temps, si votre terminal se comporte de façon bizarre de toute façon, il suffit de courir reset _ _ le réparera, en faisant écho à tous les caractères spéciaux nécessaires pour définir le terminal dans le mode par défaut de base - par exemple. Il y a un stop echoing input code et aussi un start echoing input code. Les données binaires ont inclus au hasard le premier, c'est pourquoi vous ne pouvez pas voir ce que votre dactylographie, et reset comprendra ce dernier (entre autres), ce qui le réparera.

7
GarethHumphriesAcc