IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Pour aller plus loin avec la ligne de commande

Tout ce que vous avez toujours voulu savoir sur Unix sans jamais oser le demander


précédentsommairesuivant

7. Chapitre 7 - À l'aide !

? h
Sorry, I already gave what help I could…
Maybe you should try asking a human?
TEX Version 3.14159.

L'austérité d'un terminal laisse pantois nombre d'utilisateurs affrontant pour la première fois un système Unix. Combien de fois l'Unixien n'a-t-il pas entendu un utilisateur se plaindre du manque de convivialité du système par rapport à ses « concurrents » intégrant aide en ligne, lignes chaudes et autres systèmes d'assistance à l'utilisateur ? Ce chapitre a donc pour principal objectif de tordre le cou à cette idée d'indisponibilité d'information.

7-1. Quoi fait quoi ?

unix fournit une pléthore de commandes. En shell bash, par exemple, le fait d'appuyer par deux fois sur la touche tabulation dans un terminal provoque l'apparition du message :

  • There are 2727 possibilities. Do you really
    wish to see them all? (y or n)

L'interpréteur de commande signifie par là qu'il nous donne la possibilité de choisir parmi 2727 commandes différentes et ayant a priori toutes une action différente. Dans cette section, nous ne donnerons pas la signification et l'action de chacune de ces 2727 commandes, mais plutôt le moyen de vous permettre d'accéder à l'information concernant chacune d'entre elles. En effet, l'un des principaux avantages d'unix est de permettre l'accès à ce genre d'informations. 

7-1-1. À propos

La première question est probablement de savoir ce que vous désirez faire. Supposons que vous cherchiez à visualiser le contenu de votre répertoire de travail. Malheureusement, vous ne connaissez pas la commande qui permet de le faire. Un outil permet de faire une recherche parmi les commandes disponibles : apropos.

Son utilisation est des plus simples. Tapez simplement apropos suivi d'un mot-clé (en anglais) définissant au mieux votre requête. Pour notre exemple, nous cherchons à visualiser le contenu de notre répertoire de travail (en anglais : to display working directory content). Essayons :

 
Sélectionnez
$ apropos display
$

Cette commande devrait faire apparaître un grand nombre (155 sur mon système) de lignes ressemblant probablement à(112) :

 
Sélectionnez
bell (n)             - Ring a display's bell
bitmap (n)           - Images that display two colors
cal (1)              - displays a calendar
ckalloc, memory, ckfree, Tcl_DisplayMemory,
Tcl_InitMemory, Tcl_ValidateAllMemory (n)
                     - Validated memory allocation interface.

Si vous aussi, vous prétendez être un informaticien plein de qualités,(113) vous ne lirez pas (sauf peut-être en dernier recours) ces 75 lignes. Le mot-clé display n'était probablement pas suffisamment significatif. Essayons autre chose :

 
Sélectionnez
$ apropos working
cd (n)              - Change working directory
chdir, fchdir (2)   - change working directory
getcwd (3)          - Get current working directory
pwd (1)             - print name of current/working directory
pwd (n)             - Return the current working directory
rcsclean (1)        - clean up working files
$

Nous obtenons moins d'informations, mais malheureusement pas celle qui nous intéresse(114). Essayons encore :

 
Sélectionnez
$ apropos content
dir (1)             - list directory contents
gl_copyscreen (3)   - copy the screen contents of contexts
ls (1)              - list directory contents
perltoc (1)         - perl documentation table of contents
pick (1)            - search for messages by content
pair_content (3x)   - curses color manipulation routines
stat (1)            - print inode contents
vdir (1)            - list directory contents
vga_dumpregs (3)    - dump the contents of the SVGA registers
xev (1x)            - print contents of X events
$

Il semble que la commande recherchée soit dir ou ls ou vdir. Essayons l'une d'entre elles :

 
Sélectionnez
$ ls
2Hypergraphes  Impression  Microsoft   Sarah       games
Admin          LaTeX       Mygale      Transfert   local
Archives       Logo        NT          Web         nsmail
Arkeia         Mac         Netscape    archive     test
ConfigNT       Mail        Oueb        bin         tmp
$

… et nous avons donc bien obtenu le contenu du répertoire courant. En conclusion, apropos peut être considéré comme un « moteur de recherche » sur le rôle des commandes disponibles.

7-1-2. Mais c'est quoi donc ?

Il arrive parfois d'oublier ce que peut faire une commande. Supposons que l'on vous ait parlé de la commande find en vous disant qu'elle était fabuleuse. La commande whatis devrait vous éclairer.

 
Sélectionnez
$ whatis find
find (1) - search for files in a directory hierarchy
$

