Les raccourcis clavier de Bash

En tant qu’adminsys, le terminal est probablement l’application dans laquelle je passe le plus de temps. Du coup, afin d’être le plus efficace possible, ça vaut peut-être le coup d’apprendre à s’en servir efficacement. Notamment via les raccourcis clavier qui peuvent permettre de gagner en confort et en temps.

Voici donc une petite liste des combinaisons que je trouve potentiellement intéressantes. Avec, en bonus, la signification derrière le choix de la touche, quand je la connais et/ou qu’il y en a une, ce qui peut aider à retenir la combinaison le cas échéant.

Petite précision, ces raccourcis ne sont pas spécifiquement liés à Bash, mais (pour la plupart) à la bibliothèque Readline (utilisée par Bash, entre autres). Merci à Olm pour la remarque.

Déplacement

  • Ctrl + A : aller au début de la ligne
  • Ctrl + E : aller à la fin de la ligne (End)
  • Ctrl + F : aller un caractère en avant (Forward)
  • Ctrl + B : aller un caractère en arrière (Backward)
  • Alt + B : aller un mot en arrière (Backward)
  • Alt + F : aller un mot en avant (Forward)
  • Ctrl + XX : aller et revenir entre le début de la ligne et la position actuelle du curseur
  • Ctrl + L : vider le terminal

Historique

  • Ctrl + P : afficher la commande précédente dans l’historique (Previous)
  • Ctrl + N : afficher la commande suivante dans l’historique (Next)
  • Alt + < : aller au début de l’historique
  • Alt + > : aller à la fin de l’historique
  • Ctrl + R : rechercher une commande (Reverse)
    • ensuite il suffit de commencer à écrire les caractères de la commande en question
    • Ctrl + R : remonter dans l’historique de recherche
    • Ctrl + S : redescendre dans l’historique de recherche, si ce n’est pas déjà utilisé par le contrôle de flux, ce qui est généralement le cas (Search)
    • Ctrl + G : quitter la recherche sans rien exécuter
  • Alt + R : annuler les changements en cours dans une commande de l’historique (Revert)
  • Ctrl + Alt + Y : insérer le premier argument de la commande précédente (Yanking)
  • Alt + . ou Alt + _ : insérer la dernière chaîne de caractères de la commande précédente
    • répéter la commande pour remonter dans l’historique

Modification

  • Ctrl + U : supprimer avant le curseur jusqu’au début de la ligne
  • Ctrl + K : supprimer depuis le curseur jusqu’à la fin de la ligne (Killing)
  • Ctrl + W : supprimer avant le curseur jusqu’au début de la chaîne
  • Alt + D : supprimer depuis le curseur jusqu’à la fin de la chaîne
  • Ctrl + Y : restaurer ce qui a été supprimé avec l’une des combinaisons (Yanking)
    • Alt + Y : remonter de l’historique du « kill ring » et ainsi restaurer d’anciennes suppressions
  • Ctrl + D : supprimer le caractère sous le curseur, comme Suppr
  • Ctrl + H : supprimer le caractère avant le curseur, comme Retour
  • Ctrl + J ou Ctrl + M : valide la commande, comme Entrée
  • Alt + U : mettre en majuscule depuis le curseur jusqu’à la fin de la chaîne (Uppercase)
  • Alt + L : mettre en minuscule depuis le curseur jusqu’à la fin de la chaîne (Lowercase)
  • Alt + C : mettre en majuscule le caractère sous le curseur (Capitalize)
  • Alt + T : inverser les deux chaînes avant le curseur (Transpose)
  • Ctrl + T : inverser les deux derniers caractères depuis le curseur (Transpose)
  • Alt + # : insérer un # au début de la ligne et valider
    • ça revient à insérer un commentaire dans l’historique de bash
  • Ctrl + V : fait que le prochain caractère tapé est inséré en « Verbatim »
    • faites Ctrl + V et appuyer Entrée en suite pour voir ce que ça fait concrètement, ça peut servir pour insérer une tabulation par exemple
  • Ctrl + Insert ou Ctrl + Shift + C : copier
  • Shift + Insert ou Ctrl + Shift + V : coller
    • l’avantage de la combinaison avec Insert c’est qu’elle fonctionne partout

Complétion

  • Tab : compléter l’élément (commande, chemin, arguments) sous le curseur
  • Alt + ? : afficher les complétions possibles
  • Alt + * : insérer toutes les complétions possibles
  • Ctrl + X ( : commencer l’enregistrement d’une macro
  • Ctrl + X ) : terminer l’enregistrement d’une macro
  • Ctrl + X E : exécuter la macro précédemment enregistrée

