• Aucun résultat trouvé

$ 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 conclu-sion, apropospeut ê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 com-mande whatis devrait vous éclairer.

$ whatis find

find (1) - search for files in a directory hierarchy

$

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

$ whatis trouver

trouver: nothing appropriate

$

whatispermet 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 recher-cher 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 fameuxtoto. 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 ;

7

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 com-mande dont vous avez la page de manuel sous les yeux et parfois les comcom-mandes utilisées par la commande.

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

7.2.2 Hiérarchie des pages de manuel

Vous aurez constaté que la page de manuel defindcommence 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 succincte-ment 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é abondonné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 der-nières ont de plus en plus tendance à disparaître (sur le système où ces lignes sont écrites, seule subsiste la section n4).

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 :

$ 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

$

4. Et elle ne contient que 210 pages de documentation alors que la section 1 en contient environ 1300.

7

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 unman 3 printf et réjouissez-vous :

$ 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’unman 2 printfvous 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 demanest d’obtenir un insoutenableNo 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.

$ echo $MANPATH

/usr/share/man:/usr/local/man

$

Cette variable a le même format que PATH et indique à la commande man les en-droits 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/mansous Linux) à la variable MANPATHpour voir apparaître la page de documentation.

$ 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 fichiers de démarrage :