Liste aller verfügbaren Manpages

33

Wie erstelle ich eine Liste aller verfügbaren Manpages auf einem System?

psihodelia
quelle

Antworten:

43

Verwenden:

apropos .

oder:

man -k .

Wo .ist ein regulärer Ausdruck, der "ein beliebiges Zeichen" bedeutet?

cYrus
quelle
3
Ebenfalls praktisch: apropos -s 1 .Zum Beispiel, um es auf Abschnitt 1 (Benutzerbefehle) zu beschränken.
Bis auf weiteres angehalten.
Ich würde vorschlagen, zu prüfen, wie bash und zsh die Vervollständigung bereitstellen, aber dies ist viel einfacher (allerdings weniger portabel, da nicht alle Systeme einen regulären Ausdruck als Argument dafür akzeptieren apropos).
Gilles 'SO- hör auf böse zu sein'
Keiner von denen arbeitet in Cygwin für mich
Wyatt8740
9
$ man -k . -s <section-NR>

Um zum Beispiel alle Seiten von Abschnitt 2 anzuzeigen:

$ man -k . -s 2
Aaron
quelle
Ich hatte gehofft, man 2 -k '.'dass es auch funktionieren würde. Aber es ist nicht so
Ankur Agarwal
Versuchen Sie es erneut und geben Sie den Abschnitt nach der Option -k wie oben angegeben an ...
Aaron
Diese Antwort ist auf jeden Fall nützlicher
Lucius Hu
Die Angabe der Abschnittsnummer funktioniert bei mir nicht.
OregonTrail
3

Hier ist mein Favorit:

whatis -r .

... und wenn Sie nur alle Manpages in einem bestimmten Abschnitt sehen möchten, verwenden Sie das -sFlag.

Wenn Sie beispielsweise nur eine Liste aller Manpages für alle ausführbaren Befehle erhalten möchten (Abschnitt 1):

whatis -s 1 -r .
Philip Clarke
quelle
2
# Shell script to list pathname of all available man pages  
mandirs="\`man -w | sed 's/:/ /g'\`"  
find $mandirs -type f  

Dies erzeugt eine Liste aller man-Dateien, wobei die Liste der man-Verzeichnisse verwendet wird, die von "man -w" erzeugt wird. Allerdings ist die Regex-Lösung für beliebige Zeichen von cYrus viel besser, um eine saubere Liste nur der Seite zu erhalten Namen:

apropos . | awk '{print $1}'

oder

man -k . | awk '{print $1}'
R Perrin
quelle
1
Auf diese Weise verlieren Sie den Man-Bereich und erstellen Duplikate. Für letztere durchleiten sort -u.
CYRUS
@ cYrus oder ändern Sie es einfach man -k . | awk '{print $1,$2}', um den Abschnitt zu behalten
villapx
0

Suchen Sie in den Pfaden, die in aufgeführt sind /etc/man.config, und geben Sie die zusätzlichen Verzeichnisse an, die von der Direktive FHSoder hinzugefügt wurden FSSTND.

Ignacio Vazquez-Abrams
quelle
Und dann? Ich denke, es ist besser, Pfade aus MANPATH-Variablen zu lesen. Aber es ist schrecklich, weil es eine große Anzahl von Unterverzeichnissen gibt und verschiedene Dateierweiterungen wie 1 oder gz enthält. Übrigens haben viele Systeme keine man.config in / etc
psihodelia
1
@psihodelia: Auf meinem System ist /etc/manpath.configund $MANPATHist null.
Bis auf weiteres angehalten.
0

Unter macOS können Sie verwenden

man -k .

oder

apropos .

oder

whatis .

Unter macOS unterstützen die Befehle man -k, aproposund whatisdas Filtern nach Abschnitten jedoch nicht.

Dazu können Sie die folgende Pipeline verwenden

man -k . | grep \(1\) | less

Sie können durch 1den manuellen Abschnitt Ihrer Wahl ersetzen .

OregonTrail
quelle