Comment éviter les doublons dans .bash_history

85

La même commande est répertoriée dans mon historique encore et encore. Comment puis-je éviter ça? Je sais que c'est possible via HISTCONTROL mais je n'ai pas trouvé le bon chemin.

    
posée karthick87 02.12.2010 - 21:05
la source

6 réponses

96

À partir de la page bash man:

  

HISTCONTROL

          

Liste de valeurs séparées par des deux-points contrôlant comment les commandes sont enregistrées     la liste de l'historique. Si la liste de valeurs inclut ignorespace , les lignes     qui commencent par un caractère d'espacement ne sont pas enregistrés dans la liste d'historique. UNE     la valeur de ignoredups provoque des lignes correspondant à l'entrée de l'historique précédent     ne pas être sauvé. Une valeur de ignoreboth est un raccourci pour ignorespace et      ignoredups . Une valeur de erasedups provoque toutes les lignes précédentes correspondant au     ligne en cours à supprimer de l'historique avant que cette ligne ne soit     enregistré. Toute valeur ne figurant pas dans la liste ci-dessus est ignorée. Si HISTCONTROL est     désélectionner, ou n'inclut pas de valeur valide, toutes les lignes lues par le shell     l'analyseur est enregistré dans la liste d'historique, sous réserve de la valeur de HISTIGNORE.     Les deuxième et suivante lignes d'une commande composée multiligne ne sont pas     testé, et sont ajoutés à l'historique indépendamment de la valeur de HISTCONTROL.

  

Mettez donc la ligne suivante dans votre ~/.bashrc :

export HISTCONTROL=ignoreboth:erasedups

    
réponse donnée Isaiah 02.12.2010 - 21:09
la source
19

Collez ceci dans votre ~/.bashrc :

export HISTCONTROL=ignoredups

Vous pouvez utiliser à la place ignoreboth . Ceci est un raccourci pour ignorespaces (commandes commençant par des espaces) et ignoredups (doublons).

Je préfère seul ignoredups car je trouve le comportement par défaut d’ignorer les commandes avec des espaces au début assez ennuyeux lorsque je copie une commande sur un site Web et qu’il n’est pas enregistré parce que j’ai accidentellement copié dans un espace .... Mais à chacun son.

    
réponse donnée Oli 02.12.2010 - 21:10
la source
7

Mettre ceci dans ~/.bashrc appliquera la solution @ alvin sur différentes sessions comme wlell

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

Source: Linux: historique des bashs: mise en conflit des "ignoredups" et "erasedups" avec l'historique des sessions

    
réponse donnée Nour Chawich 31.08.2015 - 17:44
la source
4
export HISTCONTROL=erasedups
    
réponse donnée withoutasound 03.12.2010 - 03:29
la source
3

Ajoutez ce qui suit à votre ~/.bashrc :

export HISTCONTROL=ignoredups

Pour ce faire, vous pouvez utiliser cette commande:

nano ~/.bashrc
    
réponse donnée jrg 02.12.2010 - 21:11
la source
0

Enregistrer de manière unique chaque nouvelle commande est délicat. Tout d'abord, vous devez ajouter à ~/.profile ou similaire:

HISTCONTROL=erasedups
PROMPT_COMMAND='history -w'

Ensuite, vous devez ajouter à ~/.bash_logout :

history -a
history -w
    
réponse donnée Steven Penny 04.02.2018 - 19:42
la source

Lire d'autres questions sur les étiquettes