Linux - Travailler avec l'historique de vos dernières commandes
Maîtrisez l'historique de votre ligne de commande Linux. Apprenez à afficher, localiser (.bash_history, .zsh_history) et gérer vos commandes précédemment exécutées grâce à quelques astuces essentielles.
Traduction automatique
Cet article a plus d'un an, mais il a été relu le 30 juillet 2026 — son contenu est toujours exact.
Cet article fait partie de la série Personnaliser votre shell avec ZSH :
- Personnalisez votre prompt Linux avec Powerlevel10k
- Comment installer Oh-My-ZSH
- Autosuggestions dans la console avec ZSH
- La coloration syntaxique dans la console avec ZSH
- Linux - Travailler avec l'historique de vos dernières commandes
- Fonctions ZSH - Personnaliser votre shell pour gérer Docker
- Au-delà du monolithe - Organiser son workflow ZSH comme un pro

Cet article traite de l'historique du shell sous Bash/ZSH : localiser le fichier d'historique via $HISTFILE, exclure les commandes sensibles avec HISTIGNORE/HISTORY_IGNORE ou une espace en début de ligne (hist_ignore_space), filtrer avec history | grep, faire une recherche floue via CTRL+R, utiliser zsh-autosuggestions pour éviter complètement la recherche manuelle, et supprimer des entrées précises avec history -d.
Pour moi, l'une des forces indéniables de la ligne de commande sous Linux, c'est la gestion de l'historique des commandes déjà exécutées.
La plus grosse amélioration que vous pouvez apporter à cet historique, c'est fzf : il transforme CTRL+R en une recherche floue et interactive au lieu d'une recherche linéaire. Si vous voulez quelque chose de plus structuré — avec horodatage, codes de sortie, répertoire de travail et synchronisation multi-machines en option — Atuin remplace complètement le fichier d'historique plat par une base de données SQLite.
Pouvoir appuyer sur les touches Haut ou Bas du clavier pour revenir aux commandes lancées précédemment, waouh.
Pour les plus anciens, il y avait DOSKEY sous MSDos, mais Linux va beaucoup plus loin.
Voyons quelques astuces.
Obtenir votre historique
Commençons par le début : pour afficher la liste des commandes que vous avez saisies par le passé, lancez simplement history dans une console Linux.
Emplacement de votre historique
Par défaut, votre historique est stocké dans un fichier appelé .bash_history dans votre répertoire personnel. Vous pouvez afficher les cinq dernières commandes, par exemple, en lançant tail -n5 ~/.bash_history.
De mon côté, comme j'utilise ZSH, mon historique se trouve dans `~/.zsh_history`.
Le moyen le plus simple de savoir où votre historique est stocké est d'afficher le contenu de la variable $HISTFILE comme ceci : echo $HISTFILE.
Information
Très récemment, j'ai dû reprendre un script développé par un collègue (appelons-le JohnDoe) et je ne savais pas comment l'appeler depuis la ligne de commande ni quels paramètres lui passer.
Comme je suis root user sur le serveur, j'ai simplement consulté son historique. Il m'a suffi d'afficher son fichier /home/john_doe/.bash_history.
Variables HISTIGNORE // HISTORY_IGNORE
La variable HISTIGNORE (pour Bash) ou HISTORY_IGNORE (ZSH) permet de spécifier des motifs que vous ne voulez pas voir enregistrés dans votre fichier d'historique.
Prenons un exemple : HISTIGNORE="sudo *" empêchera toutes les commandes commençant par sudo d'être écrites dans le fichier d'historique.
Vous pouvez aussi utiliser un motif comme HISTIGNORE="*password*" pour éviter que les commandes contenant le mot password soient écrites.
Pour pouvoir spécifier plus d'une règle, utilisez le caractère deux-points : comme dans HISTIGNORE="sudo *:*password*".
Ne pas mettre une commande précise dans l'historique
Imaginez une commande comme curl --user name:password http://www.example.com. Vouliez-vous vraiment mettre cette commande (donc votre login et votre mot de passe en clair) dans le fichier d'historique ?
Avec ZSH, il me suffit d'ajouter une espace avant ma commande, donc en lançant [SPACE]curl --user name:password http://www.example.com.
# So, don't start your command like this:
$ curl --user name:password http://www.example.com
# v--- But just add a space character before
$ curl --user name:password http://www.example.com
Information
Le caractère espace est pris en charge par l'option hist_ignore_space, définie dans .oh-my-zsh/lib/history.zsh.
Utiliser grep pour filtrer votre historique
Disons que vous voulez retrouver les dernières instructions docker exec que vous avez lancées : history | grep -i "docker exec", c'est-à-dire simplement envoyer via un pipe la sortie de la commande history vers grep et appliquer un filtre (insensible à la casse grâce au flag -i).
De mon côté, je n'en ai pas besoin parce que j'utilise CTRL+R sous ZSH.
CTRL-R est votre ami
Les touches CTRL+R affichent une petite fenêtre popup (sous Bash comme sous ZSH) et vous pourrez rechercher rapidement dans l'historique de vos commandes.
Voici l'apparence sous ZSH ; bien plus agréable et plus simple que sous Bash.

Appuyez donc sur CTRL+R puis commencez à taper quelques lettres comme gacom et chaque entrée contenant ces lettres (comme git add . ; git commit ...) sera retrouvée.
Ce popup reste toutefois un parcours linéaire dans un fichier texte plat : pas d'horodatage, pas de code de sortie, aucune idée du dossier dans lequel vous étiez. Si cette limitation commence à vous gêner, Atuin reconstruit le même raccourci CTRL+R au-dessus d'une base de données SQLite et conserve tout ce contexte pour vous.
Autosuggestions dans la console avec ZSH
En utilisant ZSH et zsh-autosuggestion (voir mon article précédent), vous n'avez même plus à vous soucier de l'historique.
Commencez juste à taper les premières lettres d'une commande comme doc et toutes vos instructions docker précédentes seront accessibles (utilisez les touches de navigation pour sélectionner une commande précédente ou tapez quelques lettres de plus pour affiner).
Supprimer une instruction de votre historique
Aïe ! Vous avez oublié d'ajouter une espace avant votre instruction confidentielle et, du coup, elle est maintenant stockée dans l'historique.
Pas de panique ! Le fichier d'historique est... un fichier, donc lancez simplement vi $HISTFILE et vous pouvez l'éditer.
Ou, peut-être plus simple, utilisez history -d suivi du numéro de ligne tel qu'affiché dans la sortie de l'historique.
Donc si la sortie de history est celle ci-dessous, je peux supprimer la ligne vi en lançant history -d 2130
Information
Mais, ensuite, la commande history -d 2130 apparaîtra dans l'historique, évidemment. Éditer le fichier avec un éditeur de texte est donc peut-être plus... discret.
Remarque
Vous pouvez spécifier une plage comme history -d 2100-2130 (Bash 5.1+).
Cet article fait partie de la série Personnaliser votre shell avec ZSH :
- Personnalisez votre prompt Linux avec Powerlevel10k
- Comment installer Oh-My-ZSH
- Autosuggestions dans la console avec ZSH
- La coloration syntaxique dans la console avec ZSH
- Linux - Travailler avec l'historique de vos dernières commandes
- Fonctions ZSH - Personnaliser votre shell pour gérer Docker
- Au-delà du monolithe - Organiser son workflow ZSH comme un pro





