En fait, je pense que la réponse est meilleure ici, alors mieux vaut marquer comme dupe dans l'autre sens
ilkkachu
Réponses:
165
Souvent, dans un terminal Unix / Linux (Bash), par exemple, vous utilisez les commandes moreou lessou catpour afficher un fichier. Lorsque vous effectuez cette opération et que le fichier n'est pas destiné à être visualisé (tel que /bin/ls), vous obtenez une sortie comme celle-ci:
Ce qui se passe ici, c'est que vous venez d'essayer de visualiser un fichier qui est un programme. Un exécutable qui n'est pas destiné à être visionné avec des visualiseurs standard, comme mentionné ci-dessus.
méthode n ° 1 - réinitialiser
Pour résoudre ce problème, vous pouvez procéder comme suit:
Hit Control + C à quelques reprises ( Ctrl+ C)
Tapez la commande resetet appuyez sur Entrée
Cela devrait généralement remettre votre terminal dans un mode plus normal. Je mentionnerai encore une chose, lorsque vous suivrez les étapes ci-dessus, vous les taperez en aveugle dans votre terminal. Assurez-vous simplement que vous le tapez correctement.
méthode n ° 2 - stty sane
Comme suggéré dans les commentaires de @sendmoreinfo, vous aurez peut-être plus de chance en utilisant les commandes suivantes si celles-ci ne fonctionnent pas:
$ stty sane
$ tput rs1
déterminer un type de fichier
Incidemment, si vous tombez sur un fichier et que vous ne savez pas si cela va gâcher votre terminal, vous pouvez inspecter le fichier à l'aide de la commande filequi vous indiquera le type de fichier qu'il contient.
Par exemple, avec /bin/lsce fichier affiche la sortie suivante:
resetn'est pas un remède à 100% contre la folie terminale. Essayez stty sanesuivi par tput rs1.
sendmoreinfo
@sendmoreinfo - merci, j'ai ajouté votre suggestion à la réponse. J'avais utilisé stty sanemais jamais tput.
slm
1
en fait, j'ai besoin de faire plus de recherches à ce sujet. reset est supposé envoyer une chaîne rs1. Un bon test (pour xterm, au moins) est de rendre le curseur invisible et de voir si reset le ramène.
sendmoreinfo
4
reseta travaillé dans mon cas
code_monk
1
clearfonctionne également pour les cas bénins.
Navin
36
J'ai eu une occasion où aucune des astuces habituelles, resetou n'a stty sanefonctionné (après avoir appelé accidentellement printun bytearray de python). J'ai eu du succès avec la méthode 2 indiquée sur ce blog utile .
Je sais que c'est vieux, mais c'est la seule réponse ci-dessus qui a fonctionné pour moi! Merci
jredd
Cela echo -e "\033c"m'a aidé à nettoyer une session de terminal de connexion SSH déformée qui a été mélangée après un cat /etc/localtime.
Pro Backup
Cela fonctionnait avec OpenBSD, contrairement à tous les autres.
DHW
1
une expérimentation plus poussée avec screen (1) a révélé que le détachage forcé de toutes les sessions (-D), puis l’envoi des commandes de réinitialisation à l’écran du terminal sous-jacent exécuté, pouvaient résoudre le problème. peut également avoir besoin de renommer des noms de fenêtres endommagés susceptibles d'afficher à nouveau les mêmes données binaires sur le terminal, entraînant leur corruption (puis leur réinitialisation).
maths
1
La taille de mon terminal (LINES) a été réduite d'environ la moitié après l'utilisation de vi lors de la connexion à la console d'un hôte linux distant via SOL. La session distante avait LINES = 24 alors que ma session MAC locale avait LINES = 51. echo -e "\ 033c" a fonctionné pour moi, mais aucun des autres correctifs que j'ai essayés ne l’a fait ("stty sane", tput rs1, tput sgr0, reset).
Mark
7
Aucune réponse préalable n'a fonctionné pour moi. Mais cela semblait faire l'affaire dans .bashrc ajoute:
alias fix='reset; stty sane; tput rs1; clear; echo -e "\033c"'
et puis quand le problème survient, tapez ceci (même si vous ne pouvez probablement pas le voir!)
(ctl-c, ctl-c, ctl-c)
fix
Merci beaucoup aux auteurs précédents. De plus, en guise de remarque, si votre terminal ne se montre pas optimiste lors de l'affichage de ces fichiers exécutables (ou magasins de clés, etc.), ces fichiers contiennent souvent des séquences binaires qui sont des codes de contrôle. Les codes de contrôle peuvent effectuer des opérations aléatoires, telles que basculer vers un jeu de caractères graphiques, définir les mêmes couleurs pour le premier plan et l'arrière-plan, etc.
Même arrivé. Rien n'a fonctionné pour moi, juste ce combo ...
TrueY
1
J'ai appelé monsane
qodeninja
4
tmuxles utilisateurs peuvent peut-être envoyer toutes ces commandes dans leur shell, mais la réinitialisation n'est pas élevée dans le tmuxvolet.
Créer une nouvelle fenêtre tmux:
ctrl-B ctmux list-panes
Notez généralement le numéro de la sous-fenêtre que vous pensez être bouché 0. Appelons çaPPP
Sélectionnez la fenêtre tmux, où XXXest le numéro de la fenêtre qui est borkée, pas nécessairement le même que le numéro du volet.
ctrl-B XXXtmux send-key -R -t PPP
Vous verrez alors toutes les commandes dans les autres réponses à cette question qui a été insérée dans votre shell, mais n'a pas fonctionné! Peut-être qu'un aveugle tmux send-key -R -t PPPfonctionnera, mais je ne peux pas tester.
J'ai presque le même alias que le post précédent, avec une petite modification ( tput resetau lieu de rs1) et une commande supplémentaire ( setterm -reset):
Rien ci-dessus m'a aidé. Cependant, Jack Wasey a mentionné tmux, alors je me suis précipité tmux, je suis sorti à nouveau et tout était rentré dans l'ordre.
En plus d’autres réponses vous indiquant comment réinitialiser le terminal, j’ai pensé que la corruption ne pouvait être évitée que si elle était bien gardée. Il est donc préférable d’envoyer la sortie à un simple convertisseur de texte cat -v:
docker logs myjenkinscontainer 2>&1 | cat -v
La visualisation et l'édition de fichiers binaires semblent possibles avec hexdump -Cet vi -R( :%!xxd -g1pour une vue hexadécimale et :%!xxd -g1 -rpour l'enregistrement des modifications hexadécimales).
reset
.Réponses:
Souvent, dans un terminal Unix / Linux (Bash), par exemple, vous utilisez les commandes
more
ouless
oucat
pour afficher un fichier. Lorsque vous effectuez cette opération et que le fichier n'est pas destiné à être visualisé (tel que/bin/ls
), vous obtenez une sortie comme celle-ci:Ce qui se passe ici, c'est que vous venez d'essayer de visualiser un fichier qui est un programme. Un exécutable qui n'est pas destiné à être visionné avec des visualiseurs standard, comme mentionné ci-dessus.
méthode n ° 1 - réinitialiser
Pour résoudre ce problème, vous pouvez procéder comme suit:
reset
et appuyez sur EntréeCela devrait généralement remettre votre terminal dans un mode plus normal. Je mentionnerai encore une chose, lorsque vous suivrez les étapes ci-dessus, vous les taperez en aveugle dans votre terminal. Assurez-vous simplement que vous le tapez correctement.
méthode n ° 2 - stty sane
Comme suggéré dans les commentaires de @sendmoreinfo, vous aurez peut-être plus de chance en utilisant les commandes suivantes si celles-ci ne fonctionnent pas:
déterminer un type de fichier
Incidemment, si vous tombez sur un fichier et que vous ne savez pas si cela va gâcher votre terminal, vous pouvez inspecter le fichier à l'aide de la commande
file
qui vous indiquera le type de fichier qu'il contient.Par exemple, avec
/bin/ls
ce fichier affiche la sortie suivante:la source
reset
n'est pas un remède à 100% contre la folie terminale. Essayezstty sane
suivi partput rs1
.stty sane
mais jamaistput
.reset
a travaillé dans mon casclear
fonctionne également pour les cas bénins.J'ai eu une occasion où aucune des astuces habituelles,
reset
ou n'astty sane
fonctionné (après avoir appelé accidentellementprint
un bytearray de python). J'ai eu du succès avec la méthode 2 indiquée sur ce blog utile .J'ai depuis créé un alias très utile:
la source
echo -e "\033c"
m'a aidé à nettoyer une session de terminal de connexion SSH déformée qui a été mélangée après uncat /etc/localtime
.Aucune réponse préalable n'a fonctionné pour moi. Mais cela semblait faire l'affaire dans .bashrc ajoute:
et puis quand le problème survient, tapez ceci (même si vous ne pouvez probablement pas le voir!)
Merci beaucoup aux auteurs précédents. De plus, en guise de remarque, si votre terminal ne se montre pas optimiste lors de l'affichage de ces fichiers exécutables (ou magasins de clés, etc.), ces fichiers contiennent souvent des séquences binaires qui sont des codes de contrôle. Les codes de contrôle peuvent effectuer des opérations aléatoires, telles que basculer vers un jeu de caractères graphiques, définir les mêmes couleurs pour le premier plan et l'arrière-plan, etc.
la source
sane
tmux
les utilisateurs peuvent peut-être envoyer toutes ces commandes dans leur shell, mais la réinitialisation n'est pas élevée dans letmux
volet.Créer une nouvelle fenêtre tmux:
ctrl-B c
tmux list-panes
Notez généralement le numéro de la sous-fenêtre que vous pensez être bouché0
. Appelons çaPPP
Sélectionnez la fenêtre tmux, où
XXX
est le numéro de la fenêtre qui est borkée, pas nécessairement le même que le numéro du volet.ctrl-B XXX
tmux send-key -R -t PPP
Vous verrez alors toutes les commandes dans les autres réponses à cette question qui a été insérée dans votre shell, mais n'a pas fonctionné! Peut-être qu'un aveugle
tmux send-key -R -t PPP
fonctionnera, mais je ne peux pas tester.la source
J'ai presque le même alias que le post précédent, avec une petite modification (
tput reset
au lieu ders1
) et une commande supplémentaire (setterm -reset
):la source
Rien ci-dessus m'a aidé. Cependant, Jack Wasey a mentionné tmux, alors je me suis précipité
tmux
, je suis sorti à nouveau et tout était rentré dans l'ordre.la source
En plus d’autres réponses vous indiquant comment réinitialiser le terminal, j’ai pensé que la corruption ne pouvait être évitée que si elle était bien gardée. Il est donc préférable d’envoyer la sortie à un simple convertisseur de texte
cat -v
:La visualisation et l'édition de fichiers binaires semblent possibles avec
hexdump -C
etvi -R
(:%!xxd -g1
pour une vue hexadécimale et:%!xxd -g1 -r
pour l'enregistrement des modifications hexadécimales).la source