bash enregistre toutes vos commandes dans le fichier .bash_history de votre répertoire personnel. Plusieurs options et outils vous permettent d’en tirer le maximum.
Voyons d’abord comment le configurer. Quatre variables l’affectent:
HISTFILE: nom du fichier d’historique. Si la variable est vide, alors c’est ~/.bash_history. Si la variable n’est pas définie, alors il n’y aura pas d’historique.
HISTSIZE (ou HISTFILESIZE): définit le nombre de commandes que le fichier peut enregistrer. S’il y en a trop, les plus vieilles sont éliminées.
HISTCONTROL: définit les options:
- ignoredups: ne pas enregistrer les duplicatas successifs.
- ignorespace: ne pas enregistrer les commandes qui sont précédées d’une espace.
- ignoreboth: activer ignoredups et ignorespace
HISTTIMEFORMAT: spécifie le format d’affichage de l’horodatage de la commande. Si le format n’est pas spécifié, l’horodatage n’est pas affiché. La syntaxe de spécification du format est identique à celle de la commande date. Exemple: HISTTIMEFORMAT=’%y/%m/%d %T ‘
Comment spécifier
Il y a au moins 3 façons:
- interactivement: n’affecte que la fenêtre où la commande sera donnée.
Exemple: HISTCONTROL=ignoredups
Non-persistant (perdu après un redémarrage). - dans ~/.bashrc: n’affecte qu’un usager
On peut éditer .bashrc ou faire echo HISTCONTROL=ignoredups >> ~/.bashrc - dans /etc/bashrc: affecte tous les usagers
On peut éditer /etc/bashrc ou faire:
echo HISTCONTROL=ignoredups >> /etc/bashrc
Comment afficher l’historique
La commande history permet d’afficher l’historique. Chaque ligne contiendra le numéro séquenciel, l’horodatage (si défini) et la commande. La commande history a plusieurs options dont une pour vider l’historique (voir man history).
On peut aussi afficher le contenu du fichier .bash_history mais, à ce moment, il n’y aura pas de numéro séquenciel ou d’horodatage. Il faut aussi noter que les commandes courantes seront ajoutées au fichier seulement lorsque la fenêtre sera fermée.
Comment utiliser l’historique
Il y a plusieurs façons:
- Les flèches ⬆ et ⬇ permettent d’accéder séquentiellement aux commandes récentes.
- ctrl-r cmd permet de chercher la plus récente cmd dans l’historique. Un ctrl-r supplémentaire accède à la cmd précédente. Les flèches ⬆ et ⬇ permettent d’obtenir la commande précédente ou suivante. Les fléches ⬅ ou ➡ permettent de sortir de la recherche.
- La commande fc permet d’afficher ou d’éditer les dernières commandes:
- fc permet d’éditer la dernière commande puis de l’exécuter
- fc -3 -1 permet d’éditer les 3 dernières commandes puis de les exécuter.
- fc -l affiche les 16 dernières commandes
- fc -l -3 -1 affiche les 3 dernières commandes
- fc -s [abc=def] cmd localise la dernière cmd, remplace abc par def partout dans la ligne puis l’exécute.
Cette dernière commande (fc -s) est très utile et plusieurs ont pris l’habitude de lui assigner un alias alias r=’fc -s’ dans .bashrc. Cela permet, par exemple:
cp ab25.txt ab25.org r ab2=yz6 cp
La deuxième commande effectuera: cp yz65.txt yz65.org