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.
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
.
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"'
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.