Commande man : utilisation et options, numéros de section et recherche avec man -k

Environnement de testFamille RHELAlmaLinux 9.8man-db 2.9Compte rootDebian 12 · man-db 2.11 compte standard
Commandes shellman, whatis, aproposEmplacement/usr/bin/man

Pour vérifier comment s'utilise une commande ou un fichier de configuration sur un serveur Linux, on ouvre sa page de manuel avec la commande man et, quand on ne connaît pas le nom, on cherche dans les descriptions courtes avec man -k. En cherchant la page passwd sur des serveurs AlmaLinux 9 et Debian 12, Debian 12 avait à la fois la page de commande de la section 1 et la page de format de fichier de la section 5, alors qu'AlmaLinux 9 n'avait pas de page en section 5.

La sortie ci-dessous provient d'un serveur AlmaLinux 9.8 avec le compte root et d'un serveur Debian 12 avec un compte ordinaire. Le nom d'hôte et l'adresse de connexion du simulateur sont des valeurs d'exemple.

1️⃣ Utilisation de base de la commande man

  • ↪️ Ouvrir une page, se déplacer, pages absentes

Quand on écrit un nom de commande après man, la page de manuel de cette commande s'ouvre. man transmet la page à un pager, un programme qui l'affiche écran par écran, et ne revient donc pas tout de suite à l'invite après son lancement. Le pager est défini par la variable d'environnement MANPAGER ou PAGER et, si les deux sont vides, c'est less qui est utilisé.

Si la sortie passe par un tube, seul le texte s'affiche, sans pager. En récupérant avec head les 12 premières lignes de [man ls], la première ligne contenait LS(1), puis venaient dans l'ordre les sections NAME, SYNOPSIS et DESCRIPTION.

man ls | head -n 12
LS(1)                            User Commands                           LS(1)

NAME
       ls - list directory contents

SYNOPSIS
       ls [OPTION]... [FILE]...

DESCRIPTION
       List  information  about  the FILEs (the current directory by default).
       Sort entries alphabetically if none of -cftuvSUX nor --sort  is  speci-
       fied.

Le chiffre 1 entre parenthèses dans LS(1), sur la première ligne, est le numéro de la section qui contient cette page.

Dans une page, [Space] affiche l'écran suivant, et [/mot] suivi de Enter recherche un mot. [n] passe à l'occurrence suivante du même mot, et [q] quitte man.

Si l'on écrit un nom qui n'existe pas, l'erreur [No manual entry for] s'affiche, et le code de sortie était 16.

man no-such-cmd9
No manual entry for no-such-cmd9
echo $?
16

La section EXIT STATUS de la page de man décrit 16 comme la valeur renvoyée quand au moins une des pages, un des fichiers ou un des mots n'a pas été trouvé. Une erreur d'utilisation donne 1, ce qui permet à un script de traiter les deux cas séparément.

2️⃣ Numéros de section de man

  • ↪️ 1 commandes, 5 fichiers de configuration, 8 commandes d'administration

Quand des pages du même nom existent dans plusieurs sections, man parcourt les sections dans un ordre défini et n'ouvre que la première page trouvée. Les sections vont de 1 à 9, et celles que l'on ouvre le plus souvent en travaillant sur un serveur sont la section 1 pour les commandes, la section 5 pour les formats de fichier et la section 8 pour les commandes d'administration.

SectionPages contenuesExemple vu sur le serveur AlmaLinux 9.8
1Programmes exécutables et commandes du shellls, passwd, crontab, man
2Appels système (fonctions fournies par le noyau)
3Fonctions de bibliothèque
4Fichiers spéciaux (en général sous /dev)
5Formats de fichier et conventions, p. ex. /etc/passwdcrontab
6Jeux
7Divers (paquets de macros et conventions)
8Commandes d'administration système, en général pour rootuseradd, mandb
9Routines du noyau (non standard)

crontab a des pages dans deux sections, car la commande et le format du fichier de configuration portent le même nom. La vérification avec [man -f crontab] a affiché ensemble les lignes des sections 1 et 5.

man -f crontab
crontab (1)          - maintains crontab files for individual users
crontab (5)          - files used to schedule the execution of programs

Lancer [man crontab] sans numéro de section ouvre la page de la commande crontab en section 1. Pour voir le format du fichier de planification des tâches, on écrit 5 devant le nom.

man 5 crontab | head -n 4
CRONTAB(5)                       File Formats                       CRONTAB(5)

NAME
       crontab - files used to schedule the execution of programs

La première ligne est devenue CRONTAB(5) et File Formats, et la ligne NAME affichait elle aussi la description du fichier de planification des tâches au lieu de celle de la commande.

