Bash a une histoire riche. Autrement dit, c'est un vieux shell avec un ancêtre encore plus ancien (le Bourne shell), mais il a aussi une grande history
commande qui surpasse toutes les autres interfaces d'historique du shell en fonction de son nombre de fonctionnalités. La version Bash de history
permet des recherches inversées, un rappel rapide, la réécriture de l'historique, etc.
L'history
La commande n'est pas comme beaucoup d'autres commandes. Vous pourriez être habitué à ce que les commandes soient des fichiers exécutables placés dans des emplacements communs au niveau du système comme /usr/bin
, /usr/local/bin
, ou ~/bin
. L'history
intégré la commande n'est pas dans votre PATH
et n'a pas d'emplacement physique :
$ quel historique
quel :pas d'historique dans [PATH]
Au lieu de cela, history
est une fonction intégrée du shell lui-même :
$ type history
history est un shell intégré
$ help history
history :history [-c] [-d offset] [n] ou
history -anrw [ filename] ou
history -ps arg [arg...]
Afficher ou manipuler la liste de l'historique.
[...]
Pour cette raison, la fonction d'historique de chaque shell est unique, donc ce que vous utilisez dans Bash peut ne pas fonctionner dans Tcsh ou Fish ou Dash, et ce que vous utilisez dans ceux-ci peut ne pas fonctionner dans Bash. Dans certains cas, savoir ce que Bash peut faire peut inspirer les utilisateurs d'autres shells à créer des hacks intéressants pour cloner le comportement de Bash, et cela peut déverrouiller des fonctionnalités de Bash dont vous ignoriez l'existence.
Afficher votre historique Bash
L'utilisation la plus basique et la plus fréquente de l'history
commande est d'afficher un historique de votre session shell :
$ echo "hello"
hello
$ echo "world"
world
$ history
1 echo "hello"
2 echo "world "
3 historique
Désignateurs d'événements
Plus de ressources Linux
- Aide-mémoire des commandes Linux
- Aide-mémoire des commandes Linux avancées
- Cours en ligne gratuit :Présentation technique de RHEL
- Aide-mémoire sur le réseau Linux
- Aide-mémoire SELinux
- Aide-mémoire sur les commandes courantes de Linux
- Que sont les conteneurs Linux ?
- Nos derniers articles Linux
Les désignateurs d'événements effectuent une recherche dans votre historique par événement. Un événement dans ce contexte est une commande enregistrée dans votre historique, délimitée par un caractère de saut de ligne. En d'autres termes, il s'agit d'une ligne, marquée par un numéro d'index pour référence.
Les désignateurs d'événements commencent généralement par un point d'exclamation, parfois aussi appelé bang (!
).
Pour relancer une commande depuis votre historique, utilisez le point d'exclamation suivi immédiatement (sans espace) du numéro d'index de la commande souhaitée. Par exemple, supposons que la ligne 1 contienne la commande echo "hello"
, et vous souhaitez l'exécuter à nouveau :
$ !1
écho "bonjour"
bonjour
Vous pouvez utiliser le positionnement relatif en fournissant un nombre négatif de lignes à partir de votre position actuelle dans l'historique. Par exemple, pour remonter trois entrées dans l'historique :
$ echo "foo"
foo
$ echo "bar"
bar
$ echo "baz"
baz
$ !-3
écho "foo"
foo
Si vous ne faites que revenir en arrière d'une ligne, vous pouvez utiliser le raccourci !!
au lieu de !-1
. C'est une économie d'une frappe entière !
$ echo "foo"
$ !!
echo "foo"
foo
Recherche de chaîne
Vous pouvez également rechercher une chaîne spécifique dans les entrées, en sens inverse, pour qu'une commande s'exécute. Pour rechercher une commande commençant avec une chaîne spécifique, utilisez un point d'exclamation suivi immédiatement (sans espace) de la chaîne que vous souhaitez rechercher :
$ echo "foo"
$ vrai
$ faux
$ !echo
echo "foo"
foo
Vous pouvez également rechercher une commande contenant une chaîne à n'importe quelle position (pas seulement au début). Pour ce faire, utilisez !
plus la chaîne que vous recherchez, comme d'habitude, mais entourez la chaîne de points d'interrogation à chaque extrémité. Vous pouvez omettre le point d'interrogation à la fin si vous savez que la chaîne est immédiatement suivie d'un caractère de nouvelle ligne (ce qui signifie que c'est la dernière chose que vous avez tapée avant d'appuyer sur Entrée ):
$ echo "foo"
$ vrai
$ faux
$ !?foo?
echo "foo"
foo
Substitution de chaîne
Semblable à la recherche de chaînes au début d'une ligne, vous pouvez rechercher une chaîne et la remplacer par une nouvelle chaîne, en modifiant la commande :
$ echo "hello"
hello
$ echo "world"
world
$ ^hello^foo
echo "foo"
fooRendre l'historique utile
Dans Bash, la commande history est capable de bien plus que ce qui a été couvert ici, mais c'est un bon début pour s'habituer à utiliser votre histoire au lieu de simplement la traiter comme une référence. Utiliser l'
history
commandez souvent et voyez tout ce que vous pouvez faire sans avoir à taper de commandes. Vous pourriez vous surprendre !