Menu Fermer

Comment utiliser la commande history de Linux

La commande history sous Linux est un outil intégré au shell qui affiche une liste des commandes utilisées dans la session du terminal. L’historique permet aux utilisateurs de réutiliser n’importe quelle commande listée sans avoir à la retaper.

Dans ce tutoriel, je vous montre comment fonctionne la commande history et les différentes façons de l’utiliser à l’aide d’exemple.

Comment utiliser la commande history de Linux

Comment utiliser la commande history de Linux avec des exemples

La commande GNU history conserve une liste de toutes les autres commandes qui ont été exécutées à partir de cette session de terminal, puis vous permet de rejouer ou de réutiliser ces commandes au lieu de les retaper.
Si vous êtes un utilisateur de terminal expérimenté, vous connaissez la puissance de l’historique, mais pour nous, les amateurs ou les nouveaux administrateurs de systèmes, l’historique est un gain de productivité immédiat.

Afficher la liste des commandes exécutées

Lorsque vous utilisez la commande seule, elle affiche la liste des dernières commandes exécutées.

history
Afficher la liste des commandes exécutées avec la commande history de Linux

Pour afficher la liste de l’historique des commandes avec un nombre limité d’entrées, ajoutez ce nombre à la commande history. Par exemple, pour afficher uniquement les dix dernières entrées, utilisez :

history 10
Afficher la liste des commandes exécutées avec la commande history de Linux

Exécuter à nouveau une commande depuis l’historique

L’exécution de la commande history vous permet de réutiliser n’importe quelle commande de la liste. Par exemple, pour exécuter à nouveau la première commande (sudo apt update), utilisez :

!24
Exécuter à nouveau une commande depuis l'historique Linux

L’ajout d’un tiret (-) devant le numéro de la commande fait commencer le comptage à partir de la fin de la liste. Par exemple, pour réutiliser la dixième dernière commande, utilisez :

!-10
Exécuter à nouveau une commande depuis l'historique Linux

Réutilisation d’une commande de la liste d’historique, en commençant par la fin.
Utilisez des points d’exclamation doubles pour répéter la dernière commande :

!!

Rechercher une commande par chaîne

L’ajout d’une chaîne après le point d’exclamation exécute la dernière commande qui commence par cette chaîne. Par exemple, pour réutiliser la dernière commande qui commence par ping, utilisez :

!ping
Rechercher une commande par chaîne avec la commande history de Linux

L’utilisation de cette méthode peut entraîner des problèmes si le shell exécute une commande inattendue, notamment lors de la recherche d’une commande commençant par sudo. Par précaution, l’ajout de l’argument :p permet d’afficher la commande sans l’exécuter, ce qui vous permet de l’examiner et de décider si vous souhaitez l’exécuter.

!sudo:p
Rechercher une commande par chaîne avec la commande history de Linux

Pour rechercher une commande qui contient une chaîne de caractères, mais qui ne commence pas forcément par celle-ci, ajoutez un point d’interrogation à côté du point d’exclamation. Par exemple, pour réutiliser la dernière commande qui contient upgrade :

!?upgrade

Dans l’exemple ci-dessus, l’interpréteur de commandes réutilise la dernière commande qui contient la chaîne upgrade, il s’agit de la commande apt ugprade.

Rechercher une commande par chaîne avec la commande history de Linux

Lister et chercher des commandes avec history

La combinaison de history et grep vous permet d’afficher une liste de commandes contenant une chaîne. Par exemple, pour lister toutes les commandes qui contiennent apt, utilisez :

history | grep apt
Lister et chercher des commandes avec la commande history

Modifier la commande exécutée

Vous pouvez également utiliser l’historique pour réexécuter une commande avec une syntaxe différente.
Pour cela, utilisez la syntaxe suivante :

^[ancienne chaîne]^[nouvelle chaîne]^

Par exemple, si je veux changer ma commande précédente history | grep apt en history | grep ssh,

^apt^ssh^

La commande est réexécutée, mais avec apt remplacé par ssh. En d’autres termes, cette commande est exécutée :

history | grep ssh
Modifier la commande exécutée dans le shell Linux

Empêcher l’enregistrement des commandes dans l’historique

Pour empêcher l’enregistrement des commandes dans la liste d’historique, désactivez temporairement l’enregistrement en utilisant :

set +o history

Pour réactiver l’enregistrement, utilisez

set -o history

Supprimer l’historique des commandes

Utilisez l’option -d avec la commande history pour supprimer une commande de la liste de l’historique. Par exemple, supprimez la commande numéro 87 avec :

history -d 4
Supprimer l'historique des commandes de Linux

Utilisez l’option -c pour effacer toute la liste d’historique :

history -c
Supprimer l'historique des commandes de Linux

Mettre à jour le fichier d’historique

Le shell Bash enregistre toutes les mises à jour de la liste de l’historique des commandes lorsque vous quittez la session du terminal. La commande history vous permet également d’enregistrer les modifications pendant la session du terminal.

L’option -a vous permet d’ajouter les entrées de l’historique des commandes de cette session au fichier .bash_history :

history -a

Une autre méthode consiste à utiliser l’option -w pour enregistrer la liste complète de l’historique dans le fichier .bash_history :

history -w