Sites


Introduction à la ligne de commande

CommandLineIntro: CommandHistoryReadline

Édition interactive

Nombre de personnes, spécialement les débutants, utilisent les touches fléchées pour déplacer le curseur sur la ligne de commande. La plupart des personnes peuvent y parvenir en beaucoup moins de temps qu'il n'en faudrait pour se rappeler des alternatives plus puissantes mais plus complexes qui sont fournies. Mais certaines de ces méthodes méritent d'en faire l'apprentissage, ainsi nous les présenterons ici.

Le terminal est livré avec deux ensembles différents de combinaisons de touches (raccourcis clavier), inspirés par deux éditeurs de texte extrêmement puissants, Emacs et vi (probablement les deux plus puissants qui existent). En exploitant les raccourcis clavier offrant ces liaisons, les assistants de la ligne de commande sont à même de saisir et de modifier des lignes de commande même longues juste en une fraction de seconde. Si vous prenez le temps de vous exercer avec les associations de touches que propose le terminal, même si elles peuvent sembler peu réalistes de prime abord, vous serez bientôt en mesure d'y arriver aussi.

Remarque : vous ne pourrez profiter pleinement des liaisons de Emacs et vi que si vous savez comment saisir correctement (avec 10 doigts). Dans le cas contraire, vous devrez apprendre à le faire dès que possible. (Il existe de nombreux sites gratuits sur le Web susceptibles de vous aider). Cela en vaut absolument la peine. Vous disposez de l'application appelée Klavaro, que vous pouvez utiliser pour apprendre à saisir.

Par défaut, l'interpréteur de commandes bash utilise les liaisons de Emacs. Si vous voulez essayer celles de vi, saisissez la commande suivante :

$ set -o vi

Vous pouvez revenir aux aux liaisons de Emacs en saisissant :

$ set -o emacs

Les liaisons de Emacs et vi sont très différentes et les deux demandent un peu de temps pour les maîtriser. Vous devrez essayer les deux liaisons pour trouver celles qui vous conviennent le mieux. Ce chapitre couvre les liaisons de Emacs, par défaut. Si vous apprenez vi, vous pouvez passer à ces liaisons et vous les trouverez tout à fait intuitives.

Conseil : n'essayez d'apprendre tous les raccourcis à la fois ! Le cerveau humain n'est pas fait pour ce type de tâches, donc vous oublierez presque la totalité d'entre eux. Au contraire, nous vous conseillons d'apprendre les 4 à 5 raccourcis que vous jugez les plus utiles et de les employer régulièrement -- apprendre en faisant. Plus tard, vous pourrez revenir à ce chapitre pour choisir plus de raccourcis. Vous vous trouverez bientôt parfaitement l'aise pour manipuler la ligne de commande.

Les liaisons de Emacs

Les liaison de Emacs font un usage intensif de Ctrl et Alt en tant que touches modificatrices. Les utilisateurs expérimentés de Emacs réaffectent leur touche VerrMaj en Ctrl pour saisir des commandes Emacs plus confortablement (et pour éviter des microtraumatismes répétés !). Une fois que vous commencez à utiliser les liaisons Emacs de façon régulière, nous conseillons de faire de même.

*****************************************************************************************

Cet espace est réservé pour la formation sur la réaffectation de la touche VerrMaj

*******************************************************************************************

Se déplacer 

Les deux frappes de touches de base pour se déplacer sur la ligne de commande dans le mode Emacs sont Ctrl + f et Ctrl + b. Elles déplacent le curseur d'un caractère vers la droite et vers la gauche, respectivement :

 Ctrl + f  Avance d'un caractère
 Ctrl + b  Recule d'un caractère

Naturellement, vous pouvez effectuer les mêmes déplacements de curseur à l'aide des touches fléchées sur votre clavier. Mais, comme nous l'avons remarqué ci-dessous, l'emploie des liaisons Emacs Ctrl+ f et Ctrl + b peut être plus efficace, puisque vos mains n'ont pas à quitter le bloc de lettres de votre clavier. À ce moment, il se peut que vous ne voyiez pas la différence de vitesse (spécialement si vous ne saisissez pas encore très vite), mais une fois que vous acquérrez plus d''expérience dans l'utilisation de la ligne de commande, vous ne serez certainement plus amené à toucher les touches fléchées ! (AMHA)

Le tableau suivant répertorie certaines frappes de clavier qui vous permettent de de naviguer dans la ligne de commande encore plus vite :

 Alt + f  Avance d'un mot
 Alt + b  Recule d'un mot
 Ctrl + a  Se déplace jusqu'au début de la ligne
 Ctrl + e
 Se déplace jusqu'à la fin de la ligne

