Como limpo o histórico do terminal?

93

Estou usando o Linux Mint 17.1 Rebecca por cerca de 2 dias e digitei minha senha acidentalmente no terminal que agora é exibido na lista de histórico de comandos que digitei anteriormente.

Eu quero limpar o histórico do terminal completamente. Eu tentei usar os seguintes comandos no terminal que pensei que limpariam o histórico para sempre, mas eles não:

history -c
reset
tput reset

Os comandos acima "limparão" o histórico do terminal, mas quando eu sair e abrir um novo, todo o meu histórico anterior ainda estará lá e poderá ser listado novamente usando o comando - history e também pressionando a seta PARA CIMA no teclado . Não quero que isso aconteça até que eu tenha limpado totalmente minha história, então quero continuar usando-a.

Como posso limpar meu histórico de terminais completamente - para sempre e começar de novo?

Observação: não quero sair do terminal sem salvar o histórico, limpe-o para sempre nesta única instância.

Shambhala
fonte
1
sed -i "s/$your_pass//g" ~/.bash_history...
jasonwryan
3
@jasonwryan Isso por si só não resolveria o problema, já que o comando sed terminaria no histórico do shell.
Gilles
1
Eu tentei usar o código de @jasonwryan, mas obtive: sed: -e expressão # 1, char 0: nenhuma expressão regular anterior que eu acho que sei o porquê e que me levou a sugerir isso a partir de uma pesquisa e algumas brincadeiras: cat / dev / null> ~ / .bash_history && history -c && exit
Shambhala
1
@Gilles: você está certo: não é suposto ser um espaço na frente do comando ...
jasonwryan

Respostas:

145

resetou tput resetapenas faz as coisas no terminal. O histórico é totalmente gerenciado pelo shell, que permanece inalterado.

history -climpa seu histórico no shell atual. É o suficiente (mas exagero) se você digitou sua senha e não saiu do shell ou salvou seu histórico explicitamente.

Quando você sai do bash, o histórico é salvo no arquivo de histórico, que por padrão está .bash_historyno seu diretório pessoal. Mais precisamente, o histórico criado durante a sessão atual é anexado ao arquivo; as entradas que já estão presentes não são afetadas. Para substituir o arquivo de histórico pelo histórico do shell atual, execute history -w.

Em vez de remover todas as entradas do histórico, você pode abrir .bash_historyem um editor e remover as linhas que não deseja manter. Você também pode fazer isso dentro do bash, de forma menos conveniente, usando historypara exibir todas as entradas, depois history -dexcluir as entradas que não deseja e, finalmente, history -wsalvar.

Observe que, mesmo depois de editar o arquivo de histórico, é possível que sua senha ainda esteja presente em algum lugar do disco a partir de uma versão anterior do arquivo. Ele não pode mais ser recuperado através do sistema de arquivos, mas ainda pode ser possível (mas provavelmente não é fácil) encontrá-lo acessando o disco diretamente. Se você usar essa senha em outro lugar e seu disco for roubado (ou alguém obtiver acesso ao disco), isso pode ser um problema.

Gilles
fonte
1
Gosto da sua resposta e aceitarei, como você me disse, algumas coisas que eu não sabia que são muito úteis. Eu também mudarei minha senha!
Shambhala
Primeiro tipo historypara verificar o conteúdo do log de história e os números de linha que deseja excluir, suposto que pretende eliminar o número da linha 1000 no log de história, entãohistory -d 1000
Claude Coulombe
Se eu modificar o arquivo .bash_history diretamente, o comando history ainda mostrará os comandos como eram antes da modificação, até que eu efetue logout / logon.
Benitok
35

Tentei a história -c, mas a história volta assim que saímos e reabrimos. Isso me ajudou.

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

Isso limpa o histórico salvo no arquivo de histórico e o histórico da sessão atual (para que não seja salvo no arquivo quando bashsair). Em seguida, sai do shell. A próxima sessão do shell não terá histórico.

athul
fonte
18

Em vez de remover todas as entradas do seu histórico, digite estes comandos no seu terminal:

  1. history -c (para excluir histórico)
  2. history -w (salvar histórico)
user171143
fonte
Isso não será suficiente com o zsh se inc_append_historyou a share_historyopção estiver definida.
Saga
5

Como há um problema de segurança aqui, considere excluir com segurança o arquivo de histórico.

$ shred -u ~/.bash_history && touch ~/.bash_history
C0D3R3D
fonte
3

Como neófito diante do mesmo problema, recorri ao expediente bastante brutal de excluir e recriar o arquivo de história:

rm .bash_history
touch .bash_history

Funcionou para mim sem causar efeitos colaterais desagradáveis ​​dos quais estou ciente.

Joe peludo
fonte
3

Tipo: history -c; rm ~/.bash_history

history -climpa o histórico da sua sessão atual, rm ~/.bash_historylimpa o histórico de longo prazo, history -c; rm ~/.bash_historylimpa os dois.

ANTHONY
fonte
A explicação pode ajudar o OP a entender melhor.
quer