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 manan, einen Abschnitt nach allen Befehlen zu durchsuchen, indem Sie das Platzhalter-Muster verwenden *(mit Backslash-Anführungszeichen, damit die Shell es nicht interpretiert). -afindet alle Übereinstimmungen, -Wdruckt die Pfadnamen, anstatt die Seiten anzuzeigen, und -S 1gibt den ersten Abschnitt an. Wechseln Sie zu dem 1Abschnitt, den Sie durchsuchen möchten.
Der sedBefehl entfernt die Dateinamenerweiterungen. Entfernen Sie es, wenn Sie die vollständigen Dateinamen sehen möchten. sortsortiert die Ergebnisse ( -uentfernt 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 .
Nett, danke. Ich erhalte einige Duplikate (z. B. Pfade in /Applications/Xcode.app und "Accelerate" in Abschnitt 7), aber nichts, was ein uniqin die Pipeline stellt, kann das Problem nicht beheben.
XYZ
@xyz: Ich habe den Sortierbefehl aktualisiert sort -u, um Duplikate zu entfernen.
Vielen Dank. Die Option -s ist in Mac OS X apropos, das vermutlich von BSD stammt, nicht vorhanden.
XYZ
@ f100 Ah ok, vielleicht versuchenman -a -s 2 '*'
Ulrich Dangel
Das scheint eher so zu sein, aber anstatt sie aufzulisten, ruft es den Betrachter für jede einzelne nacheinander auf. Ich habe eine Funktion zum Auflisten gehackt, die ich in einem anderen Kommentar gepostet habe. Es hat wahrscheinlich Probleme, aber es ist genug für mich :)
XYZ
20
Hilfeseiten werden normalerweise in folgenden Abschnitten abgelegt /usr/share/man, aber geprüft $MANPATH:
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 $MANPATHmit 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:
Danke - Dies war der Anfang, den ich brauchte. Ich habe eine Shell-Funktion erstellt, die z. B. ausgeführt wird lman 2und 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
xyz
1
Unter Mac OS X kann ich nur arbeiten, indem ich man -k . | grep -F '(3)'alles in Abschnitt 3 aufführe.
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:
form Thors answer: $(man --path | tr ':' ' ')um die aktuellen Pfade der manpages zu erhalten
find <man paths> -type f -path '*man2*' -exec basename {} \; Ruft die Dateinamen aller regulären Dateien in den man-Pfaden ab
Antworten:
Dieser Befehl listet die sortierten Namen aller Einträge im angegebenen Abschnitt auf:
Wenn Sie die Pfadnamen sehen möchten, verwenden Sie:
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 dem1
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:
Sie können es beispielsweise aufrufen
mansect 3
, um die Einträge in Abschnitt drei anzuzeigen .[Getestet unter macOS.]
quelle
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 :
quelle
man -a -s 2 '*'
Hilfeseiten werden normalerweise in folgenden Abschnitten abgelegt
/usr/share/man
, aber geprüft$MANPATH
:Gehen Sie wie folgt vor, um alle installierten Hilfeseiten für Abschnitt 2 aufzulisten:
Oder die vollständigere:
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
:quelle
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
Unter Mac OS X kann ich nur arbeiten, indem ich
man -k . | grep -F '(3)'
alles in Abschnitt 3 aufführe.quelle
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:
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.quelle