Comment arrêter l'historique d'ajout de Bash

9

J'ai beaucoup de mal à configurer l'historique du terminal de Bash comme je le souhaite. Je voudrais ne pas avoir d'entrées en double et si j'entre une commande, je veux qu'elle soit enregistrée et les doublons ci-dessus supprimés.

Le problème est que la historycommande me montre qu'elle fonctionne comme je le souhaite, mais une fois déconnecté, les doublons reviennent. Je pense que cela ajoute simplement l’histoire à l’historique. J'ai ces lignes dans mon .bashrcdossier:

HISTCONTROL=ignoreboth:erasedups
shopt -u histappend

J'ai même essayé de ne pas commenter shopt, mais il ajoute toujours l'historique à la déconnexion. Comment puis-je avoir l'historique exactement tel qu'il est avant de me déconnecter?

craig
la source
2
Il y a une bonne explication ici: unix.stackexchange.com/questions/18212/…
jasonwryan

Réponses:

7

Le erasedupsdevrait faire ce que vous voulez en ce qui concerne les doublons - notez simplement que l'effacement des doublons est déclenché au moment de l'ajout d'une nouvelle entrée à l'historique et qu'il efface toutes les anciennes occurrences d'une commande, ne laissant que la plus récente.


Répondre à la question " Comment puis-je avoir l'historique exactement tel qu'il est avant de me déconnecter? "

Selon moi, cela ne peut être utile qu'une fois de temps en temps. (Sinon, pourquoi utiliseriez-vous l’historique?) Vous pouvez le faire en

history -c; history -r

Cela efface toutes les entrées d'historique conservées actuellement en mémoire, puis relit tout l'historique à partir du fichier d'historique. Ainsi, toutes les commandes que vous avez émises depuis la connexion à la session shell actuelle sont oubliées. Je trouve cela très utile dans les situations où je fais beaucoup de tests (de nombreuses commandes similaires, mais pas vraiment en double) et que je ne veux pas que mon historique soit corrompu par cela - j'ai donc un alias pour cela dans mon .bashrc:

alias hrr='history -c; history -r'

( hrrà retenir comme "histoire relue").

rozcietrzewiacz
la source