Como faço para limpar o histórico do terminal do Gnome?

58

Quando usamos o comando clear ou Ctrl + L no terminal, ele limpa o terminal, mas ainda podemos rolar para trás para ver os últimos comandos usados. Existe uma maneira de limpar completamente o terminal?

    
por hpn 16.12.2011 / 14:18

9 respostas

68

Você pode usar tput reset .

Além de reset e tput reset , você pode usar o seguinte script de shell.

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

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

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

man console_codes diz:

The sequence ESC c causes a terminal reset, which is what you want if the screen is all garbled. The oft-advised "echo ^V^O" will only make G0 current, but there is no guarantee that G0 points at table a). In some distributions there is a program reset(1) that just does "echo ^[c". If your terminfo entry for the console is correct (and has an entry rs1=\Ec), then "tput reset" will also work.

    
por 16.12.2011 / 14:55
15

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

    
por 16.12.2011 / 14:33
15

Eu sei que você está em um terminal de gnomo, mas eu pensei em responder com uma dica para os outros que podem ser (como eu) em um Mac:

Se você estiver usando Terminal.app ou iTerm.app , então Control+L rolará para cima para que o terminal pareça em branco, mas Cmd+K redefinirá o terminal / limpar a rolagem para trás.

Ou, se você puder definir preferências de teclado para o seu terminal, poderá atribuir algo como Ctrl+K para inserir echo -e \033c como mencionado acima.

    
por 07.01.2012 / 18:22
8

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

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

Mas isso não funciona no OS X.

tput reset não funciona em nenhum contexto AFAICT.

No KDE, o Kbd ctrl - shift - k limpa o scrollback (incluindo o prompt atual do shell, portanto está completamente vazio). No iTerm ou terminal da Apple no OS X, cmd - deslocamento - k também limpa a rolagem de retorno. Para adicionar este recurso ao urxvt, adicione isso a ~ / .Xresources:

urxvt*keysym.C-S-K: command:3c
    
por 13.03.2015 / 11:40
3

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

echo -e "\e[3J"
    
por 25.02.2014 / 14:03
2

Eu mapeei F12 para limpar a tela em cada uma das seguintes shells: bash , csh e fish shell . Meu comando é diferente de todos os anteriores porque preserva tudo o que você já digitou na linha atual.
(Nota: todas as configurações abaixo são dependentes do terminal, mas espero que funcionem virtualmente em qualquer lugar)

bash

Abra o arquivo ~/.inputrc e insira a seguinte linha:

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

Para ter a nova ligação de teclas disponível, abra um novo terminal ou digite Ctrl + X e então em Ctrl + R para recarregar o arquivo .inputrc no terminal atual.

Explicação
O arquivo ~ / .inputrc controla as ligações de tecla 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 kill-ring (memória copiada e passada 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))\n envia dois comandos agrupados ao terminal. Eles são separados por ; e terminados por \n .
    • O echo -ne '\ec\e[3J' limpa a tela.
    • O history -d $((HISTCMD-1)) evita que esses dois comandos entrem no histórico.
  6. O C-y ( Ctrl + Y ) cola o anel de eliminação armazenado pelo comando C-u .
  7. O C-? ( Ctrl + ? ) é equivalente a Backspace e remove o espaço inserido na etapa 3 acima.

Referências:

  • Como ligar uma tecla de função a um comando no bash (e como evitar que o Ctrl + U toque): link
  • Como recarregar o arquivo .inputrc: link
  • Como executar um comando sem mantê-lo no histórico: link

csh

Digite o comando abaixo.
bindkey -c "^[[24~" "echo -ne '\ec\e[3J'"
Ele também pode ser inserido no seu arquivo .cshrc para carregar a ligação de chave para cada novo terminal.
(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_bindings para carregar a ligação de chave para cada novo terminal.
(Sim, é muito mais simples do que no bash)

    
por 12.06.2017 / 16:23
1

Para mim, usando o PuTTY contra o CentOS 7, clear deixa apenas o comando clear no scrollback, mas executando "clear & clear", duas instâncias do comando clear ao mesmo tempo, limpa completamente o scrollback e sai eu sem barra de rolagem. Tente isso. É uma solução estranha, mas nenhuma delas aqui limpou a rolagem de forma eficaz, e isso acontece.

    
por 22.05.2017 / 22:19
1

[Ubuntu 16.04]

O arquivo .bash_history é criado no diretório pessoal do usuário quando o terminal é fechado

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

Você pode excluí-lo manualmente de:

  • seu navegador de arquivos.

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

Ou você pode chamar uma função personalizada se você salvar a funcionalidade que precisa em um arquivo vinculado a partir do bashrc .. você pode editar o bashrc se você gosta de colocar seu código lá, mas os próximos exemplos estão em um arquivo separado < br>

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
}

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

# existent code
#...
#..

# import user customizations
source $HOME/.bash_custom

e tudo isso.

MAS, para fazer exatamente o que você quer , você só precisa desta função em seu arquivo personalizado e vinculá-lo:

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

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

    
por 29.06.2017 / 00:56
0

Adicionado a ~/.inputrc para ligar a limpeza completa a F12 :

"\e[24~":'!echo -ne 7\0033\01437\r'
    
por 18.10.2016 / 14:03