Aide en ligne

Unix est un système d'exploitation complexe. Il existe des centaines de commandes, la plupart avec des options. Comment vous débrouiller, apprendre à utiliser une commande, savoir quelle commande utiliser pour faire telle chose ? Heureusement, Unix dispose aussi d'une aide abondante et très utile.

Pages de man

L'aide la plus précieuse, la plus complète et la plus importante, c'est le manuel. Comme un livre, il est divisé en pages, chaque page correspondant à une commande ou à un concept précis. C'est pour cette raison qu'on parle de pages de man. Les pages de manuel se présentent comme un fichier texte : pas de liens, pas d'images, on ne peut pas cliquer. Il y a seulement un peu de mise en page. Bref, c'est plutôt austère ! C'est que les pages de man ne sont pas des tutoriels, mais des références. Souvent cependant, s'il existe un manuel plus complet, la fin de la page de man indique où le trouver.

Le principe est simple : pour lire l'aide correspondant à telle commande ou concept, c'est man commande.

Ainsi, pour obtenir des renseignements sur la commande man elle-même :

clipper ~ $ man man

(Sous KDE, vous pouvez aussi taper man:commande dans la barre d'adresse de Konqueror, par exemple man:man.)

Vous verrez alors apparaître ceci :

User Commands                                              man(1)



NAME
     man - format and display the on-line manual pages
     manpath - determine user's search path for man pages

SYNOPSIS
     man  [-acdfhkKtwW]  [-m system] [-p string] [-C config_file]
     [-M path] [-P pager] [-S section_list] [section] name ...

DESCRIPTION
     man formats and displays the  on-line  manual  pages.   This
     version  knows  about the MANPATH and (MAN)PAGER environment
     variables, so you can have your own set(s) of  personal  man
(...)

Comme vous pouvez le voir, c'est en anglais. Comme dans beaucoup d'autres domaines, l'anglais est la langue standard en informatique. Les documentations Unix sont écrites d'abord en anglais, et éventuellement traduites. Ne partez pas en courant, l'anglais technique est quand même moins difficile à comprendre que du Shakespeare. Sauf si vous êtes beaucoup plus à l'aise en français, préférez les versions anglaises des documentations : elles sont souvent plus à jour, et il y a parfois des erreurs de traduction.

Structure d'une page de man

Chaque page de man a la même structure. Une fois que vous vous êtes familiarisé avec celle-ci, vous savez rapidement à chercher l'information. Voici une description des principales rubriques qu'on peut trouver :

Se déplacer dans une page de man

Une fois la page de man lancée, vous pouvez parcourir la page en utilisant les mêmes commandes que le pager less, car la commande man utilise précisément less.

Définition : pager (ou « visionneuse » en français). Il s'agit d'un programme qui permet de parcourir un fichier texte. Par défaut, il s'agit de less, qui permet de faire des recherches dans le texte; de revenir en arrière, et surtout, qui affiche le texte par écrans de 25 lignes, permettant ainsi de lire à sa vitesse avant de passer à la suite. Faites man less pour en savoir plus !

Il existe beaucoup de commandes différentes pour se déplacer dans une page de man, voici les plus importantes :

ActionRésultat
barre d'espacePassage à l'écran suivant
flèche hautRevenir en arrière dans le fichier
/tagada ENTERChercher la suite de caractère « tagada » dans la suite de la page
?tagada ENTERChercher la suite de caractère « tagada » plus haut dans la page
gRetourner au tout début de la page
GAller à la fin de la page
hAffiche un résumé des commandes de less
qQuitte la lecture du manuel

Sections du manuel

Comme nous vous l'avons dit, le manuel est divisé en grandes sections, tout comme un livre peut être divisé en chapitres. Voici (les ?) deux organisations habituelles. Les PC sous Ubuntu se conforment plutôt à la deuxième.

Qu'est-ce que c'est ?
SectionSystem VBSD
1Commandes utilisateurIdem
2Appels systèmesIdem
3BibliothèquesIdem
4Fichiers de configuration et d'administrationPoints d'entrées du noyau, pilotes
5DiversFichiers de configuration
6JeuxIdem
7Entrées-sorties, fichiers spéciauxStandards
8Commandes d'administrationIdem
9_Fonctions présentes dans le noyau

Il arrive qu'une même commande ait plusieurs pages de man dans des sections différentes. C'est par exemple le cas de mkdir, qui a une page dans la section 1 (commandes utilisateurs) et 2 (appels systèmes). Par défaut, man mkdir renvoie à la section 1 (la page dans la section 2 est mentionnée dans le SEE ALSO). Pour demander explicitement la page de la section 2 :

clipper ~ $ man 2 mkdir

Il existe également des sections spécifiques à l'ENS : la section I, qui contient des informations pas nécessairement à jour sur l'École et la section 42 qui contient des informations peut-être un peu plus à jour sur l'École. (Il existe également une section A comprenant quatre pages traitant de mathématiques.)

Pour un point de départ, essayez man I intro ou man 42 intro.

Chercher la bonne page de man : apropos

Le problème, c'est que vous, vous ne savez même pas quelle est la bonne commande à utiliser. Tout ce que vous savez, c'est que vous voulez créer un fichier MP3 à partir de l'un de vos CD. Pour cela, on peut utiliser la commande apropos. Cette commande fait des recherches dans une base de données contenant le nom des commandes, et leur description. Syntaxe de la commande : apropos <mot clef>. Attention, le mot clef doit être en anglais. Exemple d'utilisation :

clipper ~ $ apropos MP3
lame                    lame (1)    - create mp3 audio files

Voici la réponse : il faut utiliser la commande lame, qui « crée des fichiers audio mp3 ». Pour savoir comment l'utiliser, consultez sa page de man, qui se trouve dans la section 1 du manuel. Ça n'est pas toujours aussi simple : apropos peut vous donner de longues réponses. Utilisez alors le pipe (|), qui connecte la sortie standard d'une commande (c'est-à-dire le résultat visible de cette commande) sur l'entrée standard d'une autre commande. Dans notre cas, cela signifie que les lignes produites par apropos pourront être lues ensuite avec less, comme un fichier.