Si la section indiquée ne contient pas de page de ce nom, une erreur s'affiche. Sur le serveur AlmaLinux 9.8, [man 5 passwd], lancé pour voir le format du fichier /etc/passwd, a renvoyé une erreur indiquant qu'il n'y avait pas de page en section 5.

man 5 passwd
No manual entry for passwd in section 5

Sur le serveur Debian 12, [man -f passwd] affichait aussi la ligne passwd de la section 5. Les sections qui contiennent une page dépendent des manuels installés sur le serveur ; avant d'ajouter un numéro de section, on vérifie donc d'abord avec [man -f].

man -f passwd
passwd (1)           - change user password
passwd (1ssl)        - OpenSSL application commands
passwd (5)           - the password file

La section 8 contient des commandes d'administration lancées surtout par le compte root, comme useradd, qui crée des comptes.

man -f useradd
useradd (8)          - create a new user or update default new user information

3️⃣ Options de la commande man et recherche avec -k et -f

  • ↪️ whatis, apropos et emplacement des fichiers avec man -w

[man -f] affiche la description d'une ligne des pages du même nom et fonctionne comme whatis. Sur le serveur AlmaLinux 9.8, [man -f passwd] et [whatis passwd] ont affiché les deux mêmes lignes.

man -f passwd
passwd (1)           - update user's authentication tokens
passwd (1ossl)       - OpenSSL application commands

La ligne 1ossl est la page d'une commande OpenSSL qui porte aussi le nom passwd.

Quand on ne connaît pas le nom, [man -k] cherche dans les noms de page et les descriptions courtes. Il fonctionne comme apropos, et le mot est lu comme une expression régulière.

man -k '^passwd'
passwd (1)           - update user's authentication tokens
passwd (1ossl)       - OpenSSL application commands

^ désigne le début de la ligne, donc seules les lignes commençant par passwd sont sorties. On peut aussi chercher avec un mot de la description : [man -k 'directory contents'] a trouvé les pages dir et vdir en plus de ls.

man -k 'directory contents'
dir (1)              - list directory contents
ls (1)               - list directory contents
vdir (1)             - list directory contents

[man -k] ne cherche que dans les descriptions courtes de la section NAME et ne trouve donc pas une page à partir d'un nom d'option ou d'un mot du texte. [man -K], qui cherche aussi dans le texte, lit toutes les pages l'une après l'autre et prend beaucoup de temps.

Si le mot cherché est introuvable, [nothing appropriate] s'affiche, et le code de sortie était 16.

man -k no-such-word9
no-such-word9: nothing appropriate.
echo $?
16

[man -w] affiche seulement l'emplacement du fichier source, sans ouvrir la page.

man -w ls
/usr/share/man/man1/ls.1.gz
man -w 5 crontab
/usr/share/man/man5/crontab.5.gz

Les deux fichiers se trouvaient dans les dossiers man1 et man5 sous /usr/share/man, et le chiffre du nom de dossier correspondait au numéro de section. Le fichier de la page 1ossl, trouvé avec [man -w 1ossl passwd], était lui aussi dans le dossier man1, le même que celui de la section 1.

Les options sont réunies dans les deux onglets ci-dessous.

OptionCopierDescription
-f, --whatisAffiche la description d'une ligne des pages du même nom. Identique à whatis
-k, --aproposCherche dans les noms de page et les descriptions courtes. Identique à apropos
-w, --where, --path, --locationAffiche seulement l'emplacement du fichier source, sans ouvrir la page
-a, --allAffiche l'une après l'autre toutes les pages dont le nom correspond
OptionCopierDescription
-K, --global-aproposCherche un mot dans le texte de toutes les pages. Prend beaucoup de temps
-S, -s, --sectionslisteIndique les sections à parcourir et leur ordre sous forme de liste séparée par des virgules ou des deux-points
-P, --pagerpagerIndique le pager qui affiche la page. La valeur par défaut est less
-M, --manpathcheminIndique le chemin des manuels où chercher les pages
-L, --localelocaleIndique la locale à utiliser pour cette exécution
-l, --local-fileAffiche le fichier indiqué comme une page, sans chercher dans les manuels du système
-u, --updateMet à jour les caches d'index des pages installées
-V, --versionAffiche les informations de version

🔲 Simulateur de la commande man

Dans le simulateur ci-dessous, on peut ouvrir une page avec [man ls] et faire défiler les écrans avec les puces [Space], [/list], [n] et [q]. Sur le même serveur virtuel, on peut ajouter un numéro de section comme dans [man 5 crontab] ou saisir [man -f], [man -k] et [man -w].

