Généralités
En mode terminal, toutes les commandes passées sont enregistrées dans un fichier historique ¹. On peut aisément les retrouver en utilisant la flèche haut ou bas mais une commande permet de manipuler plus aisément l'historique, c'est la commande...
Code : Tout sélectionner
history
Code : Tout sélectionner
history --help
man history
Code : Tout sélectionner
# forcer l'écriture des commandes de la session dans le fichier historique physique
history -w
# purger l'historique du fichier temporaire (mais pas du fichier physique) depuis le début de session ou la dernière écriture (history -w)
history -c
Code : Tout sélectionner
# liste les 20 dernières commandes
history 20
# reprendre et exécuter la commande n° 123
!123
# reprendre et exécuter la dernière commande commençant par un ou plusieurs mot⋅s⋅ (nano dans l'exemple)
!nano
!nano /etc
Pour éviter l'exécution de la commande on peut suffixer notre rappel avec ":p" qui mettra la commande choisie à la fin de l'historique sans l'exécuter. On la retrouvera (pour la compléter ou la modifier) avec une simple flèche haute
Code : Tout sélectionner
# rappel de la commande 328 ou celle commençant par nano sans l'exécuter
!328:p
!nano:p
# un flèche haute permet de la reprendre et de l'éditer
La recherche d'une commande par le point d'exclamation ne prend que celle dont on fournit le numéro ou la dernière qui commence par le terme. Si on veut toutes les commandes qui contiennent un mot précis, on peut utiliser l'option grep sous la forme
Code : Tout sélectionner
# toutes les commandes qui contiennent apt
history | grep apt
Comme vu précédemment, en faisant suivre le mot history par un nombre, on appliquera la recherche aux seuls n derniers enregistrements
Code : Tout sélectionner
# recherche des commandes contenant apt dans les 20 dernières commandes
history 20 | grep apt
Code : Tout sélectionner
alias hg='history | grep -i'
En enfin, si on veut que cette abréviation soit permanente, on la mettra dans le fichier $HOME/.bash_aliases (il semble préférable de laisser le fichier .bashrc à l'état d'origine au moins pour les alias personnels).
Pour résumer
Code : Tout sélectionner
# mon alias créé, je recherche les commandes contenant "apt"
hg apt
# je sélectionne la commande qui m'intéresse et la met à la fin de mon historique
!227:p
# j'utilise la flèche haute pour la reprendre, l'adapter et l'exécuter
On peut citer:
Code : Tout sélectionner
!?abcdefg?
Code : Tout sélectionner
!-x
Code : Tout sélectionner
!!
- et d'autres...
Les arguments
Là ce sont des options avancées
Code : Tout sélectionner
!!:^
Code : Tout sélectionner
!!:*
Code : Tout sélectionner
!!:$
Code : Tout sélectionner
!n:m
On pourra bien sûr appliquer ces options avancées à la dernière commande (!!) ou à la commande n° n (!n).
¹ Les curieux peuvent jouer avec les fichiers historiques et leurs paramètres en consultant cet article.