Eu tentei comando cat
com um arquivo executável:
cat /bin/ls
Agora não consigo ler nenhuma palavra neste terminal (console Linux). Como posso corrigir isso?
Eu tentei comando cat
com um arquivo executável:
cat /bin/ls
Agora não consigo ler nenhuma palavra neste terminal (console Linux). Como posso corrigir isso?
Respostas:
Muitas vezes, em um terminal Unix / Linux (Bash), por exemplo, você usa os comandos more
ou less
ou cat
para exibir um arquivo. Quando você faz isso e o arquivo não deve ser visualizado (como /bin/ls
), você obtém uma saída como esta:
O que está acontecendo aqui é que você apenas tentou visualizar um arquivo que é um programa. Um executável que não deve ser visualizado com visualizadores padrão, como mencionei acima.
Para corrigir esse problema, você pode fazer o seguinte:
reset
e pressione returnIsso normalmente deve colocar seu terminal de volta em um modo mais normal. Vou mencionar mais uma coisa, quando você executar as etapas acima, digitando-as às cegas no seu terminal. Portanto, verifique se você está digitando corretamente.
Conforme sugerido nos comentários de @sendmoreinfo, você pode ter mais sorte usando os seguintes comandos, se o acima não funcionar:
$ stty sane
$ tput rs1
Aliás, se você encontrar um arquivo e não tiver certeza de que isso vai atrapalhar seu terminal, você pode inspecionar o arquivo usando o comando file
que informará o tipo de arquivo que ele é.
Por exemplo, com /bin/ls
esse arquivo mostra a seguinte saída:
$ 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ão é uma cura 100% para a loucura terminal. Tente stty sane
seguido por tput rs1
.
stty sane
mas nunca tput
.
reset
funcionou no meu caso
clear
também funciona para casos leves.
Eu tive uma ocasião em que nenhum dos truques habituais, reset
ou stty sane
, trabalhou (depois de acidentalmente chamar print
em um bytearray python). Eu tive sucesso com o método 2 listado neste blog útil .
Desde então, criei um alias mais útil:
alias fix='echo -e "\033c"'
echo -e "\033c"
me ajudou a limpar uma sessão de terminal de login SSH sem caracteres e misturada após a cat /etc/localtime
.
Nenhuma resposta anterior única funcionou para mim. Mas isso parecia fazer o truque no .bashrc add:
alias fix='reset; stty sane; tput rs1; clear; echo -e "\033c"'
e quando o problema ocorrer, digite isto (mesmo que você provavelmente não consiga vê-lo!)
(ctl-c, ctl-c, ctl-c)
fix
Muito obrigado aos autores anteriores. Além disso, como uma observação lateral, a razão pela qual seu terminal fica instável ao mostrar os arquivos executáveis (ou keystores, etc) é que esses arquivos geralmente contêm sequências binárias que são códigos de controle. Os códigos de controle podem fazer coisas aleatórias, como mudar para um conjunto de caracteres gráficos, definir cores de primeiro plano e plano de fundo para a mesma coisa, etc.
sane
tmux
os usuários podem enviar todos esses comandos para seu shell, mas a redefinição não é elevada ao tmux
painel.
Crie uma nova janela do tmux:
ctrl-B c
tmux list-panes
Anote o número do painel que você acha que está borked, normalmente 0
. Vamos chamá-loPPP
Selecione a janela do tmux, onde XXX
é o número da janela que é acionada, não necessariamente o mesmo que o número do painel.
ctrl-B XXX
tmux send-key -R -t PPP
Você verá todos os comandos nas outras respostas a esta pergunta que chegaram ao seu shell, mas não funcionaram! Talvez um cego tmux send-key -R -t PPP
funcione, mas não posso testar.
Eu tenho quase o mesmo alias que o post anterior, com uma pequena alteração (em tput reset
vez de rs1
) e um comando adicionado ( setterm -reset
):
alias clr='echo -e "\033c" ; stty sane; setterm -reset; reset; tput reset; clear'
Além de outras respostas que recomendam como redefinir o terminal, achei que a corrupção não pode ser evitada, a menos que seja adequadamente protegida. Então é melhor eu enviar a saída para um simples conversor de texto cat -v
:
docker logs myjenkinscontainer 2>&1 | cat -v
A visualização e edição de arquivos binários parece possível com hexdump -C
e vi -R
( :%!xxd -g1
para uma visualização hexadecimal e :%!xxd -g1 -r
para salvar alterações hexadecimais).
reset
.