Astuce shell : réutiliser les paramètres d'une commande précédente


Tux terminal
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.

    RépondreRépondre
    pti-seb , le 11 mars 2008 à 20:53
  •  

    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. ;)

    RépondreRépondre
    Ricard , le 11 mars 2008 à 20:42
  •  

    Et hop... Un bookmark :)

    RépondreRépondre
    Ricard , le 11 mars 2008 à 22:16
  •  

    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.

    RépondreRépondre
    badzil , le 12 mars 2008 à 10:24
  •  

    @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

    RépondreRépondre
    pti-seb , le 12 mars 2008 à 11:54
  •  

    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.

    RépondreRépondre
    Gregoware , le 13 mars 2008 à 19:19
  •  

    @Gregoware : "<Esc> ." aussi. Et je confirme, c'est un des bindkeys que j'utilise le plus chaque jour ;)

    RépondreRépondre
    Gore , le 14 mars 2008 à 19:42
 

Ajouter un commentaire

actualité android apache apple astuce astuces bash bilboblog blog boot chrome clavier commande commandes conky date debian Desktop développement elementary exploit faille fedora firefox flash gimp gnome google graphique Graphisme hack hacking Hardware humour intel internet iphone jailbreak Jeux Kde kernel libre Linux log logiciels Logiciels Libres lucid lynx maemo mail maquette metasploit microsoft mobile mockup monitoring mozilla multi-touch musique mysql n900 nautilus nokia noyau openoffice open source password photos php Planet publicité red hat redhat rpm réseau screenshot script serveur serveurs shell sql ssh statistiques sysadmin system Sécurité thème tux-planet tv twitter ubuntu unity vidéo vidéos vlc voyage wallpaper windows wordpress yum