Conseil : le mot allemand pour « début » est Anfang. Oublieriez-vous jamais un mot aussi étrange ? Espérons que non car il peut vous aider à vous souvenir que Ctrl + a vous amène au début de la ligne de commande. En tirant profit des frappes de touches résumées dans le tableau ci-dessus, vous pouvez considérablement accélérer l'édition de votre ligne de commande. Si, par exemple, vous avez mal orthographié la première lettre d'un nom de fichier extrêmement long, la frappe Alt + b fait reculer le curseur jusqu'au début du mot-- rendant encombrant le mouvement des caractères du curseur non nécessaire. Les touches Début et Fin, si elles sont présentes, fournissent une alternative à Ctrl + a et Ctrl + e.

Modifier du texte

Deux des commandes de modification les plus couramment utilisées sont les suivantes :

 Ctrl + t
 Transpose le caractère devant le curseur et le caractère sous / suivant le curseur
 Alt + t  Transpose le mot devant le curseur et le mot sous / suivant le curseur

Ces deux commandes demandent un certain temps d'apprentissage, mais elles sont l'une et l'autre très utiles. Alors que la principale utilisation de Alt + t est sert souvent à faire « glisser vers l'avant » un mot sur la ligne de commande. Jetez un coup d'œil à la ligne de commande suivante (le caractère de soulignement marque la position du curseur) :

$ echo un deux trois quatre

Si vous appuyez sur Alt + t dans cette situation, le mot placé avant le curseur (« un ») est échangé avec le mot situé après le curseur (« deux »). Essayez ! Le résultat devrait ressembler à celui-ci :

$ echo deux un trois quatre

Vous remarquerez deux aspects. Tout d'abord, l'ordre des mots « un » et « deux » a été inversé. Deuxièmement, le curseur s'est déplacé vers l'avant en même temps que le mot « un ». À présent, le point intéressant à propos du déplacement simultané du curseur est que vous devez appuyer sur Alt + t une fois de plus afin de transposer « un » avec le mot suivant, « trois » :

$ echo deux trois un quatre

Donc, en appuyant sur Alt + t à plusieurs reprises, vous pouvez faire « glisser vers l'avant » le mot placé avant le curseur jusqu'à ce qu'il ait atteint la fin de la ligne de commande. (Bien sûr, il est possible de faire de même avec un seul caractère à l'aide de Ctrl + t.)

Au départ, la fonctionnalité élaborée des deux commandes de transposition peut sembler un peu confuse. Exercez-vous simplement avec pendant quelques instants, et vous vous en sortirez très bien.

Supprimer / Effacer et réinsérer du texte

Voici quelques commandes pratiques pour supprimer / effacer du texte :

 Ctrl + d
 Efface le caractère sous le curseur
 Alt + d
 Supprime tout le texte depuis le curseur jusqu'à la fin du mot actuel
 Alt + Correction
 Supprime tout le texte depuis le curseur jusqu'au début du mot actuel

Notez que Alt + d et Alt + Correction ne suppriment pas du texte, mais l'efface. Effacer est différent de supprimer en ce sens que le texte détruit n'existe plus, mais le texte effacé peut être restauré (le terme est « yanked », copié) ultérieurement à l'aide de la commande suivante :

 Ctrl + y
 Réinsère (copie) du texte précédemment effacé

Voyons comment cette commande fonctionne par la biais d'un exemple :

$ echo un deux  

À nouveau, la position du curseur est indiquée par un caractère de soulignement. Si vous appuyez sur Alt + Correction dans cette situation, le mot « deux » ainsi que le caractère d'espacement situé après sera effacé, laissant la ligne de commande ainsi : 

$ echo un  

Si maintenant vous appuyez sur Ctrl + y, le texte effacé est « yanked » (copié) à nouveau dans la ligne de commande. Vous pouvez le faire plusieurs fois. Si vous appuyez sur Ctrl + y trois fois, par exemple, vous arrivez à la ligne suivante :

$ echo un deux deux deux  

Comme vous pouvez le voir, l'effacement de texte ressemble beaucoup à la fonction « couper » de la plupart des éditeurs de texte modernes. Notez que le texte qui n'est pas effacé, mais supprimé (en appuyant sur Ctrl + d) ne peut être réinséré dans la ligne de commande. Le seul moyen de l'y replacer consiste à utiliser la fonction « Annuler », présentée ci-dessous.

Il est probable que les commandes les plus utiles pour effacer du texte sont les suivantes :

 Ctrl + k
 Efface tout le texte depuis le curseur jusqu'à la fin de la ligne
 Ctrl + u
 Efface tout le texte depuis le curseur jusqu'au début de la ligne (unix-discard-line)

Comme d'habitude, la meilleure façon d'apprendre ces commandes est de les expérimenter. Vous constaterez que l'effacement et, lorsque nécessaire, la réinsertion de grandes portions de texte peut vous faire gagner beaucoup de temps.

Annuler des changements

Vous pouvez annuler le dernier changement effectué à l'aide de la commande suivante :

 Ctrl + _
 Annule le dernier changement

Un moyen alternatif de faire la même chose consiste à appuyer Ctrl + xu. (Appuyez sur x et u tour à tour tout en maintenant enfoncée la touche Ctrl.)

Naviguer dans l'historique du terminal

