Linux / Comando clear: limpar a tela do terminal

clear limpa a tela do terminal. Na implementação ncurses, também solicita a limpeza do buffer de rolagem quando há suporte; clear -x omite essa solicitação. O comando não apaga arquivos nem o histórico de comandos do shell.

O buffer de rolagem, ou scrollback, guarda saídas anteriores no emulador de terminal. Ele é diferente do histórico de comandos mantido pelo shell, o interpretador de comandos. Se esse histórico estiver ativo e o comando tiver sido registrado, você poderá recuperá-lo com a seta para cima ou history; isso não recupera automaticamente a saída que ele produziu.

O que é o comando clear?

clear lê o tipo de terminal na variável de ambiente TERM e consulta terminfo, a base de descrições das capacidades de terminais. Em seguida, escreve sequências de controle na saída padrão. Não é apenas uma série de linhas em branco: o efeito depende da descrição e do terminal que recebe esses bytes.

As opções abaixo são da implementação ncurses. Confirme sua versão com clear -V e consulte o manual local se usar outra implementação. A referência de comandos Linux em português reúne outras ferramentas para trabalhar no terminal.

Sintaxe básica

clear [-x] [-T tipo-de-terminal]
clear -V

O bloco anterior apresenta as formas de uso: colchetes e o campo tipo-de-terminal são notação, não texto a copiar literalmente. Para limpar um terminal corretamente configurado, execute apenas a linha abaixo. A tela deve ficar limpa e o cursor voltar ao início, conforme as capacidades do terminal.

clear

O que clear limpa e o que preserva

Alvo Ação
Tela atual do terminal Limpa a tela e move o cursor para a posição inicial.
Buffer de rolagem Se o terminal e o ncurses suportarem os recursos relevantes, a execução padrão tentará limpá-lo. Você pode impedir esse comportamento com -x.
Histórico de comandos do shell Não apaga. history e a seta para cima consultam comandos registrados, quando esse recurso está ativo.
Dados e arquivos de saída Não afeta arquivos de log ou dados gerados pelos comandos.
Variáveis de shell e diretório atual Não muda.

Omitir a limpeza da rolagem com -x

clear -x

-x limpa a tela sem solicitar a limpeza do buffer de rolagem. Isso ajuda a manter o conteúdo que o emulador já guardava para rolar para trás. Não garante que todas as linhas da tela que acabou de ser limpa serão arquivadas ou poderão ser recuperadas: essa parte depende do emulador.

Essa opção pertence ao clear do ncurses e pode não existir em outras implementações. Se uma saída precisar ser preservada, grave-a antes em um arquivo ou log pelo mecanismo do programa que a produz; não use o buffer visual como única cópia.

Especificar o tipo de terminal com -T

clear -T xterm-256color

Normalmente, TERM já informa o tipo correto e -T é desnecessário. O valor xterm-256color acima é um exemplo de entrada terminfo; não é uma correção universal. Consulte o valor atual e a descrição disponível com as duas linhas abaixo. infocmp imprime a descrição e suas capacidades, não um teste de compatibilidade do emulador.

printf '%s\n' "$TERM"
infocmp "$TERM"

Uma descrição ausente faz a consulta falhar. Uma descrição existente, porém incompatível com o terminal real, pode produzir efeitos incorretos. Ajuste o tipo enviado pelo cliente ou a base terminfo necessária em vez de escolher um valor só para silenciar o erro.

Resumo das opções

Opção Descrição
-x A ação para limpar o buffer de rolagem é omitida.
-T tipo Usa as informações de funcionalidade do tipo de terminal especificado em vez de TERM.
-V Exibe a versão vinculada do ncurses e sai.

Diferença entre Ctrl+L e clear

No modo de edição Emacs padrão do Readline, a biblioteca de edição de linha usada pelo Bash, Ctrl+L chama clear-screen: limpa a tela e redesenha a linha atual no topo. Isso não executa o programa clear e pode ser remapeado nas configurações de teclado. A documentação do Readline sobre movimento e limpeza de tela distingue essa ação de clear-display, que também tenta limpar o buffer de rolagem.

Método Vantagens Recursos
clear Usa informações de funcionalidade do terminal e permite a seleção de opções. Pode solicitar também o apagamento do buffer de rolagem, conforme implementação e suporte.
clear -x Limpa a tela sem solicitar o apagamento do buffer de rolagem. É uma opção na implementação ncurses.
Ctrl+L Pode ser executado rapidamente a partir do teclado enquanto se digita. O comportamento pode variar dependendo das configurações de edição de linha do shell e do terminal.

