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.