Le terminal enregistre les dernières commandes que vous saisissez dans son historique. Cette fonction permet de revenir aux commandes précédemment saisies, ce qui peut épargner beaucoup de saisie. Voici les commandes les plus importantes pour naviguer dans l'historique de commande du terminal :

 Ctrl + p
 Va à la commande précédente dans l'historique
 Ctrl + n
 Va à la commande suivante dans l'historique
 Ctrl + >
 Va à la fin de l'historique
 Ctrl + r
 Cherche dans l'historique les commandes précédemment saisies (historique de recherche inverse)
 Ctrl + g
 Annule la recherche de l'historique actuel

Voyons comment fonctionne ces commandes à l'aide d'un exemple simple. Ouvrez un terminal et saisissez les commandes suivantes :

$ echo deux
deux
$ echo trois
trois
$ echo quatre
quatre

Après avoir saisi ces commandes, vous disposez d'une ligne de commande vide attendant votre saisie. Maintenant, appuyez sur Ctrl + p. Vous remarquerez que la commande précédemment saisie apparaît sur votre ligne de commande : echo quatre. Si vous appuyez sur Ctrl + p une fois de plus, vous « montez » dans l'historique même davantage, de sorte que echo trois apparaît sur la ligne de commande. Maintenant, appuyez sur Ctrl + n, et vous verrez que vous êtes revenu à echo quatre : Ctrl + n fonctionne exactement comme Ctrl + p, mais à l'inverse. Les touches fléchées haut et bas en sont des alternatives.

Après avoir appuyé sur Ctrl + p et peut-être aussi Ctrl + n plusieurs fois, vous pouvez être amené à revenir à la ligne de commande sur laquelle vous saisissiez avant de commencer à naviguer dans l'historique. Vous pouvez le faire en appuyant sur Ctrl + >.

Comme vous pouvez le voir, l'historique du terminal n'est rien d'autre qu'une liste volumineuse de toutes les commandes récemment saisies. Vous pouvez monter et descendre dans la liste en appuyant sur Ctrl + p et Ctrl + n, respectivement. Et vous pouvez appuyer sur la touche Entrée n'importe quand afin d'exécuter la ligne de commande actuellement sélectionnée.

Puisque l'historique de commande du terminal n'est qu'une grande liste, elle permet également d'effectuer des recherches. Pour ce faire, le plus courant est d'utiliser la commande Ctrl + R. À nouveau, partons du principe que vous avez saisi les commandes echo deux, echo trois et echo quatre. Essayez d'appuyer sur Ctrl + R à présent. Vous remarquerez qu'une nouvelle invite apparaît indiquant une commande du type « reverse-i-search ». Si maintenant vous saisissez la lettre « t », vous passez directement dans l'historique à la dernière ligne de commande contenant « t », laquelle est naturellement echo trois. À partir de là, vous pouvez employer Ctrl + p et Ctrl + n pour naviguer dans l'historique comme expliqué plus haut. Ou bien vous pouvez modifier la recherche en saisissant une seconde lettre, par exemple « e ». Vous passez alors directement à la commande echo deux, car c'est la commande plus proche dans l'historique contenant la séquence de lettres « de ». Ou vous pouvez simplement annuler la recherche en appuyant sur Ctrl + g.

Si vous vous sentez un peu perdu dans l'utilisation des fonctions d'historique du terminal, ne vous inquiétez pas  Si vous continuez à vous exercer, passer d'un historique de terminal à l'autre deviendra vite la routine, en vous évitant la re-saisie fastidieuse de longues lignes de commandes.

Édition interactive : un exemple

L'exemple suivant est destiné à vous montrer comment les fonctions d'édition interactive du terminal peuvent considérablement accélérer votre travail. Supposons que vous ayez saisi la ligne de commande suivante :

$ echoo n deux trois
bash: echoo: command not found

Bash a détecté une erreur, car la commande echoo n'existe pas. Ce que vous vouliez saisir, évidemment, était echo un deux trois. Vous serez peut-être surpris d'entendre qu'il suffit de cinq frappes au clavier pour corriger l'erreur :

  1. Appuyez sur Ctrl + p pour obtenir l'élément  d'historique précédent à l'écran, pour obtenir l'élément précédent d'historique à l'écran, à savoir la ligne de commande incorrectement saisie.
  2. Appuyez sur Ctrl + a pour déplacer le curseur au début de la ligne.
  3. Appuyez sur Alt + f pour faire avancer le curseur d'un seul mot. Le curseur se trouve maintenant entre les mots incorrectement saisis « echoo » et « n ».
  4. Appuyez sur Ctrl + t. Vous constaterez que le « o » précédant le curseur et le caractère d'espacement sous le curseur ont été transposés : « echoo n » est devenu « echo un ».
  5. Pour finie, appuyez sur Entrée pour exécuter la ligne de commande corrigée.

Il y a une erreur de communication avec le serveur Booktype. Nous ne savons pas actuellement où est le problème.

Vous devriez rafraîchir la page.