Divers

  • Ctrl + C : arrêter la commande en cours
  • Ctrl + Z : suspendre le programme en cours
    • il faut saisir la commande fg (foreground) pour reprendre le programme
  • Shift + PgUp : faire défiler vers le haut une « page »
  • Shift + PgDn : faire défiler vers le bas une « page »
  • Ctrl + Shift + Haut : faire défiler vers le haut une ligne
  • Ctrl + Shift + Bas : faire défiler vers le bas une ligne

Pour en savoir plus

  • man -P 'less -p ^READLINE' bash
  • man -P 'less -p ^EDITING' readline

9 réflexions au sujet de “Les raccourcis clavier de Bash”

  1. Ce ne sont pas des raccourcis de bash, mais de la bibliothèque readline 🙂
    L’intérêt c’est qu’elle est utilisée dans d’autres logiciels comme l’éditeur Emacs, ou le client en ligne de commandes de MySQL.

    Répondre
    • Oui en effet j’ai vu ça dans la page man, mais je me suis dit qu’un titre « raccourcis clavier de readline » ça n’aurait parlé à personne. Et encore, à la base mon titre devait être « raccourcis clavier du terminal ». Mais ça vaut peut-être le coup que j’ajoute la précision dans l’article.

  2. Un de mes préférés : Esc puis #
    Il ajoute un dièse (commentaire) en début de ligne, puis valide la ligne qui est alors dans l’historique.
    Cas d’usage: tu commences une commande, mais tu as oublié de faire une autre action avant, donc tu mets la commande courante en attente dans l’historique, tu fais l’action oublié, puis tu rappelles la commande initiale dans l’historique.

    Répondre
  3. Bonsoir,
    Voilà un article bien utile que je vais ranger dans mes favoris.
    Si je peux me permettre d’aborder un autre sujet, je vois sur ta bannière que tu as écrit « Pas de liberté pour les ennemis de la liberté ». Si tu places cette citation en en-tête, c’est sans doute que tu veux qu’on le remarque et aussi, le cas échéant, qu’on en parle.
    Permets-moi de ne pas être d’accord avec cette vision des choses. Je suis tout à fait conscient que l’extrême-droite, l’ultra-gauche, l’islamisme et le capitalisme (on l’oublie trop souvent celui-là) sont des ennemis déclarés des libertés fondamentales mais je ne suis pas certain qu’exclure ces derniers du débat soit une bonne approche car ils prennent la posture de victimes et sombrent dans la violence. Si tu veux combattre un ennemi à la loyale, il faut accepter de le laisser se battre, si possible avec des mots et sur le champ des idées. Si tu le prives de la parole, tu lui donnes un fusil d’assaut.
    On oublie trop souvent que le Verbe est bien plus puissant qu’une arme. Il y a 2000 ans, il y en a un qui a changé la face du monde rien qu’en parlant. Il n’a même pas laissé d’écrits. Alors, tu vas me répondre que ma vision est celle d’un chrétien. C’est vrai… Mais c’est la mienne et elle me donne de l’espoir, celui de changer moi-même et d’aller vers l’autre. Je n’ai pas trouvé mieux. Il y a une citation de Jean-Paul Sartre que j’aime beaucoup : « Autrui, c’est l’autre, c’est-à-dire le moi qui n’est pas moi. »
    Je ne sais pas si tu publieras ce commentaire car il n’a pas grand chose à voir avec Bash, et c’est ton blog, tu es bien libre de faire ce que tu veux. Mais j’avais juste envie de te le dire, en toute amitié.
    Benoît

    Répondre
    • Je suis justement en train de préparer une catégorie « citations » où j’explique les citations que je met en sous-titre, à commencer par celle-ci 😉 Mais pour répondre rapidement, je développerais davantage dans l’article dédié, je prend cette citation comme ceci : ne me demande pas de respecter ta « liberté d’expression » ou autre comme prétexte exprimer ta haine ou à opprimer les autres, car le cas échéant j’exercerais ma « liberté à t’empêcher de nuire » (j’utilise le deuxième pronom du singulier pour l’exemple, je ne m’adresse pas spécifiquement à toi). J’adhère assez à la position de Karl Popper sur ce qu’il appelle le paradoxe de la tolérance. Il y a un autre article qu’il faut que j’écrive, qui pourrait t’intéresser ou te faire réagir, c’est pourquoi je ne crois plus en Dieu (ce qui n’enlève rien à la considération que je garde pour certaines paroles sages de Jésus).

  4. Bonjour
    une ligne de mon .inputrc qui me fait gagner un temps fou
    « \e/ »: dabbrev-expand

    quand je tape f2 sur la ligne de commande ca me complete le mot courant en cherchant dans l’historique, c’est l’equivalent des dynamic abbrev sous emacs

    Répondre

Laisser un commentaire