Como evitar entradas duplicadas em .bash_history

81

O mesmo comando é listado na minha história novamente e novamente. Como posso evitar isso? Eu sei que é possível via HISTCONTROL , mas não encontrei o caminho certo.

    
por karthick87 02.12.2010 / 21:05

6 respostas

91

Na página bash man:

  

HISTCONTROL

     
    

Uma lista de valores separados por dois pontos que controla como os comandos são salvos     a lista de histórico. Se a lista de valores incluir ignorespace , linhas     que começam com um caractere de espaço não são salvos na lista de histórico. UMA     O valor de ignoredups faz com que as linhas correspondam à entrada do histórico anterior para     não ser salvo. Um valor de ignoreboth é uma abreviação para ignorespace e     %código%. Um valor de ignoredups faz com que todas as linhas anteriores correspondam     linha atual a ser removida da lista de histórico antes que a linha seja     salvou. Qualquer valor que não esteja na lista acima é ignorado. Se HISTCONTROL é     unset, ou não inclui um valor válido, todas as linhas lidas pelo shell     analisadores são salvos na lista de histórico, sujeitos ao valor de HISTIGNORE.     A segunda linha e as linhas subseqüentes de um comando composto de várias linhas não são     testados e adicionados ao histórico, independentemente do valor de HISTCONTROL.

  

Coloque a seguinte linha no seu erasedups :

~/.bashrc

    
por Isaiah 02.12.2010 / 21:09
18

Cole isso no seu ~/.bashrc :

export HISTCONTROL=ignoredups

Você poderia usar ignoreboth . Isso é uma abreviação para ignorespaces (comandos que começam com espaços) e ignoredups (duplicatas).

Eu prefiro ignoredups por conta própria, pois acho o comportamento padrão de ignorar comandos com espaços na frente bastante irritantes quando eu copio um comando de um site e ele não é salvo porque eu acidentalmente copiei em um espaço também .... Mas para cada um deles.

    
por Oli 02.12.2010 / 21:10
7

Colocar isso em ~/.bashrc irá aplicar a solução de @ alvin em diferentes sessões, como

HISTCONTROL=ignoredups:erasedups
shopt -s histappend
PROMPT_COMMAND="history -n; history -w; history -c; history -r; $PROMPT_COMMAND"

Fonte: Linux: Histórico de bash: “ignoredups” e “erasedups” definem conflito com histórico comum entre as sessões

    
por Nour Chawich 31.08.2015 / 17:44
4
export HISTCONTROL=erasedups
    
por withoutasound 03.12.2010 / 03:29
3

Adicione o seguinte ao seu ~/.bashrc :

export HISTCONTROL=ignoredups

Para fazer isso, você pode usar este comando:

nano ~/.bashrc
    
por jrg 02.12.2010 / 21:11
0

Para registrar todos os novos comandos é complicado. Primeiro você precisa adicionar "~ / .profile" ou similar:

HISTCONTROL=erasedups
PROMPT_COMMAND='history -a'

Então você precisa adicionar a "~ / .bash_logout":

history -a
history -w
    
por Steven Penny 04.02.2018 / 19:42

Tags