Essa é a expansão do histórico de bash
, por exemplo,
!87
reexecuta o comando da linha de histórico 87
.
Você encontra a descrição desse recurso em man bash
, seção “EXPANSÃO DA HISTÓRIA”:
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.
Então, para chamar rapidamente o último comando, faça !-1
e, para o quinto último comando, !-5
. Um sinônimo útil para !-1
é !!
- se você ligou por exemplo apt install something
e esqueci o sudo
, apenas execute sudo !!
e você está bem.
Somente barra invertida ( \ ) e aspas simples podem citar o caractere de expansão do histórico.
Para evitar a expansão do histórico, você precisa escapar do ponto de exclamação com uma barra invertida ( \!
) ou usar aspas simples ( '!'
).