O que você deseja é digitar CTRL + L em vez de clear
.
Isso enviará um "Feed de formulário" para o terminal. Basicamente, ele moverá tudo para cima na altura da janela do terminal, limpando a tela sem afetar sua rolagem.
Inicialmente, achei que a rolagem Ilimitada não estava funcionando com o aplicativo terminal no 16.04. Eu tenho a opção "limite de rolagem para" desmarcada. Algumas vezes ele rola de volta algumas vezes isso não acontece. Então percebi que não rola para trás quando eu uso o comando clear
. Ele rola de volta apenas um scree.
Eu uso bastante clear (quase uma vez em cada 3 comandos).
A página man para pontos claros para terminfo. Existem algumas opções no terminfo, mas não consigo encontrar um arquivo de configuração onde eu possa definir as opções. Todos os arquivos em / lib / terminfo / de onde clear parece estar lendo sua configuração estão em formato compilado e eu não os entendo.
Eu não vi esse problema antes com 14.04 (adivinhação).
Qualquer ajuda é muito apreciada.
Obrigado.
O que você deseja é digitar CTRL + L em vez de clear
.
Isso enviará um "Feed de formulário" para o terminal. Basicamente, ele moverá tudo para cima na altura da janela do terminal, limpando a tela sem afetar sua rolagem.
Isso me levou um tempo para descobrir, então acho que devo compartilhar como consegui que isso funcionasse.
Se você digitar "man clear", verá que o manual indica:
clear clears your screen if this is possible, including its scrollback buffer (if the extended "E3" capability is defined).
Vamos remover esse recurso do E3:
Primeiro, descubra o tipo do seu terminal:
echo $TERM
Para mim, isso resultou em "xterm-256color". Seja o que for, lembre-se disso.
Agora digite o comando:
infocmp -x xterm-256color > tempfile
Onde você obviamente substitui o xterm-256color pela saída do primeiro comando. Isto irá mostrar os recursos estendidos para este tipo de terminal em 'tempfile'.
Agora edite esse arquivo recém-criado. Você está procurando:
E3=\E[3J,
Encontre isso e apenas remova-o. A coisa toda, então se parecesse:
...
Cs=\E]12;%p1%s ...
Cs=\E]12;%p1%ssudo tic -x tempfile
7,
Ms=\E]52;%p1%s;%p2%secho $TERM
7, Se=\E[2 q, Ss=\E[%p1%d q,
...
7, E3=\E[3J,
Ms=\E]52;%p1%s;%p2%sinfocmp -x xterm-256color > tempfile
7, Se=\E[2 q, Ss=\E[%p1%d q,
...
Agora deve parecer:
E3=\E[3J,
Salve o arquivo. E do seu terminal execute:
...
Cs=\E]12;%p1%s ...
Cs=\E]12;%p1%ssudo tic -x tempfile
7,
Ms=\E]52;%p1%s;%p2%s%pre%7, Se=\E[2 q, Ss=\E[%p1%d q,
...
7, E3=\E[3J,
Ms=\E]52;%p1%s;%p2%s%pre%7, Se=\E[2 q, Ss=\E[%p1%d q,
...
Isso carregará seu terminfo modificado e o armazenará. reinicie seu terminal e limpe agora não deve mais remover o scrollbuffer
Esta resposta se baseia na resposta da arraia (sobre a qual ele fez um bom trabalho) e pretende completá-la.
1 - Para limpar sem perder a rolagem, digite o seguinte comando no console (não é necessário usar o python como sugerido na resposta da stringray):
printf '[H[2J'
2 - Para evitar ter que memorizar isso, você pode editar seu arquivo .bashrc para criar um alias para ele. Eu chamaria o alias de claro. No bash, digite:
nano ~/.bashrc
E adicione esta linha no final:
alias clean="printf '[H[2J'"
Também gosto de adicionar div (para divisor):
alias div='echo;echo "------------------------------------------------------------------------------";echo;echo;echo;echo;echo;echo;echo;echo;echo;echo;echo;echo "------------------------------------------------------------------------------";clean'
Isso faz com que, quando você faz o comando div, ele insira dois divisores com 10 novas linhas entre eles, seguidos de um comando clean. Isso fará com que, quando você estiver rolando de volta, você saiba exatamente onde você usou div.
Você pode alterar o comportamento do sudo bash fazendo sudo su antes do procedimento listado.
Eu recomendaria isso sobre a resposta do bashBedlam ao usar tic, como editando .bashrc:
1) não requer privilégios de sudo e pode ser facilmente levado em qualquer lugar.
2) afeta apenas o seu usuário (nem todos os usuários vão querer a função de limpeza modificada)
3) sobreviverá às atualizações que normalmente não tocam no bashrc
@heemayl e @bashBedlam Obrigado.
CTRL + L faz o que eu quero. Mas eu estou acostumado a digitar claramente o tempo todo. Então eu meio que trabalhei em torno dele copiando / lib / xterm / x / {xterm, xterm-256color} do Ubuntu 12.04. Existe uma variável de ambiente denominada $ TERM que armazena esse arquivo.
Então eu li sua resposta e tentei CTRL + L e funcionou. Fiquei curioso e estava tentando ver se eu posso colocar CTRL + L em um script e não tenho onde. Então eu lembrei que Strace poderia me dar o que eu quero. Então eu corri strace clear
e achei que ele escreve "\ 33 [H \ 33 [2J" para limpar a tela. Então eu escrevi um oneliner python
print ("\ 33 [H \ 33 [2J") e coloque-o em um arquivo e adicione um link chamado clear para apontar para ele. Tem 2 soluções alternativas agora.
Ainda estou curioso para saber como os arquivos terminológicos podem ser lidos e alterados.
Obrigado novamente.