Notez que whatis ne sait pas nécessairement de quoi vous lui causez :

 
Sélectionnez
$ whatis trouver
trouver: nothing appropriate
$

whatis permet donc d'obtenir une information succincte sur le rôle d'une commande shell.

7-2. Les pages de manuel

Le paragraphe précédent nous a permis de constater que find permettait de rechercher des fichiers dans une arborescence. Supposons que vous vouliez rechercher un fichier dénommé toto perdu quelque part sur votre home. Un find toto lancé en ligne de commande produit un navrant find: toto: No such file or directory.

Vous vous douterez alors que find attend peut-être autre chose pour lui permettre de trouver ce fameux toto. Une commande va nous aider grandement : man. Osons un man find. Devant vos yeux ébahis devrait apparaître une page de manuel (raccourci en anglais en manpage) concernant find.

7-2-1. Une page de manuel

Les pages de manuel ont cette propriété d'avoir une structure assez fixe. Détaillons quelques-unes de ses principales entrées :

  • Name qui définit en une ligne ce que fait la commande. C'est d'ailleurs cette ligne qui est affichée par whatis. Il s'agit de la seule partie requise pour faire d'une page de documentation quelconque une manpage ;
  • Synopsis qui précise la forme d'appel de la commande. Le synopsis précise de plus toutes les options qu'il est possible de passer à la commande et ses arguments éventuels ;
  • Description qui décrit effectivement l'action de la commande, précise le rôle de chaque argument ;
  • Options précise le rôle de chaque option (vous vous en doutiez, non ?);
  • See Also vous donne quelques commandes qui ont une action similaire à la commande dont vous avez la page de manuel sous les yeux et parfois les commandes utilisées par la commande.

Parfois on trouve également en fin de page, des exemples et les bogues connus du programme documenté.

7-2-2. Hiérarchie des pages de manuel

Vous aurez constaté que la page de manuel de find commence en fait non pas par NAME, mais en fait par un nébuleux FIND(1). Les pages de manuel sont souvent hiérarchisées en douze sections numérotées de 1 à 9, n, o et l. Décrivons succinctement cette hiérarchie.

  1. commandes de l'utilisateur pouvant être lancées par n'importe qui ;
  2. appels système (fonctions fournies par le noyau) ;
  3. fonctions propres à certaines bibliothèques (C, X windows, etc.) ;
  4. ports et périphériques (c'est-à-dire les fichiers de /dev) ;
  5. descriptions de formats de fichier de configuration ;
  6. jeux ;
  7. divers (essentiellement des conventions) ;
  8. outils d'administration système ;
  9. routines des noyaux (propre à LINUX).

Les sections suivantes ont vraisemblablement été abandonnées, mais peuvent être toutefois présentes sur de « vieux » systèmes :

  • n ce qu'il y a de nouveau. Les documentations résidant dans cette partie se doivent d'être déplacées au bout d'un certain temps dans la section appropriée ;
  • o vieilles documentations condamnées à la disparition ;
  • l documentation locale propre à un système, un site.

Notons qu'il n'est pas conseillé d'utiliser les trois dernières sections et que ces dernières ont de plus en plus tendance à disparaître (sur le système où ces lignes sont écrites, seule subsiste la section n(115)).

Il peut arriver qu'un mot donné corresponde à des pages de manuel de différentes sections. Par exemple, vous cherchez une information sur la fonction C printf :

 
Sélectionnez
$ apropos printf
format (n) - Format a string in the style of sprintf
gl_printf (3) - write formatted output in graphic mode
printf (1) - format and print data
sprintf, printf,(3) - formatted output conversion
printftest (6) - tests the vgagl gl_printf function
snprintf, vsnprintf (3) - formatted output conversion
$

Si vous vous contentez d'un man printf, à votre grand désarroi, vous ne pourrez visualiser que la page de documentation correspondant à la section 1. Comment spécifier à man d'aller regarder dans la section 3 ? Facile : essayez un man 3 printf et réjouissez-vous :

 
Sélectionnez
$ man 3 printf
PRINTF(3) Linux Programmer's Manual PRINTF(3)
NAME
printf, fprintf, sprintf, snprintf, vprintf, vfprintf,
vsprintf, vsnprintf - formatted output conversion
SYNOPSIS
#include <stdio.h>
...
$

Bien entendu, il est nécessaire d'interroger une section dans laquelle existe la page de documentation. Il y a fort à parier qu'un man 2 printf vous rétorque narquoisement qu'il n'y a pas d'entrée pour printf dans la section 2 du manuel. 

7-2-3. La variable d'environnement MANPATH

Le plus rageant avec l'utilisation de man est d'obtenir un insoutenable No manual entry for (le nom de la commande). Par exemple, un man xv produit No manual entry for xv. La première idée qui peut vous venir à l'esprit est qu'il n'existe pas de documentation pour cet outil qu'est xv. C'est possible, mais regardons de plus près une certaine variable d'environnement dénommée MANPATH.

 
Sélectionnez
$ echo $MANPATH
/usr/share/man:/usr/local/man
$

Cette variable a le même format que PATHEnvironnement de développement et indique à la commande man les endroits où rechercher les pages de manuel. Dans l'exemple précédent, man ira donc dans /usr/share/man puis (en cas d'échec) dans /usr/local/man pour tenter de trouver l'information qui vous intéresse. Aucune page n'étant associée à xv, man vous le signifie poliment. Il suffit de rajouter un nouveau répertoire de recherche (/usr/X11R6/man sous Linux) à la variable MANPATH pour voir apparaître la page de documentation.

 
Sélectionnez
$ export MANPATH=$MANPATH:/usr/X11R6/man
$ man xv
XV(1) XV(1)
NAME
xv - interactive image display for the X Window System
... etc ...
$