clipper ~ $ apropos editor | less
Curses::UI::TextEditor  Curses (3)  - Create and manipulate texteditor widgets
FvwmConsoleC.pl         FvwmConsoleC.pl (1) - Command editor for FVWM command in put interface 
Tk::ColorEditor         Tk (3)  - a general purpose Tk widget Color Editor 
aa_createedit           aa_createedit (3)   - Simple interactive line editor provided as helper function.
aa_edit                 aa_edit (3) - Simple interactive line editor.
aa_editkey              aa_editkey (3)  - Notify the line editor about keypress.
cooledit                cooledit-3.17.5 (1) - Full featured text editor for the X Window System, Version 11.
dotty                   dotty (1)   - A Customizable Graph Editor 
ed                      ed (1)  - text editor
ex                      vim (1) - Vi IMproved, a programmers text editor
ile                     ile (1) - An input line editor for UNIX (Input Line Editor)
ile-2.7                 ile (1) - An input line editor for UNIX (Input Line Editor)
(...)

Là, il y a à boire et à manger... Il faut regarder dans quelle section se trouve chacune des propositions pour faire la différence entre commandes que vous pouvez utiliser (section 1) et autres.

À noter : sur certains systèmes Unix, la commande apropos n'existe pas. Vous pouvez faire la même chose grâce à l'option -k de man : man -k <mot clef>.

Aide rapide

Très souvent, les commandes ont un petit fichier d'aide rudimentaire, qui vous renseignera sur la syntaxe de la commande (pour savoir ce que fait exactement la commande, ou pour compléter, c'est le rôle des pages de man). Il y a plusieurs manières d'obtenir cette aide rudimentaire :

Options -h, -? et --help

C'est un moyen simple pour obtenir un peu d'aide sur une commande. Exemple :

earendil ~ $ mkdir --help
usage: mkdir [-pv] [-m mode] directory ...

Ici, on vous indique que la commande mkdir admet les options -p, -v, -m <mode>, et que sinon c'est mkdir <nom du fichier>.