Diferença entre clear e reset

clear organiza a tela de um terminal que está funcionando normalmente. reset, normalmente fornecido por tset no ncurses, também tenta restaurar modos do terminal, como eco de caracteres e tratamento de linhas, além de emitir sequências de reinicialização. Ele pode ajudar quando uma saída binária ou sequência incorreta deixou a exibição ou a entrada em estado inadequado.

reset

Use clear para uma tela cheia de texto e reset para tentar corrigir um terminal desconfigurado. Se o eco estiver desativado, talvez seja necessário digitar reset e pressionar Enter mesmo sem ver os caracteres. Isso não reinicia o computador, não restaura uma conexão SSH perdida e não desfaz arquivos modificados por outros comandos.

Limpar a tela com tput

tput consulta terminfo para emitir capacidades ou obter informações do terminal. A forma abaixo solicita a limpeza da tela. Nas versões atuais do ncurses, tput clear também pode solicitar a limpeza do buffer de rolagem; não é uma alternativa que necessariamente o preserva.

tput clear

Em versões do ncurses que oferecem essa opção, tput -x clear omite a solicitação de limpeza do buffer de rolagem. Confirme o suporte na sua instalação. Tanto clear quanto tput clear podem escrever bytes de controle em um arquivo ou pipe se a saída for redirecionada; isso não significa que o arquivo foi “limpo”. Se o redirecionamento criar ou sobrescrever um arquivo, essa é uma ação do shell.

Usar em scripts

Reserve a limpeza programática para interfaces que precisam redesenhar a tela. Em scripts de processamento e coleta de logs, ela pode esconder diagnósticos ou inserir controles na saída. O trecho seguinte só chama clear quando o descritor 1, a saída padrão, é um terminal; em um pipe ou arquivo, ele pula a chamada.

if test -t 1; then
  clear
fi

test -t 1 verifica apenas a conexão da saída: não comprova que TERM esteja correta, que a entrada terminfo exista ou que clear esteja disponível. Uma chamada nesse ramo ainda pode falhar. Para atualizações periódicas, o comando watch pode ser mais adequado; interfaces completas podem usar bibliotecas de terminal.

Solução de problemas

Variável de ambiente TERM não definida

Uma mensagem como TERM environment variable not set indica que o processo não recebeu TERM. A linha abaixo mostra o valor expandido pelo shell; uma linha vazia pode indicar valor ausente ou vazio. Um trabalho não interativo não é necessariamente anormal: muitas vezes ele simplesmente não precisa de controle de tela.

printf '%s\n' "$TERM"

Confirme se existe um terminal real e se o cliente SSH, o contêiner ou o serviço transmite o tipo correto quando isso é necessário. Uma tarefa agendada sem terminal geralmente deve deixar de chamar clear, em vez de inventar um valor para TERM.

Tipo de terminal desconhecido

A mensagem unknown terminal type pode indicar que não há uma entrada para o valor recebido. Consulte infocmp "$TERM" e a configuração do cliente. Instale o pacote de descrições adequado à distribuição ou selecione uma entrada realmente compatível com o terminal; os nomes dos pacotes variam entre sistemas.

A saída anterior continua na rolagem

O emulador ou a entrada terminfo pode não oferecer a limpeza do buffer de rolagem, ou sua implementação pode tratar apenas a tela. Em ncurses, essa solicitação usa a capacidade estendida E3. A ausência desse efeito não informa se o histórico de comandos do Bash foi alterado, pois são recursos diferentes.

Perguntas frequentes

clear apaga o histórico de comandos do Bash?

O comando clear altera a exibição do terminal, mas não apaga o histórico de comandos do Bash. A exclusão do histórico é feita por funções e configurações separadas do history.

Como evitar a limpeza do buffer de rolagem?

No clear do ncurses, use clear -x. Isso evita solicitar o apagamento do buffer de rolagem; a preservação e a recuperação das linhas visíveis ainda dependem do emulador. Confira o suporte da implementação instalada.

clear remove arquivos?

O programa clear do ncurses escreve controles de terminal, sem remover arquivos. Se o nome tiver outro comportamento, consulte type -a clear para verificar se há um alias ou uma função com esse nome; o guia de type explica como interpretar os candidatos.

Documentação oficial