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.
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.
À 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
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.
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"
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