Cette question aurait pu être généralisée en "Exécuter la même commande mais avec quelques modifications", car l'une des décisions de design brillantes dans Unix, est que ce qui est implémenté une fois dans le shell, peut être exploité par n'importe quelle commande invoquée à partir du shell.
En d'autres termes, ce truc ne s'applique pas seulement à sudo
:
- Répétez la commande précédente en tant que superutilisateur (
sudo !!
)
- Répétez la commande précédente et calculez le temps d'exécution (
time !!
)
- Répétez la commande précédente avec un environnement différent (
env A=b B=z !!
)
- Répétez la commande précédente (
!!
)
L'expansion de l'historique (aussi connue sous le nom de substitution d'historique) est simplement une fonctionnalité du shell pour faciliter la répétition des commandes précédentes (avec moins de frappes). Consultez la page de manuel de votre shell pour l'expansion de l'historique
. Elle décrit beaucoup d'autres astuces et raccourcis que vous pouvez faire avec l'historique, par exemple :
Vous pouvez vous référer aux commandes précédentes par numéro :
!55 # répéter la commande numéro 55
!-1 # répéter la commande précédente, alias pour !!
!-2 # répéter la commande avant la commande précédente
Vous pouvez vous référer à des mots individuels dans les commandes précédentes :
some-command !$ # exécuter some-command sur le dernier argument de la commande précédente
Vous pouvez également rechercher avant de répéter :
!?awk # répéter la dernière commande incluant la chaîne 'awk'
Vous pouvez rechercher dans l'historique et remplacer quelque chose par autre chose :
!?awk?:s/str1/str2/ # répéter la commande précédente qui correspond à 'awk' en remplaçant str1 par str2
Et bien plus encore, car vous pouvez combiner la sélection de commande, la sélection d'argument, la recherche et le remplacement indépendamment.
La page de manuel de votre shell (dans ce cas man bash
) est votre ami.