GNU/Linux >> Tutoriels Linux >  >> Linux

Comment utiliser les commandes d'historique de Bash

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

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"
foo

Rendre 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 !


Linux
  1. Comment utiliser la commande history sous Linux

  2. Comment effacer l'historique de la ligne de commande BASH sous Linux

  3. Comment effacer l'historique de Bash sous Linux

  4. Comment désactiver la modification de mon historique dans bash

  5. Comment expirer un groupe de commandes dans Bash

Comment utiliser la commande de lecture Bash

Comment utiliser les commandes personnalisées dans LibreOffice

Comment utiliser les opérateurs de test de fichiers Bash sous Linux

Comment installer FFmpeg sous Linux et utiliser les commandes

3 conseils utiles sur l'utilisation de la commande History sous Linux

Comment utiliser les commandes FTP de Linux