Simulateur de la commande manman-db 2.9 · Compte root
[root@server work]#
Fonctionne uniquement dans le navigateur. Sur l'écran d'une page, on appuie sur les puces Space, /mot, n et q, et les touches ↑↓ du clavier rappellent les commandes saisies auparavant.

4️⃣ Structure d'une page de man

  • ↪️ Lire NAME, SYNOPSIS, DESCRIPTION et OPTIONS

Une page de man est divisée en sections dont les titres sont en majuscules. En extrayant seulement les titres avec grep pour les comparer, la page ls plaçait la description des options dans DESCRIPTION, alors que la page crontab avait une section OPTIONS à part.

man ls | grep -E '^[A-Z]+( [A-Z]+)*$'
NAME
SYNOPSIS
DESCRIPTION
AUTHOR
REPORTING BUGS
COPYRIGHT
SEE ALSO
man crontab | grep -E '^[A-Z]+( [A-Z]+)*$'
NAME
SYNOPSIS
DESCRIPTION
OPTIONS
CAVEATS
SEE ALSO
FILES
STANDARDS
DIAGNOSTICS
AUTHOR

Les noms des sections varient un peu d'une page à l'autre, et les plus fréquentes sont les suivantes.

SectionContenu
NAMENom et description d'une ligne (la ligne affichée par man -f et man -k)
SYNOPSISForme d'écriture de la commande
DESCRIPTIONDescription du fonctionnement (la page ls y place aussi la description des options)
OPTIONSUn paragraphe par option
EXIT STATUSSignification des codes de sortie
FILESFichiers que la commande lit ou écrit
SEE ALSOPages à consulter aussi

Les symboles de SYNOPSIS suivent des règles fixées par la page de man. Ce qui est entre crochets peut être omis. Les options séparées par une barre verticale (|) ne peuvent pas être utilisées ensemble, et un argument suivi de trois points (...) peut être écrit plusieurs fois.

La SYNOPSIS de ls est ls [OPTION]... [FILE]..., donc les options de commande comme les arguments de ligne de commande, tels que les noms de fichier, peuvent tous être omis ou écrits plusieurs fois.

[--help] est un résumé d'utilisation affiché par le programme lui-même, qui sort donc directement dans le terminal, sans pager. Le Usage de la première ligne de [ls --help] avait la même forme que SYNOPSIS, et la sortie complète faisait 121 lignes, moins que les 245 lignes de [man ls].

ls --help | head -n 3
Usage: ls [OPTION]... [FILE]...
List information about the FILEs (the current directory by default).
Sort entries alphabetically if none of -cftuvSUX nor --sort is specified.

Une page de man contient d'autres sections absentes de [--help], comme AUTHOR et SEE ALSO. Pour voir rapidement une seule option, on utilise [--help] ; quand il faut une explication divisée en sections, comme le format d'un fichier de configuration ou les codes de sortie, on ouvre man.

🔢 FAQ & contenus recommandés

cd est une commande interne de bash, donc [man cd] mène à la page qui regroupe toutes les commandes internes. Sur le serveur AlmaLinux 9.8, [type cd] a affiché [cd is a shell builtin], et [man -w cd] a affiché l'emplacement du fichier builtins.1.gz. L'utilisation d'une seule commande interne se vérifie directement avec [help cd].

Lancer [man -a nom] ouvre l'une après l'autre les pages dont le nom correspond. Pour ne voir que l'emplacement des fichiers, on ajoute [-w]. Sur le serveur AlmaLinux 9.8, [man -w -a crontab] a affiché deux lignes, celles des fichiers crontab des dossiers man1 et man5.

L'index dans lequel cherchent [man -k] et [man -f] est créé et mis à jour par mandb. Une page qui n'est pas encore dans l'index n'apparaît donc pas dans les résultats, et l'index se reconstruit en lançant [mandb] avec le compte root.

ℹ️ Mention d'affiliation
Le contenu de ce site contient des liens d'affiliation. Lorsqu'un visiteur achète un produit ou un service via l'un de ces liens, le site perçoit une commission du vendeur. Le montant payé par l'acheteur(il baisse lors des promotions ↓), lui, n'augmente pas. Les prix, remises et stocks indiqués correspondent à la date de rédaction et peuvent différer ; vérifiez-les donc auprès du vendeur avant d'acheter. Les produits sont choisis et évalués selon nos propres critères, et les commissions n'influencent ni l'ordre de présentation ni le contenu des évaluations.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Prouvez que vous êtes humain : 8   +   6   =