Eine Manpage für fork
befindet sich beispielsweise im Abschnitt Systemaufrufe mit der Nummer 2:
man 2 fork
Wie sehen Sie, was sonst noch in Abschnitt 2 steht, ohne auf Google zurückzugreifen?
Eine Manpage für fork
befindet sich beispielsweise im Abschnitt Systemaufrufe mit der Nummer 2:
man 2 fork
Wie sehen Sie, was sonst noch in Abschnitt 2 steht, ohne auf Google zurückzugreifen?
Antworten:
Dieser Befehl listet die sortierten Namen aller Einträge im angegebenen Abschnitt auf:
man -aWS 1 \* | xargs basename | sed 's/\.[^.]*$//' | sort -u
Wenn Sie die Pfadnamen sehen möchten, verwenden Sie:
man -aWS 1 \* | sed 's/\.[^.]*$//' | sort
Dies weist Sie man
an, einen Abschnitt nach allen Befehlen zu durchsuchen, indem Sie das Platzhalter-Muster verwenden *
(mit Backslash-Anführungszeichen, damit die Shell es nicht interpretiert). -a
findet alle Übereinstimmungen, -W
druckt die Pfadnamen, anstatt die Seiten anzuzeigen, und -S 1
gibt den ersten Abschnitt an. Wechseln Sie zu dem 1
Abschnitt, den Sie durchsuchen möchten.
Der sed
Befehl entfernt die Dateinamenerweiterungen. Entfernen Sie es, wenn Sie die vollständigen Dateinamen sehen möchten. sort
sortiert die Ergebnisse ( -u
entfernt Duplikate).
Zur bequemen Wiederverwendung definiert dies eine Bash-Shell-Funktion:
function mansect { man -aWS ${1?man section not provided} \* | xargs basename | sed 's/\.[^.]*$//' | sort -u; }
Sie können es beispielsweise aufrufen mansect 3
, um die Einträge in Abschnitt drei anzuzeigen .
[Getestet unter macOS.]
uniq
in die Pipeline stellt, kann das Problem nicht beheben.
sort -u
, um Duplikate zu entfernen.
Um alle installierten Manpages eines bestimmten Abschnitts aufzulisten, können Sie apropos verwenden :
apropos -s 2 . # use an regex for apropos . means anything
apropos -s 2 -w '*' # use unix globbing for apropos
man -a -s 2 '*'
Hilfeseiten werden normalerweise in folgenden Abschnitten abgelegt /usr/share/man
, aber geprüft $MANPATH
:
Section 1:
/usr/share/man/man1/
Section 2:
/usr/share/man/man2/
...
Gehen Sie wie folgt vor, um alle installierten Hilfeseiten für Abschnitt 2 aufzulisten:
ls /usr/share/man/man2/
Oder die vollständigere:
find $(echo $MANPATH | tr ':' ' ') -path '*/man2/*'
Letzteres hat Probleme, wenn Sie Verzeichnisse $MANPATH
mit Leerzeichen im Namen haben.
Bei den meisten Distributionen können Sie die verfügbaren Manpages auch mit einem Pakettool überprüfen, z. B. bei von Debian abgeleiteten Distributionen, die Sie folgendermaßen verwenden können apt-file
:
apt-file search /man2/
lman 2
und den schmucklosen Namen für jede Seite in einer neuen Zeile auflistet und mit Seiten versehen. Der Körper der Funktion ist:find $(man --path | tr ':' ' ') -path "*/man$1/*"| xargs basename | sort | sed -E "s/\.$1(.gz)?\$//" | less
Ich weiß, dass dies eine sehr alte Frage ist, aber die hier gegebenen Antworten haben bei mir alle nicht funktioniert. Aus diesem Grund habe ich mir folgenden Einzeiler ausgedacht , der unter Ubuntu 18.04 und macOS Mojave 10.14.6 funktioniert:
find $(man --path | tr ':' ' ') -type f -path '*man2*' \
-exec basename {} \; | sed 's/\..*//' | sort
Schnell runter rennen:
$(man --path | tr ':' ' ')
um die aktuellen Pfade der manpages zu erhaltenfind <man paths> -type f -path '*man2*' -exec basename {} \;
Ruft die Dateinamen aller regulären Dateien in den man-Pfaden absed
Entfernt die Dateierweiterungsort
alphabetisch.