L'histoire de bash peut faire beaucoup de choses utiles, et la recherche avec Strg-rlaquelle Terry Wang a mentionné est importante parmi elles. Mais il est également possible de faire exactement ce que vous avez demandé.
Vous pouvez refaire la commande précédente avec !!. Avec cela, vous pouvez également modifier la commande précédente. Si, par exemple, vous avez oublié d'obtenir les privilèges root pour une commande
apt-get install a-long-list-of-packages
vous n'avez pas besoin de retaper tout cela à nouveau. Appelez plutôt
sudo !!
Si vous souhaitez réexécuter la commande à un emplacement spécifique de votre historique, vous pouvez également utiliser !, par exemple
!3
pour réexécuter la commande en position 3. Sachez que cela compte à partir du haut. Donc, si vous stockez 500 commandes dans votre historique, ce !1serait "500 commandes auparavant". Vous pouvez également utiliser des nombres négatifs. Par exemple
!-2
ré-exécuterait l'avant-dernière commande.
Vous pouvez également réexécuter la dernière commande qui a commencé avec une chaîne comme
!apt-
qui refait la dernière ligne commençant par "apt-". Si vous voulez que la dernière commande où la chaîne apparaisse n'importe où dans la ligne, vous pouvez utiliser quelque chose comme
!?pt-ge
Il y a des choses plus intéressantes que l'histoire de bash peut faire. Juste pour donner une impression du large éventail de possibilités, vous pouvez spécifiquement accéder à un paramètre d'une commande de l'historique. Donc
!-5:3:p
imprimerait le troisième paramètre au cinquième de la dernière commande.
EDIT: Concernant le commentaire de Rudie ci-dessous, avec les paramètres standard, ces extensions d'historique bash sont en effet exécutées directement. Il est probablement mieux décrit comme ceci: un appel comme !-3est remplacé par le shell avec l'avant-dernière commande de votre historique, puis votre entrée (avec le remplacement) exécutée. Donc, si vous tapez !-3et appuyez sur ENTERet que votre troisième dernière commande était ls ~, c'est en fait la même chose que si vous avez tapé à ls ~nouveau et appuyé ENTERsur "par vous-même".
Si vous ne le souhaitez pas, vous pouvez définir l'option shell histverify. Pour définir et désactiver les options du shell, vous souhaiterez peut-être lire la shoptcommande. Avec histverifyset, un appel comme !-3écrit uniquement le remplacement de votre historique sur votre ligne de commande, mais ne l'exécute pas directement. Vous avez donc, pour parler, appuyez sur le crucial ENTERvous-même - ou abstenez- vous, si vous le souhaitez.