Historique

Utiliser l’historique


Expansion d’historique

Commandes

             
!! La dernière commande de l'historique
!! est couramment appelé "bang bang"
sudo !! # re-execute la derniere commande en mode admin
!11 La commande n°11 de l'historique
!-2 L'avant-dernière commande de l'historique
!ssh La dernière commande qui commence par "ssh"
!?apt-get La dernière commande qui contient "apt-get"
!# La commande en cours
echo a !# execute echo aecho a (affiche "aecho a")

On peut ajouter des “filtres” à ces expansions:

             
!!:p Afficher la dernière commande executée
!11:- Executer la commande n°11 en supprimant le dernier argument
11                  npm install -S package
!11:- newpackage     npm install -S newpackage
!11:s/abc/def Executer la commande n°11 et remplacer la PREMIERE occurence de "abc" en "def"
Il est possible de cumuler les substitutions
!11:s/abc/def:s/ghi/jkl
!11:gs/abc/def Executer la commande n°11 et remplacer TOUTES les occurences de "abc" en "def"

Raccourcis pour la dernière commande:

             
^acb^def Executer la dernière commande et remplacer la première occurence de "abc" en "def"
Particulièrement utile pour les fautes de frappe
^atp^apt

Paramètres des commandes

             
!:* Tous les arguments de la dernière commande
!611:* Tous les arguments de la commande n°611
!-2:* Tous les arguments de l'avant-dernière commande

On peut cibler différentes commandes de l’historique de la même manière qu’avec * pour les expansions de paramètre qui suivent :

</td>
             
!11:$ Le dernier argument de la commande n°11
ls /media/F468-BB77/Music
find . -ctime 0 -exec cp -v {} !$ \;
# recopier les fichiers crées aujourd'hui dans "/media/..."
!11:^ Le premier argument de la commande 11
!11:$:h Le dernier argument de la commande n°11, en supprimant le nom de fichier du path (= récupérer ce qui est avant le dernier /)
du -sh /home/tom/work/doc.txt
cd !$:h # cd /home/tom/work
!11:$:t Le dernier argument de la commande n°11, en supprimant le nom de dossier du path (= récupérer ce qui est après le dernier /)
ls /home/tom/work/doc.txt
echo document=!$:t # document=doc.txt
!11:$:r Le dernier argument de la commande n°11, en supprimant l'extension du fichier (= récupérer ce qui est avant le dernier .)
vi /home/tom/work/doc.txt
echo stripext=!$:r # stripext=/home/tom/work/doc
!11:$:e Le dernier argument de la commande n°11, uniquement l'extension du fichier (= récupérer ce qui est après le dernier .)
vi /home/tom/work/doc.txt
echo extonly=!$:e # extonly=.txt
!11:$:t:r Le dernier argument de la commande n°11, uniquement le nom de fichier moins l'extension (= récupérer ce qui est après le dernier / et avant le dernier .)
vi /home/tom/work/doc.txt
echo filename=!$:t:r # filename=doc
!11:2 Le 2ème argument de la commande n°11
!11:3-5 Les arguments 3 à 5 (= 3,4,5) de la commande n°11
!11:3* De l'argument 3 au dernier argument (= de 3 à n) de la commande n°11
!11:3- De l'argument 3 à l'avant-dernier argument (= de 3 à n-1) de la commande n°11

.bash_history

Supprimer l’historique

Variables d’environnement