Questão Como limpar completamente o histórico bash?


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

Como posso limpá-los permanentemente?


221
2017-09-23 05:44


origem




Respostas:


O arquivo ~/.bash_history mantém a história.

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

cat /dev/null > ~/.bash_history

Outra maneira alternativa é ligar ~/.bash_history para /dev/null

Contudo,

Um efeito colateral chato é que as entradas do histórico têm copie na memória e será voltar para o arquivo quando você sair.

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

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

289
2017-09-23 05:51



você também pode colocar o comando acima em .bashrc & .bash_logout. o que significa quando você faz login você terá um histórico claro e quando você sair do seu histórico será limpo - Qasim
Por que você precisa de / dev / null? Não seria > ~/.bash_hstory ser o suficiente? - configurator
sim seria o suficiente! - fromnaboo
Eu tentei fazer isso em uma caixa de framboesa enquanto estava conectado via SSH. Eu adicionei o comando acima (cat / dev / null> ~ / .bash_history && history -c && exit) para ambos .bashrc & .bash_logout como sugerido por @Qasim. Agora, assim que eu me conecto via SSH, o host remoto fecha a conexão (após a impressão do motd). Socorro :/ - Advanced
Vai mostrar o que acontece quando você faz cegamente as coisas sem ler corretamente e sem entender o processamento e o fluxo de 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 de saída antes de incluí-lo no script de login. - Sri


O que fazer:

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

history -c
history -w

Por quê: Como observado acima, history -c esvazia o arquivo ~/.bash_history. É importante observar que o bash shell não libera o histórico imediatamente para o arquivo bash_history. Então, é importante (1) liberar o histórico para o arquivo e (2) limpar o histórico, em todos os terminais. Isso é 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/


115
2018-04-11 20:55



Na verdade, o contrário funcionou para mim. - kristianp
Em muitos casos, você pode combinar esses dois comandos juntos: history -cw - Elliot
Por alguma razão, isso não funciona no Ubuntu 14.04, provavelmente outros. Deve, mas isso não acontece. Se você emitir o comando "history -cw", você pode confirmar com a seta para cima que o histórico não está mais lá, mas se você iniciar outra janela de terminal (na área de trabalho Unity) com shift + clique no ícone do terminal fixado no lançador) o histórico de comandos está de volta, não importa quantas vezes você faz "história -cw". "cat / dev / null> ~ / .bash_history" é a única maneira que funcionou para mim. - Hatoru Hansou
Enquanto eu não sou Ubantu, funciona bem para o meu shell bash no OSX. - Scott Biggs
É história -c e depois história -w, você primeiro limpa a história e então escreve as mudanças. Isto é facilmente confirmado fechando o terminal e abrindo-o novamente, com -w primeiro os comandos estão lá novamente, com o último histórico -w efetivamente limpo. - Hatoru Hansou


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

history -c && history -w

boa sorte!


44
2017-08-12 12:39





Há outro muito mais simples: rodando history -c no terminal e ido embora são todas as entradas no bash_history Arquivo.


19
2018-03-10 18:10



Não não é. Logout, log in, arrow-up me dá tudo. Você precisa da "história -w" também. - stolsvik
Se você ler a pergunta do OP, você saberia que usar history -c é o método exato que levou a essa pergunta. - J.Money


Outra maneira de fazer isso é excluir o ~/.bash_history arquivo usando rm ~/.bash_history comando. Quando você faz login outra vez, o .bash_history arquivo será criado automaticamente.


10
2017-09-23 06:18



Pelo menos em alguns sistemas operacionais ~ / .bash_history é gravado no disco quando você efetua logout - Não tenho certeza sobre * buntus. - d-_-b


Limpe o histórico do shell atual:

history -c

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

Se você quiser remover o histórico completamente, então você essencialmente terá que esvaziar ~ / .bash_history que muitas das entradas acima sugeriram. Tal como:

history -c && history -w

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

Espero que isto ajude.


5
2017-07-10 17:05



Sua resposta é exata, mas a pergunta tinha dois anos, tinha respostas aceitas e incluía a mesma resposta que você deu. - Charles Green


rm ~/.bash_history; history -c; logout

Agora entre novamente e testemunhe que a sua flecha não lhe dá nada.


5
2017-10-01 19:16



@KasiyA Trata-se de um servidor e uma sessão ssh, então não precisa editar ... - Radu Rădeanu


Tente este

edite seu .profile e adicione a linha abaixo no final do arquivo

rm -f .bash_history

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


0
2017-08-30 18:06