Como limpo o histórico do terminal Gnome?


59

Quando usamos o clearcomando ou Ctrl+ Lno terminal, ele limpa o terminal, mas ainda podemos voltar para exibir os últimos comandos usados. Existe uma maneira de limpar completamente o terminal?


É dependente do terminal, e nenhuma das respostas aborda isso.
Thomas Dickey

Respostas:


69

Você pode usar tput reset.

Além resete tput resetvocê pode usar o seguinte script de shell.

#!/bin/sh
echo -e \\033c

Isso envia caracteres de controle Esc-Cpara o console que redefine o terminal.

Palavras-chave do Google: Sequências de controle do console Linux

man console_codes diz:

A sequência ESC c causa uma redefinição do terminal, que é o que você deseja se a tela estiver toda distorcida. O frequentemente recomendado "eco ^ V ^ O" tornará apenas G0 atual, mas não há garantia de que G0 aponte na tabela a). Em algumas distribuições, há uma reinicialização do programa (1) que apenas "ecoa ^ [c". Se sua entrada terminfo para o console estiver correta (e tiver uma entrada rs1 = \ Ec), "tput reset" também funcionará.


1
Qual é a diferença entre reset e reset de tput?
Toothrot

tput reseté mais rápido do que resetno Ubuntu 16.04, pelo menos
Iván Rodríguez Torres

5
-1, você ainda pode ver o buffer se você rolar para cima
João Pimentel Ferreira

15

Você pode usar o resetcomando que redefinirá as configurações do terminal.


15

Sei que você está em um terminal gnomo, mas pensei em responder com uma dica para outras pessoas que possam estar (como eu) em um Mac:

Se você estiver usando Terminal.appou iTerm.appentão Control+Lrolar para cima para que o terminal fique em branco, mas Cmd+Kna verdade redefinirá o terminal / limpará a rolagem para trás.

Ou, se você puder definir as preferências do teclado para o seu terminal, poderá atribuir algo como Ctrl+Ka entrada, echo -e \\033ccomo mencionado acima.


2
Cmd+Ké tudo que eu queria. ty
Gaurav Gandhi 30/03

9

A resposta de Anthon funciona no KDE Konsole, mas não no urxvt. No urxvt, eu uso o reset há alguns anos para limpar a rolagem (junto com todas as outras coisas que faz) e não estava satisfeito por não funcionar no Konsole. Então agora para Linux eu tenho um novo alias:

alias allclear='clear; echo -e "\033c\e[3J"'

Mas isso não funciona no OS X.

tput reset não funciona em nenhum contexto AFAICT.

No KDE Konsole, ctrl- shift- klimpa a rolagem (incluindo o prompt do shell atual, para que fique completamente vazio). No iTerm ou no terminal da Apple no OS X, cmd- shift- ktambém limpa a rolagem. Para adicionar este recurso ao urxvt, adicione-o a ~ / .Xresources:

urxvt*keysym.C-S-K: command:\033c

