man(1)
Commande du shell
Affiche la page de manuel d'une commande ou d'une fonction C. Les sections 1, 2 et 3, man 3 printf, man -k pour chercher, et comment lire une page.
man [section] pageDescription
man affiche la documentation installée sur ta machine, une page par commande, appel système ou fonction de la bibliothèque C. C'est la référence la plus rapide quand tu codes en C : l'en-tête à inclure, le prototype exact, la valeur de retour et les cas d'erreur sont sur la même page, hors ligne.
Le manuel est découpé en sections numérotées. Trois servent tous les jours :
| Section | Contenu | Exemple |
|---|---|---|
| 1 | commandes du shell et programmes | man 1 printf, la commande |
| 2 | appels système, fournis par le noyau | man 2 write |
| 3 | fonctions des bibliothèques, dont la libc | man 3 printf, la fonction C |
C'est pour ça qu'on écrit printf(3) ou write(2) : le numéro dit quelle page on veut. La section 7, « divers », contient des vues d'ensemble comme man 7 signal.
man -k mot cherche dans les noms et les courtes descriptions de toutes les pages, comme la commande apropos. C'est le bon réflexe quand tu cherches une fonction sans connaître son nom.
Lire une page
Une page suit presque toujours le même plan. NAME donne le nom et une ligne de résumé. LIBRARY indique la bibliothèque à lier : -lc, la libc, est liée d'office, alors que les fonctions de <math.h> demandent -lm avec la glibc. SYNOPSIS donne les #include et les prototypes, à recopier tels quels. Viennent ensuite DESCRIPTION, RETURN VALUE, puis ERRORS pour les valeurs de errno, et SEE ALSO pour les pages voisines.
La page s'ouvre dans un pager, less par défaut : Espace avance, b recule, /mot cherche et n passe à l'occurrence suivante, q quitte.
Pièges
man printfouvre la commande du shell, pas la fonction C : sans numéro, la section 1 est cherchée avant la 3. Donne toujours la section pour une fonction.Plusieurs fonctions partagent souvent une page :
man 3 putcharaffiche la pageputs(3), qui décrit aussifputc,putcetfputs.Sur Debian et Ubuntu, les sections 2 et 3 viennent du paquet
manpages-dev. S'il manque,man 3 strlenne trouve rien :sudo apt install manpages-dev.Sur macOS, la section 3 décrit la bibliothèque C d'Apple, pas la glibc. Pour un comportement propre à Linux, la version en ligne de man7.org fait foi.
Exemple
Dans le terminal d'un exercice Grademe, qui a les pages des sections 1, 2 et 3 :
$ man printf | head -4PRINTF(1) User Commands PRINTF(1)
NAME printf - format and print data$ man 2 printfman: No entry for printf in section 2 of the manual.$ man 3 printf | head -5printf(3) Library Functions Manual printf(3)
NAME printf, fprintf, dprintf, vprintf, vfprintf, vdprintf, - formatted output conversion$ man -k "compare two strings"strcasecmp, strncasecmp(3) - compare two strings ignoring casestrcmp, strncmp(3) - compare two stringsstrcoll(3) - compare two strings using the current locale$ man 3 strlen | head -14strlen(3) Library Functions Manual strlen(3)
NAME strlen - calculate the length of a string
LIBRARY Standard C library (libc, -lc)
SYNOPSIS #include <string.h>
size_t strlen(const char *s);
DESCRIPTIONSans numéro, printf donne la page de la commande printf(1). printf n'est pas un appel système, d'où le refus en section 2. La recherche man -k retrouve strcmp sans qu'on ait eu à connaître son nom, et le haut de strlen(3) suffit pour écrire l'appel : #include <string.h>, un const char * en entrée, un size_t en sortie.