Je suis très confus au sujet de ma session de terminal Ubuntu, il semble remplacer les sections dans les commandes qui commencent par !
suivi d’un nombre avec des commandes apparemment aléatoires. Il le fait avec !87
remplaçant par screen -l
et également en !88
et l’a remplacé par ls
.
Toute idée de ce qui se passe serait très appréciée.
C’est l’expansion de l’histoire de bash
, par exemple
!87
ré-exécute la commande de la ligne d’historique 87
.
Vous trouverez la description de cette fonctionnalité dans 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 la cinquième dernière commande !-5
. Un synonyme pratique pour !-1
is !!
– Si vous avez appelé, par exemple, apt install something
et que vous avez oublié le sudo
, exécutez simplement sudo !!
et vous êtes bon.
Seules les barres obliques inverses ( \ ) et guillemets simples peuvent citer le caractère d’extension de l’historique.
Pour éviter l’expansion de l’historique, vous devez soit échapper le point d’exclamation avec une barre oblique inverse ( \!
), Soit utiliser des guillemets simples ( '!'
).