Comme je passe de plus en plus de temps dans des sessions de terminal, j'ai l'impression de trouver continuellement de nouvelles commandes qui rendent mes tâches quotidiennes plus efficaces. L'history
GNU commande est celle qui a vraiment changé ma journée de travail.
L'history
GNU La commande 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'history
, mais pour nous les amateurs ou les nouveaux administrateurs système, history
est un gain de productivité immédiat.
Tout d'abord, l'history
command n'est pas réellement une commande. Vous pouvez le constater par vous-même en recherchant la commande sur votre système :
$ which history
which: no history in (/usr/local/bin:/usr/bin:/bin:/usr/games:/usr/local/sbin)
Votre ordinateur ne trouve pas l'history
commande car il s'agit d'un mot-clé intégré de votre shell. Comme il est écrit dans le shell que vous utilisez, le comportement de l'historique peut varier selon que vous utilisez Bash, tcsh, Zsh, dash, fish, ksh, etc. Cet article est basé sur l'implémentation Bash de l'historique, donc certaines fonctions peuvent ne pas fonctionner dans d'autres shells. Cependant, la plupart des fonctions de base sont les mêmes.
Histoire 101
Pour voir l'history
en action, ouvrez un programme terminal sur votre installation Linux et tapez :
$ history
Voici la réponse que j'ai obtenue :
1 clear
2 ls -al
3 sudo dnf update -y
4 history
L'history
commande affiche une liste des commandes saisies depuis le démarrage de la session. La joie de l'history
est que maintenant vous pouvez rejouer n'importe lequel d'entre eux en utilisant une commande telle que :
$ !3
Le !3
La commande à l'invite indique au shell de réexécuter la commande à la ligne 3 de la liste d'historique. Je pourrais également accéder à cette commande en saisissant :
$ !sudo dnf
Cela invite history
pour rechercher la dernière commande qui correspond au modèle que vous avez fourni (dans ce cas, ce modèle est dnf ) et exécutez-le.
Historique des recherches
Vous pouvez également utiliser l'history
pour relancer la dernière commande saisie en tapant !!
. En l'associant à grep
, vous pouvez rechercher des commandes correspondant à un modèle de texte ou, en l'utilisant avec tail
, vous pouvez trouver les dernières commandes que vous avez exécutées. Par exemple :
$ history | grep dnf
3 sudo dnf update -y
5 history | grep dnf
$ history | tail -n 3
4 history
5 history | grep dnf
6 history | tail -n 3
Une autre façon d'accéder à cette fonctionnalité de recherche consiste à taper Ctrl-R
pour invoquer une recherche récursive de votre historique de commandes. Après avoir tapé ceci, l'invite devient :
(reverse-i-search)`':
Vous pouvez maintenant commencer à taper une commande, et les commandes correspondantes seront affichées pour que vous puissiez les exécuter en appuyant sur Retour ou Entrez .
Modifier une commande exécutée
Vous pouvez également utiliser l'history
pour relancer une commande avec une syntaxe différente. Vous pouvez réviser l'historique avec history
. Par exemple, si je veux modifier ma commande précédente history | grep dnf
à history | grep ssh
, je peux exécuter ce qui suit à l'invite :
$ ^dnf^ssh^
La commande est réexécutée, mais avec dnf
remplacé par ssh
. En d'autres termes, cette commande est exécutée :
$ history | grep ssh
Suppression de l'historique
Il peut arriver un moment où vous souhaitez supprimer certaines ou toutes les commandes de votre fichier d'historique. Si vous souhaitez supprimer une commande particulière, entrez history -d <line number>
. Pour effacer tout le contenu du fichier historique, exécutez history -c
.
Le fichier d'historique est stocké dans un fichier que vous pouvez également modifier. Les utilisateurs du shell Bash le trouvent dans leur répertoire personnel sous la forme .bash_history
.
Étapes suivantes
Il y a un certain nombre d'autres choses que vous pouvez faire avec history
:
- Définissez la taille de votre tampon d'historique sur un certain nombre de commandes
- Enregistrer la date et l'heure de chaque ligne dans l'historique
- Empêcher certaines commandes d'être enregistrées dans l'historique
Pour plus d'informations sur l'history
commande et d'autres choses intéressantes que vous pouvez faire avec, jetez un œil aux articles de Seth Kenlon sur l'analyse de l'historique, les modificateurs de recherche d'historique et le manuel GNU Bash.
Cet article a été initialement publié en juin 2018 et a été mis à jour avec des informations supplémentaires par l'éditeur.