History

De wiki.nexiat.fr
Aller à la navigation Aller à la recherche
Fiche express
Domaine Historique des commandes (bash)
Fichier ~/.bash_history
Contexte Shell interactif — complète Bashrc (prompt, alias, couleurs)
Raccourci clé Ctrl+R (recherche incrémentale)

L'historique bash conserve les commandes tapées en session : d'abord dans un tampon mémoire, puis dans un fichier sur disque (~/.bash_history) à la fermeture du shell. Quelques variables d'environnement permettent d'en régler la taille et le format, et plusieurs raccourcis évitent de retaper des commandes déjà exécutées.

Variables de configuration

Ces variables se règlent dans ~/.bashrc, au même titre que le prompt ou les alias (voir Bashrc) :

export HISTSIZE=10000                      # nombre de commandes gardées en mémoire pendant la session
export HISTFILESIZE=10000                  # nombre de lignes conservées dans le fichier d'historique
export HISTFILE=~/.bash_history            # emplacement du fichier (valeur par défaut, rarement à changer)
export HISTTIMEFORMAT='%h/%d -- %H:%M:%S ' # préfixe chaque entrée de "history" par sa date/heure
export HISTCONTROL=ignoredups              # ne pas réenregistrer une commande identique à la précédente

HISTCONTROL accepte plusieurs valeurs, combinables séparées par deux-points : ignoredups ignore une commande identique à la précédente, ignorespace ignore toute commande tapée avec un espace de tête (pratique pour ne pas garder un mot de passe passé en argument), ignoreboth cumule les deux, et erasedups supprime aussi les anciens doublons non consécutifs.

Fichier d'historique et sessions

Tant qu'un shell est ouvert, ses commandes restent en mémoire et ne sont écrites dans ~/.bash_history qu'à sa fermeture normale — d'où le comportement parfois surprenant de plusieurs terminaux ouverts en parallèle, qui n'écrivent pas leur historique dans l'ordre chronologique réel. Quelques commandes permettent de forcer la synchronisation :

history -a   # ajoute l'historique de la session courante au fichier, sans attendre la fermeture du shell
history -w   # réécrit tout l'historique en mémoire dans le fichier
history -c   # vide l'historique en mémoire de la session courante (n'efface pas le fichier)
history -d 42 # supprime l'entrée n°42 de l'historique en mémoire

Rappel et réutilisation de commandes

!!         # rappelle et réexécute la dernière commande
!vi        # rappelle la dernière commande commençant par "vi"
!23        # rappelle la commande n°23 de l'historique
!-2        # rappelle l'avant-dernière commande
!?profile? # rappelle la dernière commande contenant le mot "profile"
^old^new^  # réexécute la dernière commande en remplaçant "old" par "new"

Pour parcourir l'historique de façon interactive plutôt que de deviner le bon !n, Ctrl+R lance une recherche incrémentale (reverse-i-search) : taper quelques lettres affiche la dernière commande correspondante, et répéter Ctrl+R remonte aux occurrences précédentes.

Voir aussi

  • Bashrc — personnalisation du shell (prompt, alias, couleurs)