Cette variable devrait être a priori « correctement » configurée pour aller visiter les points de chute classiques des pages de manuel, c'est-à-dire (cette liste ne se veut en aucun cas exhaustive) /usr/share/man, /usr/local/man et /usr/X11R6/man.

Dans le cas où vous souhaiteriez installer certaines pages de manuel à certains endroits précis de votre compte utilisateur, vous pouvez utiliser la même démarche et ajouter dans vos fichiersSauvegarder ses configurations grâce aux fichiers de démarrage de démarrage :

 
Sélectionnez
export MANPATH=$HOME/man:$MANPATH

de manière à ajouter vos pages de manuels aux pages traitées par la commande man.

7-2-4. Recherche exhaustive

Il peut arriver qu'en désespoir de cause, vous désiriez effectuer une recherche exhaustive d'un mot donné dans l'ensemble des pages de manuel. Si vous choisissez de prendre ce risque, sachez que c'est possible, mais qu'il y a de grandes chances que cela prenne un certain temps(116).

7-2-5. La commande ultime

Pour toutes les subtilités concernant votre version locale de man, vous n'avez finalement qu'une seule commande à connaître : man man. La boucle est donc bouclée. 

7-3. Le format info

Il existe un système de documentation répandu sur les systèmes unix basé sur les outils gnu : le système Texinfo. L'idée de ce système est de pouvoir produire à partir d'un source, à la fois une information de type hypertexte et un document imprimable. D'un point de vue technique, ce même source est passé à la moulinette de TEX pour produire la version papier, et par l'utilitaire makeinfo pour produire la version hypertexte. On manipule la version imprimable comme un document au format dvi traditionnel(117), et la version hypertexte avec la commande info :

 
Sélectionnez
$ info whoami
$

vous permet de vous esbaudir avec quelque chose devant ressembler à

 
Sélectionnez
File: sh-utils.info, Node: whoami invocation, Next: groups 

invocation, Prev: logname invocation, Up: User information
‘whoami': Print effective user id
=================================

   ‘whoami' prints the user name associated with the current
effective user id. It is equivalent to the command ‘id -un'.

  The only options are ‘--help' and ‘--version'.
  *Note Common options::.

Les commandes à connaître pour manipuler info dans un terminal sont :

  • SPC/- : pour défiler vers la page suivante/précédente ;
  • u : pour le lien père (up) ;
  • n/p pour le lien suivant/précédent (next/previous) dans la hiérarchie
  • l pour le lien précédent dans l'historique (last) ;
  • RET pour pénétrer dans un lien
  • q pour quitter info.

Si vous disposez d'Emacs, il existe une interface « cliquable » permettant d'éviter de s'encombrer l'esprit avec les commandes précédentes tout en vous donnant la possibilité de manipuler joyeusement le bouton du milieu de votre souris préférée.

Notez enfin que s'il n'y a pas de page info associée à une commande, l'exécution de info <nom_de_commande> vous affichera simplement la page de manuel de la commande en question. Si la page de manuel n'existe pas non plus, info vous affichera le sommaire de l'ensemble des pages d'info existant sur votre site. Pour boucler la boucle de manière analogue à la commande man, essayez :

 
Sélectionnez
$ info info
$

7-4. Le logiciel

