C'est l' bash
expansion de l'histoire, par exemple
!87
réexécute la commande à partir de la ligne d'historique 87
.
Vous trouverez la description de cette fonctionnalité dans la man bash
section «EXPANSION DE L'HISTORIQUE»:
An event designator is a reference to a command line entry in the
history list. Unless the reference is absolute, events are relative to
the current position in the history list.
! Start a history substitution, except when followed by a blank,
newline, carriage return, = or ( (when the extglob shell option
is enabled using the shopt builtin).
!n Refer to command line n.
!-n Refer to the current command minus n.
Donc, pour appeler rapidement la dernière commande, faites !-1
et pour l'avant-dernière commande !-5
. Un synonyme pratique pour !-1
est !!
- si vous avez appelé par exemple apt install something
et oublié le sudo
, exécutez simplement sudo !!
et vous êtes bon.
Seule la barre oblique inverse ( \ ) et les guillemets simples peuvent citer le caractère d'expansion de l'historique.
Pour éviter l'expansion de l'historique, vous devez soit échapper le point d'exclamation avec une barre oblique inverse ( \!
) ou utiliser des guillemets simples ( '!'
).