Astuce shell : réutiliser les paramètres d'une commande précédente
Lorsque l'on utilise un shell sous Linux, il arrive fréquemment de devoir réécrire un paramètre d'une commande précédente.
Voici un exemple courant pour mieux comprendre :
cat /home/pti-seb/fichier.txt
rm -f /home/pti-seb/fichier.txt
Sous bash, il existe une astuce qui permet de reprendre ce paramètre très facilement. Il suffit d'utiliser le symbole point d'exclamation (!) comme ceci :
ls -l /etc/passwd
ls -l !*
ls -l -l /etc/passwd
L'étoile indique ici de reprendre tous les paramètres de la dernière commande. On pourra choisir de récupérer uniquement certains paramètres en fonction de leur position :
cat /var/log/messages /var/log/secure
Ce qui donnera cela si l'on veut ouvrir le premier fichier : vim !:1
ou cela si l'on veut ouvrir le second : vim !:2
Les plus expérimentés pourront même définir des plages de paramètres :
touch monfichier1 monfichier2 monfichier3 monfichier4
rm -f !:1-3
rm -f monfichier1 monfichier2 monfichier3
Ici on n'a seulement effacé les trois premiers fichiers.
7 Commentaires pour "Astuce shell : réutiliser les paramètres d'une commande précédente"
Flux des commentaires de cet article Ajouter un commentaire@Ricard : héhé.
Sinon au passage, je précise qu'il existe aussi le raccourci Alt+. (comme expliqué ici : raccourcis clavier sous bash) qui permet de rappeler seulement le dernier paramètres.
Bien sympa cette astuce. Je ne connaissais pas. En général, je me sers de " !! " qui répète la dernière commande tapée. Une bonne astuce à ajouter à mon carnet.
Et hop... Un bookmark
Plutôt que de faire :
[root@localhost ~]# ls -l !*
je préfère utiliser !$ qui ne reprend que le dernier paramètre. Ca évite de doubler le '-l' par exemple.
@Badzil : tu as raison pour l'option "-l" qui a été reprise dans mon exemple. En faite il a plusieurs variantes visiblement :
!* : tous les paramètres
!$ : le dernier paramètre
!^ : le premier paramètre
Et : <Esc> _ : rappelle le dernier mot de la commande précédente
C'est comme le <Tab>, une fois dans les doigts, on ne s'en passe plus.
@Gregoware : "<Esc> ." aussi. Et je confirme, c'est un des bindkeys que j'utilise le plus chaque jour