Utiliser l’historique Bash

Apperçu rapide

Bash propose des raccourcis bien utiles pour relancer des commandes, ou des bouts de commandes, précédemment exécutées. Cette page va recenser ceux que j’ai trouvés les plus utiles jusqu’à présent.

Quand le présent rejoint le passé, allégorie. Cliquer pour voir l’image en plus grand

Voici quelques exemples d’usage:

# Relance la dernière commande en la faisant précéder par sudo
sudo !!
# Opération inverse: relancer la dernière commande sudo sans sudo
!*
# Pour modifier le dernier fichier visualisé avec less
!less:s/less/vi/

Tableau récapitulatif

Et voici un tableau à garder sous la main en cas de besoin

!! dernière commande
!rm dernière commande qui commence par rm
!?force? dernière commande qui contient force
   
!$ dernier argument de la dernière commande executée
!^ premier argument de la dernière commande executée
!* tous les arguments de la dernière commande executée (synonymes: !!:1* !!:1-$ !!:*)
   
!scp$ dernier argument de la dernière commande qui commence par scp
!scp^ premier argument de la dernière commence qui commence par scp
   
:p affichage au lieu d’exécuter
:h dirname (head)
:t filename (tail)
:r enlève l’extension (peut être utilisé deux fois pour des fichiers tar.gz)
:e retourne l’extension seulement
   
^search^replace remplace search par replace dans la dernière commande
!rm:s/search/replace/ remplace search par replace dans la dernière commande commençant par rm
!rm:sg/search/replace/ remplace partout …
   
sudo !! relance la commande précédente avec sudo
chmod +x !$ un exemple parmi mille de l’utilisation du racourci !$
!scp^:h le chemin du fichier copié par scp (si le fichier était le premier argument à scp ie il n’y avait pas d’options)
   
!grunt:2-$:p affichage tous les arguments sauf le premier de la dernière commande commençant par grunt