Après avoir, il y a un moment, ajouté à .bashrc
la ligne :
export HISTCONTROL=ignoreboth:erasedups
je me rends compte qu'il y a plein de commandes en double (voire en centuple !). Il est où le problème ? Quelqu'un a déjà eu ce souci ?
Accessoirement, auriez-vous une solution pour purger bash_history
, je devrais m'en sortir mais j'ai un peu la flemme en ce moment ?
Merci.
# .
Posté par Kerro . Évalué à 2.
Je dirais que le « export » est en trop car ce n'est pas une variable d'environnement, mais je viens de tester et c'est ok.
Si tu fais
set | grep HISTCONTROL
ça t'affiche bienHISTCONTROL=ignoreboth:erasedups
?rm ~/.bash_history -f
ou pour garder les 100 dernières lignes :
tail -n 100 ~/.bash_history > ~/.bash_history.tmp; mv ~/.bash_history.tmp ~/.bash_history -f
Je n'ai pas trouvé de moyen simple de faire ça sans fichier temporaire (ça ne fonctionne que pour les petits fichiers, pas pour les gros, donc pas générique).
[^] # Re: .
Posté par deuzene (site web personnel) . Évalué à 1.
Merci, oui la commande :
ainsi que
echo $HISTCONTROL
, m'affichent bienHISTCONTROL=ignoreboth:erasedups
. C'est pour ça que je ne comprends pas. Le coup de l'export
je l'ai trouvé dans pas mal de tutos, et ça me semblait plutôt logique, mais j'accepte ton explication.Ah et quand je parlais de purger le
bash_history
, je voulais dire : supprimer les entrées en double (ça m'apprendra à mal m'exprimer).« Il vaut mieux mobiliser son intelligence sur des conneries que mobiliser sa connerie sur des choses intelligentes. »
# purger le bash_history
Posté par i M@N (site web personnel) . Évalué à 1.
J'ai le même souci avec HISTCONTROL=ignoreboth:erasedups, je n'ai jamais trouvé de solution :-/
Pour la question de "purger le bash_history" j'avais trouvé cette commande qui supprime les doublons en gardant l'ordre de l'historique :
cat .bash_history |awk '!x[$0]++'>history_uniq.txt
wind0w$ suxX, GNU/Linux roxX!
[^] # Re: purger le bash_history
Posté par freem . Évalué à 2.
Et ça marche? J'ai déjà un peu joué avec awk, mais la je n'arrive pas à comprendre ce que le script fait…
Sinon, pourquoi passer par un cat? Il suffirait de faire
awk '!x[$0]++' -- .bash_history > history_uniq.txt
non?# nettoyer bash_history
Posté par EdLeH (site web personnel) . Évalué à 1.
Bonjour.
J'ai fait un script Python que je fais lancer à chaque démarrage de mon ordi et qui efface les doublons dans .bash_history
Il y a peut-être plus simple mais il fait le boulot comme prévu :
O-
# pas testé, mais
Posté par NeoX . Évalué à 3.
le erasedups doit probablement effacer les lignes en doubles
ex : tu fais 2 ou 3 fois
ls
il n'en garde qu'untu fais par compte
ls
puiscp a b
puisls
il va considéré les 2
ls
comme n'etant pas des doublons car il y a un CP entre les deux.[^] # Re: pas testé, mais
Posté par freem . Évalué à 2.
Autrement dit, il se contenterait de faire un
sort -u .bash_history > .bash_history
?[^] # Re: pas testé, mais
Posté par NeoX . Évalué à 3.
non car le sort va les classer par ordre alphabetique
alors que history le classe par "ancienneté"
[^] # Re: pas testé, mais
Posté par freem . Évalué à 2.
Éxact… marrant, me semblait que le -u évitait le tri, je devais confondre avec
uniq
:S[^] # Re: pas testé, mais
Posté par kna . Évalué à 4.
sort -u .bash_history > .bash_history.tmp ; mv .bash_history.tmp .bash_history
sinon tu vides le fichier (le shell va « recréer » le fichier pour rediriger la sortie avant d'exécuter
sort
).[^] # Re: pas testé, mais
Posté par deuzene (site web personnel) . Évalué à 1.
Ah ben merci, ça marche !
Du coup j'ai ajouté cette ligne dans mon
.bashrc
comme ça à chaque connexion elle fait le ménage :>« Il vaut mieux mobiliser son intelligence sur des conneries que mobiliser sa connerie sur des choses intelligentes. »
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.