Que comandos posso usar para redefinir e limpar meu terminal?

56

Eu tenho usado o comando:

reset

para limpar meu terminal. Embora eu tenha certeza de que isso não é o que eu deveria estar fazendo. Reset, como o nome sugere, redefine todo o seu terminal (muda muita coisa). Aqui está o que eu quero:

Eu basicamente quero usar o comando clear . No entanto, se você limpar e, em seguida, rolar para cima você ainda tem toneladas de coisas de antes. Em geral, isso não é um problema, mas estou olhando para logs brutos que são longos e quero ter certeza de que estou vendo apenas o mais recente. Eu sei que eu poderia usar more ou algo assim, mas eu prefiro essa abordagem.

    
por sixtyfootersdude 22.03.2010 / 21:56

12 respostas

51

O buffer de rolagem não é um recurso do bash, mas do programa do terminal. Você não disse qual terminal está usando.

Se você estiver usando o xterm, talvez seja possível limpar as linhas salvas fazendo eco no ESC-c para o terminal.

Isso pode ou não funcionar em qualquer programa terminal que você esteja usando.

No linux, isso provavelmente funcionará:

echo -e '
printf '33'
3343'

no FreeBSD echo não aceita -e, então você pode tentar:

echo -e '
printf '33'
3343'
    
por 23.03.2010 / 04:43
47

Use a ferramenta certa para cada trabalho:

  • Use clear para limpar a janela do terminal.

  • Use reset para redefinir seu terminal quando ele ficar confuso com seqüências de controle.

  • Use cat apenas quando quiser transmitir muitos dados de um lugar para outro sem interrupções .

  • Use um programa de pager como less ou most para visualizar páginas de saída.

  • Use tail -f /var/log/foo.log /var/log/bar.log para assistir vários arquivos de log diferentes.

    • Com o GNU tail , a opção -F é melhor porque pode continuar seguindo o arquivo mesmo quando um novo arquivo aparece em seu lugar, como é comum para arquivos de log.
por 23.03.2010 / 06:07
19

Apenas para fornecer a resposta técnica: reset reinicializa o terminal, como se ele fosse reaberto do zero. stty sane fará muita da mesma funcionalidade (sem o reset). Isso é o mesmo que ^L (Ctrl + L) (irrc) e tput clear . Apesar do que o post anterior (@grawity) disse, clear não gera um monte de novas linhas. Ele envia a redefinição de TERM , conforme definido em terminfo ou termcap , para mim, usando gnome-terminal (xterm), é o mesmo que o comando perl -e'print "[H[2J"' .

Se você quiser apenas limpar o buffer - em comparação com a redefinição do terminal inteiro, tente este tput reset . deve ser muito rápido e fazer o que você quiser. (Embora você realmente deveria estar lendo arquivos com less )

tput reset , envia o valor terminfo para reset - no meu terminal (xterm) é o mesmo que perl -e'print "c"'

    
por 23.03.2010 / 16:17
8

Outro terminal é o iTerm2, e ele tem uma seqüência de escape um pouco estranha usada para limpar o scrollback. Em um shell Bash, eu uso algo como:

echo -ne '3]50;ClearScrollback\a'

em um script. Então, basicamente, é um caractere ESC, seguido por " ]50;ClearScrollback " e, em seguida, um caractere BEL.

    
por 05.04.2013 / 13:31
8

Provavelmente, a melhor maneira de limpar tudo é usar a função do terminal:

  • Konsole: Ctrl + Deslocar + K Visualizar → Limpar a rolagem e redefinir
  • Terminal do GNOME: Editar → Redefinir e Limpar
  • PuTTY: Ctrl + clique com o botão direito do mouse em → Limpar Scrollback

Dessa forma, os dois buffers são limpos e o estado do terminal é redefinido para exatamente o que estava na inicialização (o que pode ou não ser o mesmo que usar reset ).

    
por 23.03.2010 / 16:59
3
less -W +F foo.log

+F é para "follow", semelhante a tail -f , mas permite rolar de volta também.

Todos os terminais baseados em vte (GNOME, Xfce, Roxterm) e KDE Konsole permitem que você use a roda de rolagem para rolar para dentro de less . Eu acho isso bastante conveniente.

Alternativa para clear :

perl -e 'print "\n"x512;'
xterm -e 'tail -f foo.log'
    
por 23.03.2010 / 15:57
3

No Mac OS X Terminal.app:

Ver - > Limpar Scrollback (ou comando - K )

    
por 02.02.2012 / 23:44
2

Não é um problema de "Bash". Depende do terminal que você usa. Por exemplo, eu uso "iterm2" com o macbook para conectar uma máquina Linux remota. Você pode usar "command + K" para limpar o buffer, ou no menu, escolha "Edit" - > "Clear Buffer".

    
por 15.04.2016 / 03:08
1

Para limpar a tela do console e o buffer de rolagem ao executar o PuTTY, isso funciona para mim:

echo -en "\ec\e[3J"

Isso é na verdade 2 sequências "Esc" que agem de forma independente ... elas podem ser usadas em qualquer ordem:

# clears the console screen, but not the scrollback buffer
# this is actually the escape code to "reset" the terminal
echo -en "\ec"

# clears the scrollback buffer, but not the console screen
# screen content remains, and cursor position remains at its last position
echo -en "\e[3J"

O uso de echo -en "\ec" , que redefine o terminal, pode alterar algumas das suas outras configurações de terminal. Em vez de "Reset", você poderia fazer isso:

# position the cursor to "Home" (Top Row, First Column)
echo -en "\e[H"

# Erase down: clear the screen from the cursor down to the bottom of the screen.
echo -en "\e[J"

# Note: this is supposed to clear the screen and position the cursor to home,
# but it didn't work like that for me. It cleared the entire screen (above and 
# below the cursor), but left the cursor at its last position.
echo -en "\e[2J"

# putting everything together
echo -en "\e[H\e[J\e[3J"

Você pode colocar isso em um shell script e funciona muito bem.

Caso haja algumas dependências do sistema:

Estou usando o PuTTY Connection Manager (versão 0.7.1 BETA (build 136)), com o PuTTY (versão 0.60).

Digitação:

echo \"$TERM\"; /bin/sh --version

relatórios:

"xterm"
GNU bash, version 4.1.2(1)-release-(x86_64-redhat-linux-gnu) ...
    
por 30.11.2013 / 03:20
1

Para limpar o buffer de tela para o hardware TTY no FreeBSD você pode usar o "vidcontrol - console de sistema de controle e utilitário de configuração" com parâmetro -C Limpar o buffer de histórico.

vidcontrol -C

o comando apagará todo o buffer de tela do console atual, acima do que você vê no momento. Você pode querer 'limpar' primeiro ou não - até você.

    
por 14.12.2015 / 17:23
0

Se você quiser ter certeza de que está vendo as entradas mais recentes em um arquivo de log, provavelmente é melhor usar tail em vez de clear / cat , que eu suponho que você esteja usando.

    
por 22.03.2010 / 21:57
0

Hmmm. Eu acho que se você está executando o konsole, você está sem sorte. Costumava ser que você poderia apenas "limpar a rolagem". O Konsole não deixa mais você fazer isso. Você tem que redefini-lo também, então ele mata qualquer programa que você estava executando. Eu acho que preciso de um novo programa de terminal ...

    
por 18.07.2010 / 20:07

Tags