Le shell Bash intègre des fonctionnalités d'aide à la saisie, à l'édition et la correction sur la ligne de commande.
Ctrl+A | place le curseur en début de ligne |
---|---|
Ctrl+E | place le curseur en fin de ligne |
Alt+F | avance le curseur sur le prochain mot |
Alt+B | recule le curseur sur le prochain mot |
Ctrl+K | coupe du curseur à la fin de ligne |
---|---|
Ctrl+U | coupe du début de la ligne au curseur |
Ctrl+W | coupe le mot avant le curseur |
Alt+D | coupe le mot après le curseur |
Ctrl+Y | coller le contenu du presse papier |
Ctrl+_ | Annuler la dernière action |
Alt+C | Mettre en majuscule la lettre sous le curseur |
---|---|
Alt+L | Mettre en minuscule la lettre sous le curseur |
Ctrl+T | Inverse la lettre sous le curseur avec la précédente |
Alt+T | Inverse le mot sous le curseur avec le précédent |
On utilise régulièrement les mêmes commandes. L'historique des commandes saisies sur une session interactive est conservée. Via cet historique on peut rechercher et rappeler une commande précédemment invoquée.
# afficher les n dernières commandes invoquées history 10 # effacer l'historique history -c # enregistrer l'historique courant dans le fichier history -w .bash_history.backup # ajoute le contenu du fichier à l'historique courant history -r .bash_history.backup
Pour effectuer une recherche dans l'historique, presser Ctrk+R. Le prompt est modifié. Le shell attend alors une chaine de caractère a rechercher dans l'historique
Ctrl+R | recherche inverse, remonte l'historique |
---|---|
Ctrl+S | recherche la commande en descendant l'historique |
Ctrl+O | invoquer la commande |
Ctrl+G | Abandonner la rechercher |
Le caractère ! est interprété par le bash comme le début d'une expression à développer (expansion) permettant de rappeler une commande ou une partie d'une commande, c'est l'expansion de l'historique.
#affiche (sans exécuter) la dernière commande contenant le motif !?motif?:p # rappeler la 3ième commande à partir de la fin de l'historique (plus récente) !-3 # rappeler la commande d'indice 243 !243 # rappeler la commande précédente !! # L'expansion de l'historique n'a pas lieu obligatoirement en début de ligne sudo !! # Appelle la dernière commande en corrigeant motif: ^--ou^--out^ # équivalents !!:s/--ou/--out/ !-1:s/--ou/--out/
L'expansion de l'historique permet également de faire références aux arguments des précédentes commandes:
# le nom de la commande est erroné mais les paramètres corrects $ eho "hello bash!" > file.txt eho : commande introuvable # on corrige le mnémonique est on utilise tous les arguments de la commande précédente: $ echo !*
!* | Tous les arguments, forme abrégée de !!:* |
---|---|
!^ | Premier argument, forme abrégée de !!:^ |
!$ | Dernier argument, forme abrégée de !!:$ |
!!:n | n ième argument de la dernière commande, 0 pour le mnémonique |
!!:n-m | arguments de n à m de la dernière commande |
!2028:$ | dernier argument de la commande commande 2028 |
Pour opérer une substitution sur une commande ou un argument récupéré dans l'historique:
$ wc -c file1.txt 42 file1.txt # ici on crée un nouveau fichier par altération du nom de fichier # récupéré sur l'argument de la commande précédente $ touch !$:s/1/2/ # La substitution a lieu une seule fois. # Pour la répéter plusieurs fois, introduire le symbole g touch !-2:$:gs/1/2/
Comment rappeler la dernière commande?
Quelle commande ou raccourci permet de lister toutes les commandes déjà saisies?
Quel raccourci permet de revenir au début de la ligne de commande ?
Quel raccourci permet de compléter le nom d'une commande, d'un répertoire ou d'un fichier en cours de saisie?