Was bedeuten die Zahlen in einer Manpage?

474

Wenn ich zum Beispiel tippe, sehe man lsich LS(1). Aber wenn ich tippe, man apachectlsehe ich APACHECTL(8)und wenn ich tippe, lande man cdich bei cd(n).

Ich frage mich, welche Bedeutung die Zahlen in Klammern haben, wenn sie welche haben.

Wilduck
quelle
4
@PeterMortensen Aus diesem Grund müssen SuperUser und Unix / Linux sowie ServerFault und AskUbuntu und Apple zusammengeführt werden.
Chloe
export MANSECT=0p:1:2:3:3p:4:5:6:7:8:9:l:s:n
Nebenbei
Dies ist ein gigantischer UX-Fehler. Digitale Dokumentation sollte überhaupt keine Abschnittsnummern haben. Es sollte aussagekräftige Namen und Hyperlinks haben. Ich kann nicht glauben, dass sie es geschafft haben, die Dokumentation so verwirrend zu gestalten, dass diese Frage 121000 Mal beantwortet wurde.
10.

Antworten:

496

Die Nummer entspricht dem Abschnitt des Handbuchs, aus dem diese Seite stammt. 1 ist Benutzerbefehle, während 8 Sysadmin Zeug ist. Die man-Seite für man selbst ( man man) erklärt es und listet die Standard- Seiten auf :

MANUAL SECTIONS
    The standard sections of the manual include:

    1      User Commands
    2      System Calls
    3      C Library Functions
    4      Devices and Special Files
    5      File Formats and Conventions
    6      Games et. al.
    7      Miscellanea
    8      System Administration tools and Daemons

    Distributions customize the manual section to their specifics,
    which often include additional sections.

Es gibt bestimmte Begriffe mit unterschiedlichen Seiten in verschiedenen Abschnitten (z. B. printfwenn in Abschnitt 1 ein Befehl und stdlibin Abschnitt 3 eine Funktion angezeigt wird). In solchen Fällen können Sie die Abschnittsnummer manvor dem Seitennamen übergeben, um auszuwählen, welche Sie verwenden möchten, oder man -aum jede übereinstimmende Seite in einer Reihe anzuzeigen:

$ man 1 printf
$ man 3 printf
$ man -a printf

Sie können bestimmen, in welche Abschnitte ein Begriff fällt man -k(entspricht dem aproposBefehl). Es führt auch Teilstring-Übereinstimmungen aus (z. B. wird angezeigt, sprintfob Sie ausgeführt werden man -k printf), daher müssen Sie Folgendes verwenden ^term, um die Anzahl zu begrenzen:

$ man -k '^printf'
printf               (1)  - format and print data
printf               (1p)  - write formatted output
printf               (3)  - formatted output conversion
printf               (3p)  - print formatted output
printf [builtins]    (1)  - bash built-in commands, see bash(1)
Michael Mrozek
quelle
5
Das erklärt es sicherlich. Gibt es eine einfache Möglichkeit, festzustellen, ob für einen bestimmten Befehl mehrere Manpages vorhanden sind oder nicht?
Wilduck
2
@Wil Ja, bearbeitet
Michael Mrozek
11
Beachten Sie, dass diese Abschnittsnummern für Linux gelten. 1, 3 und 6 sind für alle Unix-Varianten AFAIK gleich, die anderen und die nicht-einstelligen Abschnitte können sich jedoch unterscheiden. man X introBeschreibt normalerweise , was in Abschnitt ist X.
Gilles
2
@KeithB: Ich habe einige Unices mit verschiedenen 4,5,7,8 verwendet. Digital Unix (OSF1) hatte und Solaris hat noch: Dateiformate in 4, verschiedene in 5, Geräte in 7. Solaris legt auch Administratorbefehle in 1m. Ich denke, Systemaufrufe in 2 sind universell, aber einige Systeme haben auch einige C-Bibliotheksschnittstellen in 2 (wenn sie dünne Wrapper um den namensgebenden Syscall sein sollen).
Gilles
4
Huh, who'da haben Sie eine manuelle bräuchten ein Handbuch zu verwenden ... Nie habe ich jemals ausgeführt man man... bis jetzt.
Matt Clark
59

