Une page de manuel pour fork
, par exemple, se trouve dans la section Appels système qui a le numéro 2:
man 2 fork
Comment voyez-vous la section 2 sans recourir à Google?
Une page de manuel pour fork
, par exemple, se trouve dans la section Appels système qui a le numéro 2:
man 2 fork
Comment voyez-vous la section 2 sans recourir à Google?
Réponses:
Cette commande répertorie les noms triés de toutes les entrées dans la section donnée:
man -aWS 1 \* | xargs basename | sed 's/\.[^.]*$//' | sort -u
Si vous voulez voir les noms de chemin, utilisez:
man -aWS 1 \* | sed 's/\.[^.]*$//' | sort
Cela indique man
de rechercher dans une section toutes les commandes à l'aide du modèle générique *
(entre guillemets antislash afin que le shell ne l'interprète pas). -a
recherche toutes les correspondances, -W
imprime les chemins d'accès au lieu d'afficher les pages et -S 1
spécifie la première section. Modifiez la 1
section dans la section que vous souhaitez rechercher.
La sed
commande supprime les extensions de nom de fichier; supprimez-le si vous voulez voir les noms de fichiers complets. sort
trie les résultats ( -u
supprime les doublons).
Pour une réutilisation pratique, cela définit une fonction de shell Bash:
function mansect { man -aWS ${1?man section not provided} \* | xargs basename | sed 's/\.[^.]*$//' | sort -u; }
Par exemple, vous pouvez l'invoquer mansect 3
pour voir les entrées de la section trois.
[Testé sur macOS.]
uniq
dans le pipeline ne résout pas.
sort -u
pour supprimer les doublons.
Pour répertorier toutes les pages de manuel installées d'une section spécifique, vous pouvez utiliser apropos :
apropos -s 2 . # use an regex for apropos . means anything
apropos -s 2 -w '*' # use unix globbing for apropos
man -a -s 2 '*'
Les pages de manuel sont généralement placées dans /usr/share/man
, mais vérifiez $MANPATH
, et sont organisées en sections comme ceci:
Section 1:
/usr/share/man/man1/
Section 2:
/usr/share/man/man2/
...
Donc pour lister toutes les pages de manuel de la section 2 installées, faites:
ls /usr/share/man/man2/
Ou le plus complet:
find $(echo $MANPATH | tr ':' ' ') -path '*/man2/*'
Ce dernier aura des problèmes si vous avez des répertoires $MANPATH
avec de l'espace dans leurs noms.
Sur la plupart des distributions, vous pouvez également vérifier les pages de manuel disponibles avec un outil de package, par exemple sur les distributions dérivées de Debian que vous pouvez utiliser apt-file
comme ceci:
apt-file search /man2/
lman 2
et répertorie le nom sans fioritures de chaque page sur une nouvelle ligne et les pages. Le corps de la fonction est:find $(man --path | tr ':' ' ') -path "*/man$1/*"| xargs basename | sort | sed -E "s/\.$1(.gz)?\$//" | less
Je sais que c'est une très vieille question, mais les réponses données ici n'ont pas fonctionné pour moi. Par conséquent, j'ai trouvé le one-liner suivant qui fonctionne sur Ubuntu 18.04 et macOS Mojave, 10.14.6:
find $(man --path | tr ':' ' ') -type f -path '*man2*' \
-exec basename {} \; | sed 's/\..*//' | sort
Descente rapide:
$(man --path | tr ':' ' ')
obtenir les chemins actuels des pages de manuelfind <man paths> -type f -path '*man2*' -exec basename {} \;
obtient les noms de fichiers de tous les fichiers normaux dans les chemins d'accès mansed
se débarrasse de l'extension de fichiersort
alphabétiquement.