Como limpar completamente o histórico do bash?

254

Quero limpar todos os comandos anteriores do histórico do meu servidor. Eu usei history -ce parece que todas as coisas estão limpas, mas quando ssh no servidor, todos os comandos ainda estão lá.

Como posso limpá-los permanentemente?

hd.
fonte

Respostas:

332

O arquivo ~/.bash_historycontém o histórico.

Para limpar o histórico do bash completamente no servidor, abra o terminal e digite

cat /dev/null > ~/.bash_history

Outra maneira alternativa é fazer o link ~/.bash_historypara/dev/null

Contudo,

Um efeito colateral irritante é que as entradas do histórico têm uma cópia na memória e serão devolvidas ao arquivo quando você sair .

Para solucionar isso, use o seguinte comando (funcionou para mim):

cat /dev/null > ~/.bash_history && history -c && exit
devav2
fonte
17
você também pode colocar o comando acima em .bashrc e .bash_logout. o que significa que quando você entra u terá história clara e quando sair o seu histórico será apagado
Qasim
26
Por que você precisa / dev / null lá? Não > ~/.bash_hstoryseria suficiente?
configurador
4
sim, seria o suficiente!
fromnaboo
3
Tentei fazê-lo em uma caixa de framboesa enquanto conectado via SSH. Adicionei o comando acima (cat / dev / null> ~ / .bash_history && history -c && exit) nos arquivos .bashrc e .bash_logout, conforme sugerido por @Qasim. Agora, assim que eu me conecto via SSH, o host remoto fecha a conexão (depois de imprimir o motd). Ajuda: /
Avançado
14
Mostra o que acontece quando você faz as coisas às cegas sem ler corretamente e sem entender o fluxo de processamento e dados. Também mostra as armadilhas da má comunicação. O que o devav2 fez foi executá-lo uma vez e o que o Qasim deveria ter escrito é remover o comando exit antes de incluí-lo no script de login.
Sri
142

O que fazer:

Em cada shell bash aberto (você pode ter vários terminais abertos):

history -c
history -w

Motivo: como mencionado acima, history -cesvazia o arquivo ~/.bash_history. É importante observar que o bash shell não libera imediatamente o histórico para o arquivo bash_history. Portanto, é importante (1) liberar o histórico para o arquivo e (2) limpar o histórico em todos os terminais . É o que os comandos acima fazem.

Referência: http://www.giannistsakiris.com/index.php/2007/09/13/how-to-clear-bash-history-and-what-to-watch-out-for/

callpraths
fonte
3
Na verdade, o contrário funcionou para mim.
Kristianp #
24
Em muitos casos, você pode combinar esses dois comandos:history -cw
Elliot
2
Por algum motivo, isso não funciona no Ubuntu 14.04, provavelmente outros. Deveria, mas não. Se você emitir o comando "history -cw", poderá confirmar com a seta para cima que o histórico não existe mais, mas se você iniciar outra janela do terminal (na área de trabalho do Unity) com shift + clique no ícone do terminal (eu tenho preso no iniciador) o histórico de comandos está de volta, não importa quantas vezes você faça "history -cw". "cat / dev / null> ~ / .bash_history" é a única maneira que funcionou para mim.
Hatoru Hansou 4/04
Enquanto eu não sou Ubantu, funciona bem para meu shell bash no OSX.
Scott Biggs
3
É história -c e depois história -w, você primeiro limpa a história e depois escreve as mudanças. Isso é facilmente confirmado fechando o terminal e abrindo-o novamente, com -w primeiro os comandos estão lá novamente, com -w último histórico é efetivamente limpo.
Hatoru Hansou
56

execute os seguintes comandos para limpar o histórico para sempre

history -c && history -w

boa sorte!

Edwin Jose
fonte
3
Muito melhor que a resposta aceita. ;)
Chiramisu
Essa resposta seria ainda mais útil se explicasse o que esses sinalizadores fazem (e, portanto, por que / quando eles são os comandos certos a serem usados).
LarsH 4/03
20

Há outra muito mais simples: rodar history -cno prompt do terminal e desaparecer são todas as entradas no bash_historyarquivo.

Peter Eijlander
fonte
Não não é. Sair, entrar, seta para cima me dá tudo. Você precisa da "história -w" também.
Stolsvik
1
Se você ler a pergunta do OP, saberá que usar history -cé o método exato que levou a essa pergunta.
J.Money
10

Outra maneira de fazer isso é excluir o ~/.bash_historyarquivo usando o rm ~/.bash_historycomando Quando você entra outra vez, o .bash_historyarquivo será criado automaticamente.

Anwar
fonte
4
Pelo menos em alguns sistemas operacionais ~ / .bash_history é gravado no disco quando você se desconecta - Não tem certeza sobre * buntus.
precisa
7

Limpe o histórico do shell atual:

history -c

Quando você efetua logout, o histórico do seu shell atual é anexado a ~ / .bash_history, que é um cache dos históricos dos shells anteriores, com um número máximo (consulte HISTFILESIZE em "man bash").

Se você deseja remover completamente o histórico, é necessário esvaziar ~ / .bash_history que muitas das entradas acima sugeriram. Tal como:

history -c && history -w

Isso limpa o histórico do shell atual e força o histórico do shell atual (vazio) a substituir ~ / .bash_history .... ou, para ser mais preciso, obriga a substituir HISTFILE (o padrão é ~ / .bash_history).

Espero que isto ajude.

mobiGeek
fonte
4
Sua resposta é precisa, mas a pergunta tinha dois anos, aceitou respostas e incluiu a mesma resposta que você deu.
Charles Green
6
rm ~/.bash_history; history -c; logout

Agora faça login novamente e testemunhe que sua seta para cima não oferece nada a você.

Stolsvik
fonte
1
@KasiyA Trata-se de um servidor e uma sessão ssh, portanto, não há necessidade de editar ... #
275 Radu Rădeanu
0

Tente este

edite seu .profilee adicione a linha abaixo no final do arquivo

rm -f .bash_history

Dessa forma, toda vez que você fizer login, ele excluirá o arquivo .bash_history automaticamente para você. Adicionar a opção de remoção recursiva -r parece perigoso e não é necessário.

Prof. de TI Misto
fonte