Die Geschichte dieser Abschnittsnummern geht auf das ursprüngliche Unix-Programmierhandbuch von Thompson und Ritchie aus dem Jahr 1971 zurück.

Die ursprünglichen Abschnitte waren

  1. Befehle
  2. Systemaufrufe
  3. Unterprogramme
  4. Spezielle Dateien
  5. Dateiformate
  6. Vom Benutzer gepflegte Programme
  7. Sonstiges
KeithB
quelle
In der Tat mehr Zeug aus den 70ern. Ich dachte es wäre aus den 80ern.
Rolf
"Verschiedenes" bedeutet in erster Linie "umfassende Informationen über ein gesamtes Subsystem oder eine generische Unix-Funktion und nicht über einen bestimmten API-Endpunkt". Siehe zum Beispiel pipe(7), tcp(7)(und einige andere Netzwerke - man - Seiten), pthreads(7), boot(7), regex(7), etc. Es in Abschnitt andere Sachen ist 7 als auch, wie ascii(7)(ASCII - Tabelle) und man(7)(wie man einen Mann Seite schreiben) , aber die breiten docs Seiten sind bei weitem die nützlichsten Dinge in Abschnitt 7 in meiner Erfahrung.
Kevin
31

konqueror beschreibt auch nicht standardmäßige Abschnitte: (Danke an @ greg0ire für die Idee)

0     Header files
0p    Header files (POSIX)
1     Executable programs or shell commands
1p    Executable programs or shell commands (POSIX)
2     System calls (functions provided by the kernel)
3     Library calls (functions within program libraries)
3n    Network Functions
3p    Perl Modules
4     Special files (usually found in /dev)
5     File formats and conventions eg /etc/passwd
6     Games
7     Miscellaneous  (including  macro  packages and conventions), e.g. man(7), groff(7)
8     System administration commands (usually only for root)
9     Kernel routines
l     Local documentation
n     New manpages
Babken Vardanyan
quelle
21

Was es bedeutet , bereits beschrieben, aber ich möchte auch hinzufügen , dass jeder Abschnitt spezielle Hilfeseite mit Einführung hat: intro. Zum Beispiel, siehe man 1 introoder man 3 intround so weiter.

PHP-Codierer
quelle
1
Ich sehe das auf meiner Fedora-Installation nicht. Ist man X Intro nicht Standard?
Beatgammit
@ tjameson Hast du ein man-pagesPaket installiert?
PHP-Coder
15

Aus der manManpage:

The table below shows the section numbers of the manual followed by the 
types of pages they contain.

   1   Executable programs or shell commands
   2   System calls (functions provided by the kernel)
   3   Library calls (functions within program libraries)
   4   Special files (usually found in /dev)
   5   File formats and conventions eg /etc/passwd
   6   Games
   7   Miscellaneous  (including  macro  packages and conven‐
       tions), e.g. man(7), groff(7)
   8   System administration commands (usually only for root)
   9   Kernel routines [Non standard]

Warum sie so getrennt sind - es gibt einige Überlappungen. Bestimmte Hilfeseiten sind in mehr als einem Abschnitt vorhanden, je nachdem, was Sie meinen.

Vergleichen Sie zum Beispiel man crontabmit man 5 crontab- es besteht die Möglichkeit, dass letzterer derjenige ist, den Sie nachschlagen wollten.

Shadur
quelle
Und was ist man1pund man3p?
Tyilo
Und wo soll ich meine eigenen Hilfeseiten platzieren ~/man?
Tyilo
Ich wusste, dass es verschiedene Zahlen gab, aber ich wusste nicht, dass es einen Reim dafür gab. Thanks
user606723
1
1p ist die Posix-Standardversion des Handbuchs. Wenn Sie portablen Code schreiben möchten, sollten Sie nur XP-Manpages verwenden. Wenn Ihre Implementierung nicht posix-konform ist, können sich die Manpages von X und Xp unterscheiden.
Andcoz
@ Tyilo sehen meine Antwort
Babken Vardanyan
8