Attention, d'une part la syntaxe varie : une commande peut comprendre -h mais pas --help et -?, ou inversement. Ensuite, ça ne marche pas toujours. Ainsi, si vous essayez de demander de l'aide à la commande df (affiche l'espace disque disponible) :

clipper ~ $ df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/dsk/c0t0d0s0     189M   92M   79M  54% /
/dev/dsk/c0t0d0s4     754M  595M  106M  85% /usr
/dev/dsk/c0t8d0s5     995M  467M  469M  50% /var

Pour df, l'option -h veut dire tout autre chose...

L'option fantaisiste

Cette astuce consiste à donner une option complètement fantaisiste à la commande. Celle-ci va réagir en disant que ce n'est pas comme ça qu'on fait, et vous indiquera brièvement quelles sont les syntaxes correctes possibles. Exemple :

clipper ~ $ cal -xyz
cal: illegal option -- x
usage: cal [ [month] year ]

On utilise une option -xyz pour être sûr que ce n'est pas une option existante. Ça marche : cal (petit programme qui affiche le calendrier du mois) se plaint que cette syntaxe n'existe pas, et vous indique ce qui est possible.

Manuels intégrés aux logiciels

De même (ou plutôt, en plus), les programmes avec une interface graphique ou semi-graphique ont souvent une commande qui donne accès à leur manuel. Par exemple, le lecteur de courrier électronique mutt dispose d'une liste de commande accessible en appuyant sur ?, et flrn, un des logiciels pour lire forum a un guide de survie accessible avec F1 et un manuel complet accessible avec ?. Les programmes faisant partie de KDE ont presque toujours un menu Aide (ou Help) complètement à droite de leur barre de menu, malheureusement, ce manuel lest souvent incomplet ou peu à jour. Toujours sous KDE, avec certains logiciels, on peut afficher une bulle d'aide détaillée sur un élément de l'interface en cliquant sur le point d'interrogation en haut à droite de la fenêtre, puis sur l'élément en question.

Pages info

Les pages info sont de l'aide en ligne, tout comme les pages de man. Le format info est une particularité des programmes écrits par le Projet GNU, une communauté de développeurs qui est l'auteur d'une grande quantité d'utilitaires et de programmes. Par exemple, la documentation d'Emacs (un éditeur de texte) ou encore celle de tar (un archiveur), est au format info.

Les pages info remplissent les mêmes fonctions que les pages de man, mais la navigation est plus compliquée : c'est dû à l'organisation hiérarchique des pages info, avec des branches, des sous-branches, etc. Ce fonctionnement convient bien à de gros projets comme Emacs, mais peut sembler plus lourd pour des programmes avec une documentation moins importante.

Sur les machines sur lesquelles il est installé, le plus simple est d'utiliser le programme info, qui permet de naviguer dans les pages info. La syntaxe est aussi simple que celle de man : info <commande>. Par exemple, pour obtenir les pages info d'info lui-même :

clipper ~ $ info info

Sous KDE, vous pouvez aussi taper info:<commande> dans la barre d'adresse de Konqueror.

(La)TeX

Les programmes liés à TeX et les packages LaTeX viennent souvent avec des documentations très complètes, mais elle est sous forme de fichiers pdf ou texte brut (ou d'autres formats variés), et n'est pas toujours facile à trouver au premier abord. Heureusement, la commande texdoc permet souvent de trouver instanément le bon document. Par exemple, pour obtenir l'aide du package LaTeX multicol, il suffit de faire

trimaran ~ $ texdoc multicol

Le programme texdoctk affiche un petit index de cette documentation.

Le reste&thsp;: /usr/share/doc/

Parfois, un programme vient avec un manuel, des fichiers d'exemples, ou une autre sorte de documentation qui ne rentre pas dans les sources de documentation standard décrites ci-dessus. (Il peut y avoir les deux : ainsi, beaucoup de logiciels ont une page de man minimaliste qui renvoie à un manuel complet au format HTML ou PDF.) Cette documentation « non standard » se trouve habituellement dans les répertoires /usr/share/doc/nom du programme/ ou encore /usr/share/doc/nom du programme-doc/. Pensez à regarder !

Auteur : Marie-Lan Nguyen, Marc Mezzarobba.