L'histoire de bash peut faire beaucoup de choses utiles, et la recherche avec Strg-r
laquelle 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 !1
serait "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 !-3
est 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 !-3
et appuyez sur ENTER
et 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é ENTER
sur "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 shopt
commande. Avec histverify
set, 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 ENTER
vous-même - ou abstenez- vous, si vous le souhaitez.