Dies sind Abschnittsnummern. Geben Sie einfach man manoder offene Konqueror und gibt einen Mann: // Mann und Sie werden sehen , was diese Abschnitte sind.

greg0ire
quelle
7

Oft wird auf eine Manpage verwiesen, indem man sie mit dem in Klammern gesetzten Abschnitt versieht, zB:

read(2)

Dieser Stil hat zwei Hauptvorteile:

  • es ist sofort klar, dass Sie auf eine Manpage verweisen - dh Sie können so etwas schreiben wie 'vgl. read (3) 'anstatt' vgl. die Sektion 3 der Manpage von read '
  • Wenn mehrere Abschnitte gleichnamige Manpages enthalten, ist die Angabe des Abschnitts genauer

Hilfeseiten sind in Abschnitte unterteilt, z. B. Abschnitt 1 enthält alle Hilfeseiten für Benutzerbefehle, Abschnitt 2 alle Hilfeseiten für Systemaufrufe, Abschnitt 3 enthält Bibliotheksfunktionen usw.

Wenn Sie in der Befehlszeile den Abschnitt nicht explizit angeben, wird die erste übereinstimmende Manpage in der Standard-Durchgangsreihenfolge des Abschnitts angezeigt, z.

$ man read

wird BASH_BUILTINS(1)auf Fedora angezeigt . Wo

$ man 2 read

Zeigt die Manpage für den read()Systemaufruf an.

Beachten Sie, dass die Positionsangabe des Abschnitts nicht portierbar ist. Unter Solaris würden Sie sie beispielsweise folgendermaßen angeben:

$ man -s 2 read

In der Regel werden man manauch einige der verfügbaren Abschnitte aufgelistet. Aber nicht unbedingt alle. Um alle verfügbaren Abschnitte aufzulisten, kann man die Unterverzeichnisse aller Verzeichnisse auflisten, die im Standardpfad man oder in der Umgebungsvariablen aufgeführt sind $MANPATH. Beispiel: Auf einem Fedora 23-System mit einigen installierten Entwicklungspaketen befinden /usr/share/mansich folgende Unterverzeichnisse:

cs  es  id  man0p  man2   man3x  man5x  man7x  man9x  pt_BR  sk  zh_CN
da  fr  it  man1   man2x  man4   man6   man8   mann   pt_PT  sv  zh_TW
de  hr  ja  man1p  man3   man4x  man6x  man8x  pl     ro     tr
en  hu  ko  man1x  man3p  man5   man7   man9   pt     ru     zh

Die Verzeichnisse mit dem manPräfix stellen jeden Abschnitt dar - während die anderen übersetzte Abschnitte enthalten. Um eine Liste mit nicht leeren Abschnitten zu erhalten, könnte man einen Befehl wie diesen eingeben:

$ find /usr/share/man -type f  | sed 's@^.*/man\(..*\)/.*$@\1@' \
    | sort -u | column
0p  1p  3   4   6   8
1   2   3p  5   7

(Die Abschnitte, die mit enden, psind POSIX-Manpages.)

Um eine Manpage in einer anderen Sprache anzuzeigen (falls verfügbar), können Sie eine sprachbezogene Umgebungsvariable festlegen, z.

$ LC_MESSAGES=de_DE man read

Außerdem sollte jeder Abschnitt eine Einführungsmanpage haben intro, die beispielsweise angezeigt wird über:

$ man 2 intro
maxschlepzig
quelle
4

Die Definitionen für SVr4 sind:

1 User Commands
2 System Calls
3 library Functions
4 File Formats
5 Standards, Environment and Macros (e.g. man(5))
6 Games and Demos
7 Device and Network Interfaces, Special Files
8 Maintenance Procedures
9 Kernel and Driver entry points and structures

Dies ist die tatsächliche Nummerierung für einen "genetischen" UNIX. POSIX definiert keine Zahlen.

schily
quelle