Por que a história e a .bash_history são diferentes e como excluir uma entrada no histórico?

0

Então eu sei que ~/.bash_history deve ser o arquivo que armazena todo o histórico e que você pode simplesmente digitar history para ver todo o conteúdo deste arquivo.

Por que meu arquivo .bash_history tem apenas 5 entradas e history mostra 135 resultados?

Gostaria de remover uma das entradas que vejo do histórico, mas se não estiver em ~/.bash_history , como posso removê-la?

    
por larsen161 29.04.2018 / 22:12

1 resposta

2

Há um pequeno equívoco aqui, history não não mostra o conteúdo de ~/.bash_history . Em vez disso, mostra o conteúdo atual da lista de histórico do Bash na memória para esta sessão.

Assumindo uma configuração padrão do Bash e do Ubuntu, o gerenciamento de histórico funciona da seguinte maneira:

  • Sempre que você abrir um shell Bash, ele lerá o conteúdo do seu arquivo .bash_history e o anexará à sua lista de histórico da sessão.

  • Você digita comandos, fazendo com que o Bash os anexe à sua lista de histórico de sessões.

  • Quando você fechar o shell novamente, o Bash salvará sua lista de histórico no disco anexando as entradas contidas ao arquivo .bash_history .

Observação: por padrão, a lista de histórico fica truncada para no máximo 1000 entradas e o arquivo de histórico para 2000 entradas.

Veja, o arquivo de histórico nunca será atualizado até que a sessão específica do shell termine, então tudo que você fez na sua janela de terminal atual ainda não foi mantido no disco. Ele reside apenas na sua lista de histórico na memória.

Para limpar uma entrada específica da sua lista de histórico, você pode executar history para exibir a lista completa e descobrir o número de índice da sua entrada incorreta. Então você pode excluí-lo usando

history -d NUMBER

Você também pode simplesmente limpar sua lista completa de histórico de sessões usando history -c .

Observe que a exclusão de uma entrada da lista de histórico não a exclui automaticamente de .bash_history se ela já foi gravada lá, mas a exclusão de uma entrada do arquivo não a remove da lista do histórico de sessões atual, se você tiver alguma Sessões de Bash abertas.

Para excluir uma entrada do arquivo de histórico, abra seu ~/.bashrc em um editor de texto e exclua a linha ofensiva ali. Você deve fechar todos os terminais antes disso e usar um editor de GUI, ou remover a entrada das listas de arquivos e de sessões.

Para obter mais informações sobre o comando history , digite help history .
Mais informações sobre o Bash e seu gerenciamento de histórico, leia as partes relevantes de man bash .

    
por Byte Commander 29.04.2018 / 22:34