Na verdade eu acho que a resposta está aqui são melhores, então é melhor marca como dup para o outro lado
ilkkachu
Respostas:
165
Muitas vezes, em um terminal Unix / Linux (Bash), por exemplo, você usa os comandos moreou lessou catpara 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.
método # 1 - redefinir
Para corrigir esse problema, você pode fazer o seguinte:
Pressione Control + C algumas vezes ( Ctrl+ C)
Digite o comando resete pressione return
Isso 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.
método # 2 - stty sane
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
determinando o tipo de um arquivo
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 fileque informará o tipo de arquivo que ele é.
Por exemplo, com /bin/lsesse arquivo mostra a seguinte saída:
resetnão é uma cura 100% para a loucura terminal. Tente stty saneseguido por tput rs1.
sendmoreinfo
@sendmoreinfo - obrigado Adicionei sua sugestão à resposta. Eu tinha usado, stty sanemas nunca tput.
Slm
1
na verdade, preciso pesquisar mais isso. reset deve enviar uma string rs1. Um bom teste (pelo menos para o xterm) é tornar o cursor invisível e ver se a redefinição o traz de volta.
sendmoreinfo
4
resetfuncionou no meu caso
code_monk 8/03/2015
1
cleartambém funciona para casos leves.
Navin
36
Eu tive uma ocasião em que nenhum dos truques habituais, resetou stty sane, trabalhou (depois de acidentalmente chamar printem um bytearray python). Eu tive sucesso com o método 2 listado neste blog útil .
Eu sei que isso é antigo, mas esta é a única resposta acima que funcionou para mim! Graças
jredd
Isso 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.
Pro Backup
Isso funcionou com o OpenBSD, quando todos os outros não.
DHW
1
uma experimentação adicional com a tela (1) encontrou a remoção forçada de todas as sessões (-D) e a emissão dos comandos de reinicialização na tela do terminal subjacente foi executada, o que poderia resolver o problema. também pode ser necessário renomear nomes de janelas corrompidos que podem exibir novamente os mesmos dados binários no terminal, causando a corrupção (e redefinindo novamente).
math
1
O tamanho do meu terminal (LINES) foi reduzido pela metade após o uso do vi durante a conexão ao console de um host remoto do linux via SOL. A sessão remota teve LINES = 24 enquanto minha sessão local do MAC teve LINES = 51. echo -e "\ 033c" funcionou para mim, mas nenhuma das outras correções que tentei ('stty sane', tput rs1, tput sgr0, redefinição).
Mark
7
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.
O mesmo aconteceu. Nada funcionou para mim, apenas esta combinação ...
TrueY
1
Liguei para meusane
qodeninja 16/03
4
tmuxos usuários podem enviar todos esses comandos para seu shell, mas a redefinição não é elevada ao tmuxpainel.
Crie uma nova janela do tmux:
ctrl-B ctmux 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 XXXtmux 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 PPPfuncione, mas não posso testar.
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 -Ce vi -R( :%!xxd -g1para uma visualização hexadecimal e :%!xxd -g1 -rpara salvar alterações hexadecimais).
reset
.Respostas:
Muitas vezes, em um terminal Unix / Linux (Bash), por exemplo, você usa os comandos
more
ouless
oucat
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.
método # 1 - redefinir
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.
método # 2 - stty sane
Conforme sugerido nos comentários de @sendmoreinfo, você pode ter mais sorte usando os seguintes comandos, se o acima não funcionar:
determinando o tipo de um arquivo
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:fonte
reset
não é uma cura 100% para a loucura terminal. Tentestty sane
seguido portput rs1
.stty sane
mas nuncatput
.reset
funcionou no meu casoclear
também funciona para casos leves.Eu tive uma ocasião em que nenhum dos truques habituais,
reset
oustty sane
, trabalhou (depois de acidentalmente chamarprint
em um bytearray python). Eu tive sucesso com o método 2 listado neste blog útil .Desde então, criei um alias mais útil:
fonte
echo -e "\033c"
me ajudou a limpar uma sessão de terminal de login SSH sem caracteres e misturada após acat /etc/localtime
.Nenhuma resposta anterior única funcionou para mim. Mas isso parecia fazer o truque no .bashrc add:
e quando o problema ocorrer, digite isto (mesmo que você provavelmente não consiga vê-lo!)
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.
fonte
sane
tmux
os usuários podem enviar todos esses comandos para seu shell, mas a redefinição não é elevada aotmux
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, normalmente0
. 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.fonte
Eu tenho quase o mesmo alias que o post anterior, com uma pequena alteração (em
tput reset
vez ders1
) e um comando adicionado (setterm -reset
):fonte
Nada acima me ajudou. No entanto, Jack Wasey mencionou o tmux, então eu apenas corri
tmux
, saí novamente e tudo voltou ao normal.fonte
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
:A visualização e edição de arquivos binários parece possível com
hexdump -C
evi -R
(:%!xxd -g1
para uma visualização hexadecimal e:%!xxd -g1 -r
para salvar alterações hexadecimais).fonte