Como resolver o problema que uma tela do Terminal está desarrumada? (geralmente após um redimensionamento)

60

Às vezes, uma tela do terminal está desarrumada e, quando usamos man ls para ler as páginas de manual ou pressionamos a seta para cima para ir para os comandos anteriores do histórico, a tela mostrará os caracteres não como o lugar certo. (por exemplo, trate o final da tela como algum no meio da tela).

O comando reset é tentado e não funcionaria. Uma maneira de trabalhar é sair ou fechar a janela e redimensionar a janela primeiro e, em seguida, fazer ssh (ou fechar essa guia, redimensionar a janela e, em seguida, abrir uma nova guia para obter um novo shell). / p>

Mas, desta forma, perderemos tudo o que fizemos anteriormente, como iniciar um console de máquina virtual etc. Então, se não fecharmos o shell, existe uma maneira de corrigir esse problema?

(isso aconteceu antes mesmo dentro do Fedora, e também por um Macbook ssh em uma caixa RHEL 5.4).

Atualização: Eu lembro agora como isso aconteceu no Fedora: eu abri um Terminal e fiz um FreeVM para usar um console de uma Máquina Virtual (um shell). Eu acho que era tamanho 80 x 25 e depois de um tempo, eu redimensionei o Terminal para 130 x 50 aproximadamente, e então o "inner shell" (da VM) começou a se comportar de maneira estranha.

    
por 太極者無極而生 17.01.2013 / 05:55

7 respostas

75

Se você estiver usando o bash, verifique se a opção "checkwinsize" está ativada em sua sessão usando

shopt | grep checkwinsize

Se você não conseguir

checkwinsize    on

depois, ative-o com

shopt -s checkwinsize

A documentação do Bash diz para o atributo "checkwinsize":

"If set, Bash checks the window size after each command and, if necessary, updates the values of LINES and COLUMNS."

Se você gostar da configuração, poderá ativar checkwinsize no seu ~/.bashrc .

  • Para ativar: shopt -s checkwinsize
  • Para desativar: shopt -u checkwinsize
por 17.01.2013 / 11:29
17

Você pode tentar Ctrl + L . Ele limpa e / ou redesenha a tela do terminal, dependendo do programa.

    
por 17.01.2013 / 06:49
7

Eu tive o mesmo problema e nenhuma das receitas acima funcionou para mim porque acredito que meu bash nunca recebe os sinais SIGWINCH , que são capturados pelo processo pai.

Eu finalmente encontrei uma solução. Eu adicionei ao meu .bashrc :

export PROMPT_COMMAND="resize &>/dev/null ; $PROMPT_COMMAND"

Agora, toda vez que recebo um novo aviso, minha janela é reajustada.

Agradecemos a UKmonkey pela melhoria do PROMPT_COMMAND.

    
por 19.01.2017 / 12:10
7

adicionar essas opções ao docker exec pareceu resolver meu problema

-e COLUMNS=$COLUMNS -e LINES=$LINES -e TERM=$TERM
    
por 15.03.2018 / 07:57
4

Eu enfrento o mesmo problema de tempos em tempos usando o zsh no macOS. Uma simples invocação do comando reset configura o terminal para o meu gosto novamente.

    
por 04.04.2017 / 05:58
3

Eu só queria adicionar ao que Arcadien já havia mencionado. A habilitação checkwinsize faz o truque, mas para mim, o que era necessário era redefinir o tamanho da janela para que ela funcionasse corretamente. Eu acho que o checkwinsize foi feito para eliminar isso, mas ainda assim, vale um tiro. Apenas tente alterar o tamanho da janela ou maximizá-la e maximizá-la para postar essa opção.

    
por 14.11.2014 / 07:27
2

Eu tive o mesmo problema que você e é isso que eu fiz:
Eu tenho uma configuração de .profile no meu usuário, então é aí que faço todas as minhas alterações.

Existe um pacote chamado xterm , que está disponível em apt-get e não sei sobre yum . Mas eu fiz uma instalação local a partir do código-fonte, pois não tenho privilégios de instalação. LINK: link

./configure --prefix=/the/path/you/want/to/install/to
make
make install

Eu exportei o caminho no meu perfil e o invoquei no mesmo local

export PATH=$PATH:/the/path/you/want/to/install/to
resize

Portanto, toda vez que eu fizer login, o tamanho do terminal será ajustado de acordo com o tamanho.

    
por 01.10.2015 / 12:06

Tags