140 votes

Comment éviter les entrées dupliquées dans .bash_history

La même commande apparaît sans cesse dans mon historique. Comment puis-je éviter cela ? Je sais que c'est possible via HISTCONTROL mais je n'ai pas trouvé le bon moyen.

162voto

Craig Smitham Points 522

De la bash page de manuel :

HISTCONTROL

Une liste de valeurs, séparées par deux points, contrôlant la manière dont les commandes sont sauvegardées sur la liste d'historique. Si la liste de valeurs comprend ignorespace les lignes qui commencent par un caractère d'espacement ne sont pas enregistrées dans la liste de l'historique. A valeur de ignoredups fait en sorte que les lignes correspondant à l'entrée précédente de l'historique ne sont pas sauvegardées. Une valeur de ignoreboth est un raccourci pour ignorespace y ignoredups . Une valeur de erasedups fait en sorte que toutes les lignes précédentes correspondant à l'élément la ligne courante est supprimée de la liste de l'historique avant que cette ligne ne soit sauvegardée. Toute valeur ne figurant pas dans la liste ci-dessus est ignorée. Si HISTCONTROL est non défini, ou ne comprend pas une valeur valide, toutes les lignes lues par le Shell sont enregistrées dans la liste d'historique, sous réserve de la valeur de HISTIGNORE. La deuxième ligne et les lignes suivantes d'une commande composée de plusieurs lignes ne sont pas testées, et sont ajoutées à l'historique quelle que soit la valeur de HISTCONTROL.

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

export HISTCONTROL=ignoreboth:erasedups

33voto

Mufaka Points 54

Mettez ça dans votre ~/.bashrc :

export HISTCONTROL=ignoredups

Vous pourriez plutôt utiliser ignoreboth . C'est un raccourci pour les deux ignorespaces (commandes commençant par des espaces) et ignoredups (duplicata).

Je préfère ignoredups car je trouve le comportement par défaut qui consiste à ignorer les commandes avec des espaces au début assez ennuyeux lorsque je copie une commande depuis un site web et qu'elle n'est pas sauvegardée parce que j'ai accidentellement copié un espace aussi..... Mais chacun son truc.

16voto

Justin Vincent Points 554

Mettez cela dans ~/.bashrc J'appliquerai la solution de @alvin à différentes sessions.

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

Source : Linux : Historique de Bash : Les paramètres "ignoredups" et "erasedups" entrent en conflit avec l'historique commun à toutes les sessions.

4voto

jrg Points 58143

Ajoutez les éléments suivants à votre ~/.bashrc :

export HISTCONTROL=ignoredups

Pour ce faire, vous pouvez utiliser cette commande :

nano ~/.bashrc

4voto

withoutasound Points 149
export HISTCONTROL=erasedups

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X