Tout bon logiciel devrait être fourni avec une documentation présentant l'ensemble de ses fonctionnalités. Sous LINUX, cette documentation se trouve généralement installée dans le répertoire /usr/doc ou /usr/share/doc. Un ls devrait peut-être assouvir votre curiosité. Ces documentations sont généralement rédigées en pur texte ASCII et more ou less devraient vous permettre de les découvrir. Si vous ne savez vraiment pas à quoi peut servir une commande ou un logiciel donnés, vous pouvez toujours tenter de l'exécuter avec l'option -h ou --help, c'est parfois suffisant. 

7-5. Les HOWTO

Il existe autour de gnu/LINUX, un système de documentation dénommé la documentation HOWTO (en engliche, « comment faire »)(118). Cet ensemble de documents fait lui-même partie d'un vaste projet de documentation nommé le Linux documentation project sur lequel on peut obtenir des infos sur le site http://www.linuxdoc.org.

Sur la plupart des distributions de LINUX, les Howto's sont installés dans le répertoire recevant la documentation sur votre système(119). Initialement formatées au format sgml, ces docs sont disponibles aux formats texte, PostScript, html et dvi. On trouve en vrac (plus de 400 thèmes sur une Debian Sarge), des informations destinées à la fois à l'utilisateur, l'administrateur ou au programmeur, sur les modems, l'impression, le son, l'interaction avec le Palm Pilot, la programmation du port série, la configuration des cartes SCSI, le jeu Quake, l'utilisation de LINUX en Thaïlande ou en Slovénie, bref tout sujet sur lequel un utilisateur de LINUX s'interroge un jour ou l'autre. Toutes ces documentations sont pour la plupart très claires, prenant l'utilisateur novice « par la main » de manière très progressive, avec moult exemples ; elles portent des noms significatifs qui peuvent être utilisés comme argument aux moteurs de recherche : Printing-Howto, Serial-Programming-Howto, etc. Lisez donc le Howto-Howto ! 

7-6. La documentation en ligne

Si malgré les lectures des pages de manuels et de howtos, vous n'arrivez toujours pas à comprendre comment peut fonctionner telle ou telle commande, ou comment faire faire ceci ou cela à un logiciel particulier, rien n'est encore perdu ! Il vous reste le monde extérieur, des personnes qui ont les mêmes problèmes que vous ou qui les ont déjà résolus. 

7-6-1. Les newsgroups

La première source d'informations du point de vue de sa richesse, mais aussi de son « bruit » est sans doute les groupes ou forums de discussion (newsgroups). Apprenez en effet que si vous vous posez une question donnée, la probabilité pour que quelqu'un se la soit déjà posée et surtout ait la réponse, est extrêmement grande.

Les news constituent un vaste panneau d'affichage que tout le monde peut consulter, sur lequel on peut poser des messages à certaines conditions ; ce vaste panneau est séparé en thèmes (group) hiérarchisés. Parmi les milliers de thématiques abordées, on trouve quelques groupes autour d'unix. Ces groupes font partie de la hiérarchie comp.os pour les groupes traitant de l'informatique (computer) et plus précisément des systèmes d'exploitation (operating system), ou de son pendant francophone fr.comp.os. On trouvera parmi ces groupes :

  • fr.comp.os.unix : discussion autour d'unix ;
  • fr.comp.os.linux.annonces : les annonces concernant les nouvelles versions ou les rencontres entre utilisateurs ;
  • fr.comp.os.linux.moderated : groupe modéré sur l'utilisation de LINUX ;

On pourra également lire les groupes comp.os.linux.* de la hiérarchie anglophone.

Il est important de comprendre que ces groupes suivent quelques règles d'usage dont l'ignorance peut vous faire envoyer plus ou moins poliment sur les roses :

  • on veillera à respecter la nétiquette(120) dans le cadre de la communication « de un à plusieurs » ;
  • on testera son logiciel de news sur un groupe comme fr.test et non sur le groupe sur lequel on a l'intention de poster ;
  • on veillera à lire attentivement « toutes » les documentations disponibles (notamment les FaqLes foires aux questions) avant de poser une question dont la réponse se trouve dans une dizaine de manuels, au risque d'obtenir une réponse du genre : man softquejarrivepasàfairemarcher ou RTFM (qui signifie dans sa version polie : read the fantastic manual) ;
  • il faudra lire les archives des mois précédents pour éviter de poser une question posée la veille ; une bonne source d'information pour rechercher dans les archives est le site http://groups.google.com qui fonctionne comme un moteur de recherche ;
  • on tentera de trouver la charte du groupe si elle existe et la lire ;
  • certains groupes sont modérés, c'est-à-dire qu'un groupe de personnes filtre votre message avant de le poster sur le groupe. Le filtrage a pour but de vérifier l'adéquation du contenu avec le thème du groupe. Par conséquent votre message n'apparaîtra pas immédiatement sur le groupe, inutile donc de le reposter !