Esta resposta é a resposta que qualquer pessoa que utilize o Linux Bash irá adorar se estiver esperando o mesmo resultado que receberia em um Mac pressionando o comando + K. Fui em frente e transformei isso em um comando independente, adicionando a seguinte função na parte inferior do /etc/bash.bashrc (depois efetue logout do servidor, efetue login novamente e ele funcionará através do comando allclear): allclear(){`echo" Limpando terminal e scrollback ... "` `sleep 1.5`` clear; echo -e "\ 033c \ e [3J" ` }` Edit: Não é possível fazer a formatação funcionar. Se alguém puder editar isso para que fique legível, eu agradeceria.
21418 KLaw

3

Encontrei isso na net anos atrás e funciona bem para mim. Ele limpa completamente o terminal sem histórico de rolagem.

echo -e "\e[3J"

2

Mapeei F12para limpar a tela em cada uma das seguintes conchas: bash , csh e casca de peixe . Meu comando é diferente de todos os anteriores porque preserva o que você já digitou na linha atual.
(Nota: todas as configurações abaixo dependem do terminal, mas espero que funcionem virtualmente em todos os lugares)

bater

Abra o arquivo ~/.inputrce insira a seguinte linha:

"\e[24~": "\C-k \C-uecho -ne '\\ec\\e[3J'; history -d $((HISTCMD-1))\n\C-y\C-?"

Para disponibilizar a nova ligação de chave, abra um novo terminal ou digite Ctrl+ Xe Ctrl+ Rpara recarregar o arquivo .inputrc no terminal atual.

Explicação
O arquivo ~ / .inputrc controla as ligações de teclas do terminal bash.

Sobre a linha:

  1. A primeira parte da linha "\e[24~",, mapeia a chave F12.
  2. O C-k( Ctrl+ X) limpa o anel de interrupção (memória de cópia e passado do bash).
  3. O espaço evita um bipe no próximo comando.
  4. O C-u( Ctrl+ U) envia a linha atual para o kill-ring e a apaga.
  5. O echo -ne '\\ec\\e[3J'; history -d $((HISTCMD-1))\nenvia dois comandos agrupados para o terminal. Eles são separados por ;e terminados por \n.
    • A echo -ne '\\ec\\e[3J'tela é limpa.
    • O history -d $((HISTCMD-1))evita esses dois comandos de entrar na história.
  6. O C-y( Ctrl+ Y) cola o kill-ring armazenado pelo C-ucomando.
  7. O C-?( Ctrl+ ?) é equivalente Backspacee remove o espaço inserido na etapa 3 acima.

Referências:

csh

Digite o comando abaixo.
bindkey -c "^[[24~" "echo -ne '\ec\e[3J'"
Também pode ser inserido no seu .cshrcarquivo para carregar a ligação de teclas em todos os novos terminais.
(Sim, é muito mais simples que no bash)

casca de peixe

Digite o comando abaixo.
bind -k f12 "echo -ne '\ec\e[3J'; commandline -f repaint"
Você pode editar e salvar a função fish_user_key_bindingspara carregar a ligação de teclas em todos os novos terminais.
(Sim, é muito mais simples que no bash)


2

[Ubuntu 16.04]

O arquivo .bash_history é criado no diretório inicial do usuário assim que o terminal é fechado

É útil, mas você pode excluí-lo se desejar. No entanto, ele seria criado toda vez que você terminar de usar o terminal.

Você pode excluí-lo manualmente de:

  • seu navegador de arquivos.

  • o terminal: lembre-se de que um novo arquivo .bash_history será criado quando você fechar o terminal (com base em sua configuração padrão).

Ou você pode chamar uma função personalizada se salvar a funcionalidade necessária em um arquivo vinculado a partir do bashrc. Você pode editar o próprio bashrc se quiser colocar seu código lá, mas os próximos exemplos estão em um arquivo separado

Honestamente, isso não é útil para mim, mas se você deseja excluir o histórico de comandos antes de sair, você pode fazer isso:

.bash_custom #este é o meu arquivo personalizado

blotout() {
    HISTSIZE=0
    rm $HOME/.bash_history
    exit
}

depois, na parte inferior, adicione o nome e o caminho do meu arquivo
.bashrc # este é o arquivo de configuração do bash (eu acho)

# existent code
#...
#..

# import user customizations
source $HOME/.bash_custom

e isso é tudo.

MAS, para fazer exatamente o que você deseja, basta esta função no seu arquivo personalizado e vinculá-la:

refresh() {
        tput reset
        H=HISTSIZE
        HISTSIZE=0
        HISTSIZE=H
}

Ou apenas coloque a função no .bashrc, se desejar, mas dessa forma você provavelmente precisará de uma instrução de exportação após a função. Não tenho certeza e se o arquivo for atualizado provavelmente perdeu suas funções. Não tenho certeza disso também: D.
Lembre-se de que você precisa reiniciar o terminal ao editar o arquivo .bashrc ou o seu 'personalizado'.


1

Para mim, usando PuTTY no CentOS 7, clear deixa apenas o comando clear no scrollback, mas executar "clear && clear", duas instâncias do comando clear ao mesmo tempo, limpa completamente o scrollback e não deixa nenhuma barra de rolagem. Tente isso. É uma solução estranha, mas nenhuma dessas aqui eliminou a rolagem de forma eficaz, e isso é verdade.


0

Adicionado a ~/.inputrcpara vincular a limpeza completa a F12:

"\e[24~":'!echo -ne \047\\0033\\0143\047\r'

0

No Fedora 30, a exclusão do histórico é feita removendo o arquivo $ HOME / .bash_history. A maneira mais fácil de limpar o arquivo de histórico do terminal através do teclado é:

  • Pressione Alt+ F4para fechar cada janela do Terminal GNOME, percorrendo as janelas via Alt+ Tabou Alt+ Shift+ Tabconforme necessário. (Todas as janelas do terminal devem ser fechadas porque o arquivo .bash_history é criado ou atualizado quando são fechados.)
  • Pressione Alt+ F2.
  • Digite nautiluse pressione a Entertecla para abrir o aplicativo Arquivos (GNOME) (anteriormente conhecido como Nautilus).
  • Pressione Ctrl+ Hse necessário para mostrar arquivos ocultos.
  • Digite .bash_history(que deve aparecer na barra de pesquisa se digitado imediatamente após a janela ser aberta; caso contrário, a barra de pesquisa pode ser acessada via Ctrl+ L).
  • Pressione a tecla de seta para baixo para selecionar o arquivo, que deve ser o único resultado da pesquisa.
  • Pressione Shift+ Deletepara excluir permanentemente o arquivo. (Se você usar a Deletechave não modificada , o arquivo .bash_history ainda estará acessível na pasta Lixeira.)

-2
cat /dev/null > ~/.bash_history && history -c && exit

O mínimo que você pode fazer é explicar e formatar sua resposta.
Paradox

(1) Não está claro que o OP queira excluir a memória (histórico) dos comandos anteriores do shell (a questão é sobre o terminal ). Você não pode vê-lo, mas history -cfoi apresentado em duas respostas anteriores e foram excluídas por não serem respostas corretas para a pergunta. (2) Embora o fechamento da janela do terminal apague (provavelmente) a memória do terminal dos comandos anteriores, está longe de ser aparente que o OP queira fazer isso. … E PS exitNão é garantido que um único comando feche a janela do terminal.
G-Man Diz 'Reinstate Monica'
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.