Comment produire une list de toutes les pages de manuel dans une section particulière?

Une page de manuel pour fork , par exemple, se trouve dans la section System Calls qui a le numéro 2:

man 2 fork

Comment voyez-vous quoi d'autre est la section 2 sans avoir recours à Google?

Cette command répertorie les noms sortingés de toutes les inputs de la section donnée:

 man -aWS 1 \* | xargs basename | sed 's/\.[^.]*$//' | sort -u 

Si vous voulez voir les paths, utilisez:

 man -aWS 1 \* | sed 's/\.[^.]*$//' | sort 

Cela indique à l' man de searchr une section pour toutes les commands en utilisant le motif générique * (barre oblique inversée) afin que le shell ne l'interprète pas. -a trouve toutes les correspondances, -W imprime les paths au lieu d'afficher les pages, et -S 1 spécifie la première section. Changez le 1 à la section que vous voulez searchr.

La command sed supprime les extensions de nom de file; supprimez-le si vous voulez voir les noms de files complets. sort sortinge les résultats ( -u supprime les duplicates).

Pour une réutilisation pratique, cela définit une fonction shell Bash:

 function mansect { man -aWS ${1?man section not provided} \* | xargs basename | sed 's/\.[^.]*$//' | sort -u; } 

Par exemple, vous pouvez l'appeler en tant que mansect 3 pour voir les inputs de la section trois.

[Testé sur macOS.]

Les pages de manuel sont généralement placées dans /usr/share/man , mais vérifient $MANPATH , et sont organisées en sections comme ceci:

  Section 1: /usr/share/man/man1/ Section 2: /usr/share/man/man2/ ... 

Donc, pour listr 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 directorys dans $MANPATH avec un espace dans leurs noms.

Sur la plupart des dissortingbutions, vous pouvez également vérifier les pages de manuel disponibles avec un outil de package, par exemple sur les dissortingbutions dérivées de Debian, vous pouvez utiliser apt-file comme ceci:

 apt-file search /man2/ 

Pour listr toutes les pages de manuel installées à partir 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 

Sur Mac OS X, la seule chose que je peux mettre au travail est man -k . | grep -F '(3)' man -k . | grep -F '(3)' man -k . | grep -F '(3)' , qui énumère tout dans la section 3.