Terminal en remplacement! suivi d’un nombre avec une commande

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 ( '!' ).