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.

Synopsis
man [section] page

Description

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 :

SectionContenuExemple
1commandes du shell et programmesman 1 printf, la commande
2appels système, fournis par le noyauman 2 write
3fonctions des bibliothèques, dont la libcman 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 printf ouvre 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 putchar affiche la page puts(3), qui décrit aussi fputc, putc et fputs.

  • Sur Debian et Ubuntu, les sections 2 et 3 viennent du paquet manpages-dev. S'il manque, man 3 strlen ne 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 :

Terminal
$ 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);
DESCRIPTION

Sans 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.

À toi d'écrire le code.