Co oznaczają liczby na stronie podręcznika?

474

Na przykład, kiedy piszę man ls, widzę LS(1). Ale jeśli napiszę man apachectl, zobaczę, APACHECTL(8)a jeśli napiszę, man cdto skończę cd(n).

Zastanawiam się, jakie znaczenie mają liczby w nawiasach, jeśli takie mają.

Wilduck
źródło
4
@PeterMortensen Właśnie dlatego SuperUser i Unix / Linux i ServerFault oraz AskUbuntu i Apple muszą zostać połączone.
Chloe,
Na marginesie, możesz ustawić własną kolejność wyszukiwania za pomocąexport MANSECT=0p:1:2:3:3p:4:5:6:7:8:9:l:s:n
meuh
To gigantyczna awaria UX. Dokumentacja cyfrowa w ogóle nie powinna mieć numerów sekcji; powinien mieć opisowe nazwy i hiperłącza. Nie mogę uwierzyć, że udało im się sprawić, że dokumentacja była tak myląca, że ​​pytanie to obejrzano 121000 razy.
iono

Odpowiedzi:

496

Liczba odpowiada części sekcji instrukcji, z której pochodzi ta strona; 1 to polecenia użytkownika, a 8 to sysadmin. Strona man dla samego man ( man man) wyjaśnia ją i wymienia te standardowe:

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.

Istnieją pewne terminy, które mają różne strony w różnych sekcjach (np. printfGdy polecenie pojawia się w sekcji 1, a stdlibfunkcja pojawia się w sekcji 3); w takich przypadkach możesz przekazać numer sekcji manprzed nazwą strony, aby wybrać, który chcesz, lub użyć, man -aaby wyświetlić każdą pasującą stronę z rzędu:

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

Możesz powiedzieć, z którymi sekcjami należy dany termin man -k(odpowiednik apropospolecenia). Będzie także wykonywać dopasowania podłańcuchowe (np. Pokaże, sprintfjeśli uruchomisz man -k printf), więc musisz użyć, ^termaby go ograniczyć:

$ 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)
Michał Mrożek
źródło
5
To z pewnością to wyjaśnia. Czy istnieje prosty sposób stwierdzenia, czy dla danego polecenia istnieje wiele stron podręcznika?
Wilduck
2
@Wil Tak, pod redakcją
Michael Mrozek
11
Uwaga: te numery sekcji dotyczą systemu Linux. 1, 3 i 6 są takie same we wszystkich wariantach uniksowych AFAIK, ale pozostałe i sekcje nie zawierające pojedynczych cyfr mogą się różnić. Zwykle man X introopisuje to, co znajduje się w sekcji X.
Gilles
2
@KeithB: Użyłem kilku jednorożców z różnymi 4,5,7,8. Digital Unix (OSF1) miał, a Solaris nadal ma: formaty plików w 4, różne w 5, urządzenia w 7. Solaris również umieszcza polecenia administratora na 1m. Myślę, że wywołania systemowe w 2 są uniwersalne, ale niektóre systemy mają również interfejsy biblioteki C w 2 (kiedy powinny być cienkimi opakowaniami wokół tytułowego wywołania systemowego).
Gilles
4
Huh, kto pomyślał, że będziesz potrzebować instrukcji, aby skorzystać z instrukcji ... Nigdy nie wykonałem man man... aż do teraz.
Matt Clark,
59

Historia tych numerów sekcji sięga pierwotnego podręcznika programisty Uniksa autorstwa Thompsona i Ritchiego z 1971 roku.

Oryginalne sekcje były

  1. Polecenia
  2. Połączenia systemowe
  3. Podprogramy
  4. Pliki specjalne
  5. Formaty plików
  6. Programy obsługiwane przez użytkownika
  7. Różne
KeithB
źródło
Rzeczywiście więcej rzeczy z lat 70. Myślałem, że to z lat 80.
Rolf
„Różne” oznacza przede wszystkim „szeroką informację o całym podsystemie lub ogólnej funkcji uniksowej, a nie o określonym punkcie końcowym interfejsu API”. Patrz na przykład pipe(7), tcp(7)(i kilka innych sieciowych strony man), pthreads(7), boot(7), regex(7), itd. Nie ma innych rzeczy w sekcji 7, jak również, takie jak ascii(7)(tabela ASCII) i man(7)(jak napisać stronę man), ale strony szerokie Dokumenty są zdecydowanie najbardziej przydatne rzeczy w sekcji 7 z mojego doświadczenia.
Kevin
31

