Forum Astuces.divers [Terminal] Raccourcis clavier bash

Posté par (page perso) .
Tags : aucun
0
21
août
2001
Quelques raccourcis de bash pour mieux naviguer :
Ctrl+a : début de ligne
Ctrl+e : fin de ligne
Ctrl+l : efface l'écran
Ctrl+s : masque la saisie (Ctrl+q pour revenir)
Ctrl+u : efface tout à gauche du curseur
Ctrl+w : efface le mot à gauche du curseur
Et le meilleur : Ctr+r pour une recherche dans l\'historique (à la emacs).
  • # Hmm, presque.

    Posté par . Évalué à 1.

    L'effet exact de Ctrl+s est de suspendre le terminal, et pas seulement la saisie. Si par exemple on tape Ctrl+s au boot, on peut lire tranquillement les messages du noyau. Et si vous avez violemment tapé sur votre clavier et que plus rien ne répond (en console), essayez Ctrl+q pour débloquer la situation :)

    En plus de Ctrl+r, les raccourcis Ctrl+a et Ctrl+e proviennent aussi d'Emacs. Il est possible de dire à Bash d'utiliser plutôt les raccourcis à la Vi. RTFM, parce que je ne me souviens plus comment :)
    • [^] # Re: Hmm, presque (mode vi)

      Posté par (page perso) . Évalué à 1.

      Accessible par la commande set -o vi.

      C'est assez violent : au début d'une nouvelle ligne, on est en mode édition, et pour peut que l'on ait pris l'habitude de Ctrl-A, Ctrl-E, etc., on est un peu perdu. Mais pour peu que l'on tape Échap, on se retrouve dans une bonne émulation Vi qui tue. :)

      Au menu du mode commande, donc (entre autres):

      • f et F pour faire un goto caractère (exemple ravissant: F<espace> pour retourner sur l'espace précédent de la ligne de commande ;

      • b pour revenir au début du mot précédent, et w pour aller au mot suivant ;

      • d^ pour effacer jusqu'au début de la ligne, et d$ pour effacer jusqu'à la fin ;

      • u pour annuler un changement; comme dans Vim, on peut faire des annulation successive ;

      • un seul registre est disponible, mais c'est déjà pas mal : dw pour effacer le mot à partir du curseur, p pour le coller ;

      • / et ? pour rechercher dans l'historique ;

      • r<une-lettre> pour remplacer un caractère (F1r2 est mon ami).



      Gros défaut : il n'y a aucun moyen d'avoir un indicateur qui dise si l'on est en mode édition ou en mode commande.

      Bon, je me rends compte qu'il est improbable que quelqu'un lira ce commentaire, alors je m'arrête là. :)
      • [^] # (mode vi automatique)

        Posté par . Évalué à 1.

        me rappel une epoque benie ou j'avais defini l'alias
        svi=set -o vi
        bon, mais plus definitivement
        dans le /etc/inputrc (ou ~/.inputrc) on mettra
        set editing-mode vi
        (et plein d'autre joyeusete et bijouteries !)

        Et ca se transmet a tous les prompt utilisant readline
        (plus complex sous python mais faisable)
      • [^] # Re: Hmm, presque (mode vi)

        Posté par . Évalué à 1.

        et /etc/inputrc ?
        on y mettra
        set editing-mode vi
  • # Ctrl+L : Redessine l'écran

    Posté par (page perso) . Évalué à 1.

    Utile quand votre écran a été quelque peu corrompu, par exemple quand quelqu'un vous a écrit au moyen de write alors que vous étiez en train d'éditer un fichier.
  • # ctrl+u

    Posté par . Évalué à -1.

    est le seul standard que j'ai trouve. Que ce soit en ksh, csh, bash ou sh il fonctionne meme pour les authentifications telnet et autres ca passe!
    Surement a cause des mdp invisibles.
  • # Re: Raccourcis clavier bash

    Posté par . Évalué à 1.

    et ctrl+k ??? hein ???? ben oui ca existe aussi => ca efface a droite du curseur
    • [^] # Re: Raccourcis clavier bash

      Posté par . Évalué à 1.

      Citons également :

      Ctrl+y, qui colle ce qui avait été saisi précédemment,
      Ctrl+d qui efface le caractère courant ou déconnecte (logout) si la ligne est déjà vide,
      Alt+b et Alt+f pour se déplacer au mot par mot dans la ligne de commande (en arrière et en avant respectivement),
      lt+Backspace pour effacer le mot précédent (comme Ctrl+w),
      Alt+d qui efface le mot suivant,
      Alt+t qui échange le mot courant et le mot précédent,
      Alt+c qui met en majuscule la lettre courante, en minuscules les autres lettres du mot courant, puis se place au mot suivant

      Je dois certainement encore en oublier ...

      Pour toutes les combinaisons à base de Alt+<qqch>, on peut également utiliser la forme Echap puis <qqch>.

      Enfin, en tappant Echap, puis un nombre (appelons le n, au hasard), puis un caractère, cela permet de répéter n fois ledit caractère (je ne sais pas faire avec les chiffres :-| )
      • [^] # Re: Raccourcis clavier bash

        Posté par . Évalué à 1.

        y'a aussi ctrl+t qui permet d'inverser deux lettres. très util pour les fautes de frappes (y'a l'équivalent en vi ?).
        • [^] # Re: Raccourcis clavier bash

          Posté par . Évalué à 1.

          En vi tu as la combaison xp
          x coupe le caractère sur lequel est positionné le curseur
          p colle après le caratère
      • [^] # Re: Raccourcis clavier bash

        Posté par . Évalué à 1.

        > Enfin, en tappant Echap, puis un nombre (appelons le n, au hasard), puis un caractère, cela permet de répéter n fois ledit caractère (je ne sais pas faire avec les chiffres :-| )

        RTFM : man bash -> section « BIBLIOTHÈQUE READLINE » -> paragraphe « Commande d'édition de texte »

        On y trouve :
        quoted-insert (C-q, C-v)
        Ajouter littéralement sur la ligne le caractère frappé suivant. Ceci permet d'insérer des caractères comme C-q, par exemple.


        Du coup cela donne : Esc 5 C-q C-v 9 et tu as des cinq 9


        Ps : Merci pour l'info, je n'avais jamais vu ces racourcis dans le man bash avant ;-)
      • [^] # Re: Raccourcis clavier bash

        Posté par (page perso) . Évalué à 1.

        > Enfin, en tappant Echap, puis un nombre (appelons le n, au hasard), puis un caractère, cela permet de répéter n fois ledit caractère (je ne sais pas faire avec les chiffres :-| )

        Pour faire exactement la meme chose :

        alt + (un chiffre (pas du pavé numerique, et sans faire "shift"))
        Exemple : pour faire 23 fois la lettre "y" :

        alt + é" + y
  • # "Mapper" les curseur

    Posté par . Évalué à 1.

    Puisqu'il y a des pros de readline dans la salle, je voudrais réaliser sous bash la même fonctionnalité que tcsh, à savoir:
    - les touches de curseur haut et bas permettent de naviquer dans l'historique, mais seulement sur les commandes qui complètent les caractères déjà tapés.

    par exemple, si je tape
    > m
    il va me proposer successivement les commandes
    man bash
    more file.txt
    man tcsh
    ...
    sans me donner les ls, ll et autres commandes intermédiaires.

    J'ai essayé de "mapper" pleins de combinaisons différentes de \M-\C-0A-]A, avec des search-history-backward, et autres joyeusetés, mais rien ne marche.

    C'est ce qui m'empêche de passer sous bash ! Dommage non ?
    • [^] # Re: "Mapper" les curseur

      Posté par (page perso) . Évalué à 1.

      Un équivalent aproximatif est:

      C-r #recherche incrementale
      m #recherche m
      C-r successif pour remonter dans l'historique.

      c'est pas la meme chose, mais c'est le même resultat.
      • [^] # Re: "Mapper" les curseur

        Posté par . Évalué à 1.

        Chez moi ça ne donne pas du tout le même résultat.
        Par exemple, si je tapes juste après avoir lancé bash :
        > ls
        > man blob
        > ll
        > ls -al
        > dir

        puis

        > l<C-R>

        il m'affiche
        (reverse-i-search)`': l/variants_p
        puis si je tappe successivement 'l' puis 's', j'obtiens :
        (reverse-i-search)`l': l/variants_p
        (reverse-i-search)`ls': alias ls='ls --color=tty -F'


        Alors que sous tcsh, avec les mêmes entrées de commande, et avec la configuration suivante :
        bindkey -k up history-search-backward
        j'obtiens en tapant l puis plusieurs fois :

        > ls -al
        > ll
        > ls


        Bref, j'aimerais
        • savoir comment mapper les curseur
        • connaître un moyen d'avoir la fonction 'history-search-backward' similaire à celle de tcsh.
  • # Des raccourcis «naturels»

    Posté par . Évalué à 2.

    Pour ceux qui comme moi veulent avoir les mêmes raccourcis claviers que dans leur GNOME/KDE/Windaube/Borland (il me semble que ça vient des éditeurs Borland), voila un initrc qui active les touches Ctrl-Suppr, Ctrl-gauche et Ctrl-droit.
    J'utilse gnome-terminal (qui se comporte comme xterm), avec les options de compatibilté par défaut:
    efface émet suppr ASCII et suppr émet une séquence d'échappement.

    #fragment d'inputrc
    "\e[5C": forward-word
    "\e[5D": backward-word
    "\e[3;5~": kill-word

    Mais la grande question est n'y a-t-il pas moyen d'associer Ctrl-Efface à backward-kill-word, pour pouvoir effacer un mot d'un coup?
    Eh bien je n'ai pas trouvé. Il reste toujours Ctrl-W.

    Pour récupérer les codes d'échappement impossibles des touches, il suffit de faire Ctrl-V, puis la combinaison en question. Pour le cas de Efface et Ctrl-Efface, je ne vois pas de différence, c'est ^? dans les deux cas.

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.