J'avais essayé la commande cat
avec un fichier exécutable:
cat /bin/ls
Maintenant, je ne peux lire aucun mot dans ce terminal (console Linux). Comment puis-je le réparer?
J'avais essayé la commande cat
avec un fichier exécutable:
cat /bin/ls
Maintenant, je ne peux lire aucun mot dans ce terminal (console Linux). Comment puis-je le réparer?
Réponses:
Souvent, dans un terminal Unix / Linux (Bash), par exemple, vous utilisez les commandes more
ou less
ou cat
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.
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.
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
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:
$ file /bin/ls
/bin/ls: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, stripped
reset
n'est pas un remède à 100% contre la folie terminale. Essayez stty sane
suivi par tput rs1
.
stty sane
mais jamais tput
.
reset
a travaillé dans mon cas
clear
fonctionne également pour les cas bénins.
J'ai eu une occasion où aucune des astuces habituelles, reset
ou n'a stty sane
fonctionné (après avoir appelé accidentellement print
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:
alias fix='echo -e "\033c"'
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
.
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.
sane
tmux
les utilisateurs peuvent peut-être envoyer toutes ces commandes dans leur shell, mais la réinitialisation n'est pas élevée dans le tmux
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.
J'ai presque le même alias que le post précédent, avec une petite modification ( tput reset
au lieu de rs1
) et une commande supplémentaire ( setterm -reset
):
alias clr='echo -e "\033c" ; stty sane; setterm -reset; reset; tput reset; clear'
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 -C
et vi -R
( :%!xxd -g1
pour une vue hexadécimale et :%!xxd -g1 -r
pour l'enregistrement des modifications hexadécimales).
reset
.