La commande history sous Linux (Histoire de Bash)
La commande History de Linux est un outil puissant pour les utilisateurs de l’interpréteur de commandes Bash. Elle conserve la trace des commandes précédemment exécutées, ce qui permet aux utilisateurs de visualiser, de rappeler et même de réexécuter des commandes sans avoir à les taper à nouveau. Cela permet d’augmenter considérablement la productivité en gagnant du temps et en réduisant les risques d’erreurs lors de la ressaisie de longues commandes.
Qu’est-ce que l’historique de Bash ?
Bash, comme beaucoup d’autres shells, conserve un enregistrement des commandes saisies dans un fichier d’historique. Dans la plupart des distributions Linux, cet historique est stocké dans un fichier appelé .bash_history dans le répertoire personnel de chaque utilisateur (~/.bash_history). Par défaut, chaque commande saisie dans l’interpréteur de commandes est ajoutée à ce fichier à la fin de la session, ce qui permet aux utilisateurs de revoir les commandes des sessions précédentes.
Utilisation de base de la commande history
La commande history est simple à utiliser et permet de visualiser et d’interagir avec l’historique des commandes. Voici quelques-unes des utilisations les plus courantes :
- Afficher l’historique des commandes :
L’exécution de la commande history sans aucun argument affiche une liste des commandes les plus récentes que vous avez saisies, ainsi qu’un numéro à côté de chaque commande.historique
Ceci affiche les n dernières commandes, où n est typiquement autour de 500 ou 1000 selon la configuration de votre système.
- Spécifier le nombre de commandes :
Vous pouvez limiter le nombre de commandes affichées en spécifiant un nombre. Par exemple, pour afficher les 10 dernières commandes :historique 10
Rappel des commandes de l’historique
La commande “historique” permet également de rappeler et de réutiliser facilement des commandes exécutées précédemment :
- En utilisant la notation ! (point d’exclamation) :
Cela vous permet de réexécuter des commandes directement à partir de l’historique :- ! ! – Exécute à nouveau la dernière commande que vous avez exécutée.
! !
- !n – Exécute la commande à la position n dans la liste historique.
!42
Exécute à nouveau la commande répertoriée au numéro 42 dans l’historique.
- !string – Recherche la commande la plus récente commençant par string et l’exécute.
!git
Cette commande exécute la commande la plus récente commençant par git.
- ! ! – Exécute à nouveau la dernière commande que vous avez exécutée.
- Utilisation des touches fléchées :
Vous pouvez utiliser les touches fléchées vers le haut et vers le bas pour faire défiler les commandes précédentes directement dans le terminal. Cette fonction est particulièrement utile pour retrouver rapidement les commandes récentes.
Édition et modification de l’historique
- Supprimer des entrées spécifiques :
Vous pouvez supprimer une commande spécifique de l’historique en utilisant history -d suivi du numéro de ligne :history -d 42
Ceci supprimera la commande à la ligne 42 dans la liste de l’historique.
- Effacer tout l’historique :
Pour supprimer toutes les commandes du fichier historique, utilisez :history -c
Cette commande efface l’historique de la session en cours. Pour effacer également l’historique sauvegardé dans ~/.bash_history, écrasez le fichier :
history -c && > ~/.bash_history
Configuration de l’historique de Bash
Le comportement de l’historique peut être personnalisé au moyen de variables d’environnement et de paramètres de configuration dans les fichiers ~/.bashrc ou ~/.bash_profile :
- HISTSIZE :
Cette variable contrôle le nombre de commandes conservées en mémoire au cours d’une session. Par exemple, pour conserver 1000 commandes :export HISTSIZE=1000
- HISTFILESIZE :
Cette variable définit le nombre de lignes (commandes) qui sont enregistrées dans le fichier ~/.bash_history. Par exemple, pour conserver 1000 commandes : export HISTSIZE=1000export HISTFILESIZE=2000
Cela signifie que 2000 commandes seront conservées dans le fichier d’historique même après la déconnexion.
- HISTCONTROL :
Cette variable détermine la manière dont les commandes sont stockées. Les options courantes sont les suivantes :- ignoredups – Empêche les commandes dupliquées d’être ajoutées à l’historique.
- ignorespace – Les commandes qui commencent par un espace ne sont pas ajoutées à l’historique.
- ignoreboth – Combine ignoredups et ignorespace.
Exemple de réglage de HISTCONTROL pour ignorer les doublons :
export HISTCONTROL=ignoredups
- HISTTIMEFORMAT :
Pour inclure un horodatage dans chaque entrée de l’historique, définissez HISTTIMEFORMAT :export HISTTIMEFORMAT="%F %T "
Chaque entrée de l’historique sera ainsi précédée de la date (%F) et de l’heure (%T).
Recherche dans l’historique
- Recherche inversée avec Ctrl r :
L’un des moyens les plus efficaces pour rechercher une commande dans votre historique est d’utiliser Ctrl r. Commencez à taper une partie de la commande et Bash trouvera les commandes correspondantes au fur et à mesure que vous les tapez. En appuyant à nouveau sur Ctrl r, vous ferez défiler les correspondances précédentes. - Grep avec historique :
Vous pouvez également utiliser grep pour rechercher dans la sortie de l’historique :history | grep git
Cette commande affichera toutes les commandes contenant le mot git.
Conclusion
La commande d’historique est un élément fondamental du travail avec l’interpréteur de commandes Bash, car elle permet de garder une trace des commandes passées et de rationaliser les flux de travail. Grâce à sa capacité à rappeler, rechercher et personnaliser l’historique des commandes, elle contribue à rendre les opérations en ligne de commande plus efficaces et plus conviviales. En maîtrisant l’historique et ses fonctions connexes, les utilisateurs peuvent accélérer considérablement leur travail dans les environnements Linux.