Le mieux est sans doute de se renseigner précisément sur l'usage des news en consultant des documents destinés aux nouveaux utilisateurs, par exemple http://UsenetFR.free.fr/BU.htm. 

7-6-2. Les mailing lists

Les listes de diffusion (ou mailing lists) ont un caractère plus confidentiel puisqu'il faut explicitement s'abonner auprès d'un serveur pour recevoir les messages traitant d'un thème donné. Lorsqu'on envoie un message à la liste, tous les adhérents le reçoivent également ; le principe est donc différent du fonctionnement des news.

On pourra trouver des listes de discussions traitant de points particuliers de LINUX par exemple :

  • linux-8086 - for the 8086 systems
  • linux-admin
  • linux-kernel - General kernel discussion
  • linux-kernel-announce
  • linux-sound

plus de soixante listes référencées sur http://www.linux.org/docs/lists.html.

Pour s'abonner, il faut envoyer un mail poli au gentil robot qui manage tout ça à : majordomo@vger.kernel.org. Le corps du message doit contenir le mot subscribe (s'abonner) suivi du nom de la liste. Sans s'abonner on pourra consulter les archives des messages, par exemple sur :

7-6-3. Le ouèbe

La majorité des logiciels suivant le modèle open source dispose d'une page web dite home page. Sur cette page se trouvent une description du logiciel, des documentations pour l'utiliser et/ou l'installer, et la dernière version à télécharger. Outre les moteurs de recherche généraux, on pourra consulter :

  • http://freecode.com/ : donnant des infos quotidiennes sur les nouveaux projets et disposant d'un moteur de recherche ;
  • http://sourceforge.net/ : hébergeant plusieurs projets de logiciels libres, dispose également d'un outil de recherche.

7-6-4. Les foires aux questions

Le terme Faq pour frequently asked question est parfois traduit par « foire(121) aux questions ». Certaines personnes collectent donc les questions fréquemment posées par les « p'tits nouveaux » et les « Grands Anciens » et, de ce fait, les réponses fréquemment données pour écrire des compendiums extrêmement riches en informations, astuces et autres indices pour le débutant (et le confirmé aussi parfois). Une recherche sur le Ouèbe avec votre moteur de recherche préféré avec votre question et le mot-clé Faq pourrait vous permettre d'atteindre le nirvana assez rapidement. Vous trouverez sur les sites :

la Faq officielle de LINUX et celles de quelques-uns des logiciels connexes.  

7-6-5. Les Request for comments

Même s'il s'agit de documents très techniques, il peut être utile de connaître l'existence des RFC (request for comments). Ces documents maintenus par l'IETF (Internet Engineering Task Force(122)) décrivent les standards utilisés sur le réseau Internet. Chacun de ces documents est identifié par un numéro et passe de l'état de brouillon (draft) à l'état de standard après un processus de correction. On retrouvera parmi les RFC la description des protocoles réseau que nous utilisons quotidiennement (HTTP, SMTP pour le mail, etc.).

*

*         *
Bon courage !

précédentsommairesuivant
Nous vous faisons grâce de 71 lignes.
Voir à ce sujet Wall et al. (1996) et sa définition de la paresse.
Il n'empêche que vous savez maintenant changer de répertoire…
Et elle ne contient que 210 pages de documentation alors que la section 1 en contient environ 1300.
Par exemple, à la toute fin du siècle dernier, un man -K yaourt a pris environ une minute sur notre beau bi-Xeon (500 MHz - 512 Mo de RAM) et plus de cinq minutes sur notre bon vieux 486 (33 MHz - 24 Mo).
Voir à ce sujet, le merveilleux ouvrage de Lozano (2008).
Pour les allergiques à Shakespeare (et les autres), certaines documentations ont été traduites dans notre belle langue.
Le répertoire /usr/share/doc/HOWTO sur la distribution Debian.
voir par exemple une traduction en français à http://www.sri.ucl.ac.be/SRI/rfc1855.fr.html.
Traduction qui a le léger inconvénient de faire perdre la notion de questions fréquemment posées.

Licence Art libre http://artlibre.org. Par contre, les logos Developpez.com, en-tête, pied de page, css, et look et feel de l'article sont Copyright © 2013 Developpez.com.