konqueror opisuje także niestandardowe sekcje: (dzięki @ greg0ire za pomysł)

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
źródło
21

Co to oznacza już opisane, ale chce również dodać, że każda sekcja posiada specjalną stronę podręcznika z wprowadzeniem: intro. Na przykład, zobaczyć man 1 introczy man 3 introi tak dalej.

koder php
źródło
1
Nie widzę tego w mojej instalacji Fedory. Czy wprowadzenie do man X nie jest standardowe?
beatgammit
@tjameson Czy masz man-pageszainstalowany pakiet?
koder php
15

Z strony manpodręcznika:

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]

Co do tego, dlaczego są tak oddzielni - istnieje pewne nakładanie się. Niektóre strony istnieją w więcej niż jednej sekcji, w zależności od tego, co masz na myśli.

Na przykład porównaj man crontabz man 5 crontab- są szanse, że ten drugi to ten, który chciałeś sprawdzić.

Shadur
źródło
A jakie są man1pi man3p?
Tyilo,
A gdzie powinienem umieścić własne strony podręcznika ~/man?
Tyilo,
Wiedziałem, że są różne liczby, ale nie wiedziałem, że to rym. Dzięki
użytkownik606723,
1
1p jest standardową wersją podręcznika posix. Jeśli chcesz pisać przenośny kod, powinieneś używać tylko stron podręcznika Xp. Jeśli twoja implementacja nie jest zgodna z posix, strony podręcznika X i Xp mogą się różnić.
andcoz
@Tyilo zobacz moją odpowiedź
Babken Vardanyan
8

To są numery sekcji. Po prostu wpisz man manlub otwórz konqueror i wpisz man: // man, a zobaczysz, co to za sekcje.

greg0ire
źródło
7

Często do strony man można się odwoływać poprzez dodanie jej do sekcji zawartej w nawiasach, np .:

read(2)

Ten styl ma dwie główne zalety:

  • natychmiast staje się jasne, że odwołujesz się do strony podręcznika - tzn. możesz napisać coś takiego jak „por. czytaj (3) „zamiast” por. strona podręcznika użytkownika sekcja 3 przeczytana ”
  • jeśli wiele sekcji zawiera strony podręcznika o tej samej nazwie, określenie sekcji jest bardziej precyzyjne

Strony podręcznika są podzielone na sekcje, np. Sekcja 1 zawiera wszystkie strony podręcznika użytkownika, sekcja 2 wszystkie strony podręcznika dla wywołań systemowych, sekcja 3 dotyczy funkcji bibliotecznych itp.

W wierszu poleceń, jeśli nie określisz wyraźnie sekcji, otrzymasz pierwszą pasującą stronę man, w domyślnej kolejności przechodzenia między sekcjami, np .:

$ man read

wyświetla się BASH_BUILTINS(1)w Fedorze. Gdzie

$ man 2 read

wyświetla stronę podręcznika dla read()wywołania systemowego.

Zauważ, że specyfikacja pozycji tej sekcji nie jest przenośna - np. W Solarisie możesz podać ją w następujący sposób:

$ man -s 2 read

Zazwyczaj man manzawiera również niektóre z dostępnych sekcji. Ale niekoniecznie wszystkie. Aby wyświetlić wszystkie dostępne sekcje, można wymienić podkatalogi wszystkich katalogów wymienionych w domyślnej ścieżce man lub zmiennej środowiskowej $MANPATH. Na przykład w systemie Fedora 23 z zainstalowanymi niektórymi pakietami programistycznymi /usr/share/manma następujące podkatalogi:

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

Katalogi z manprefiksem reprezentują każdą sekcję - podczas gdy inne zawierają przetłumaczone sekcje. Tak więc, aby uzyskać listę niepustych sekcji, można wydać takie polecenie:

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

(sekcje kończące psię na strony podręcznika POSIX)

Aby wyświetlić stronę podręcznika w innym języku (jeśli jest dostępny), można ustawić zmienną środowiskową związaną z językiem, np .:

$ LC_MESSAGES=de_DE man read

Ponadto każda sekcja powinna mieć nazwaną stronę podręcznika wprowadzającego intro, np. Widoczną poprzez:

$ man 2 intro
maxschlepzig
źródło
4

Definicje SVr4 to:

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

Jest to faktyczna numeracja „genetycznego” systemu UNIX. POSIX nie definiuje liczb.

schily
źródło