Apa arti angka-angka di halaman manual?

474

Jadi, misalnya, ketika saya mengetik man lssaya melihat LS(1). Tetapi jika saya mengetik man apachectlsaya melihat APACHECTL(8)dan jika saya mengetik man cdsaya berakhir dengan cd(n).

Saya bertanya-tanya apa pentingnya angka dalam tanda kurung, jika ada.

Wilduck
sumber
4
@PeterMortensen Inilah sebabnya mengapa SuperUser dan Unix / Linux dan ServerFault dan AskUbuntu dan Apple semua harus digabung.
Chloe
Di samping catatan, Anda dapat mengatur pesanan pencarian Anda denganexport MANSECT=0p:1:2:3:3p:4:5:6:7:8:9:l:s:n
meuh
Ini adalah kegagalan UX raksasa. Dokumentasi digital seharusnya tidak memiliki nomor bagian sama sekali; itu harus memiliki nama deskriptif dan hyperlink. Saya tidak percaya mereka berhasil membuat dokumentasi yang membingungkan sehingga pertanyaan ini dilihat 121.000 kali.
iono

Jawaban:

497

Nomornya sesuai dengan bagian mana dari manual dari mana halaman itu berasal; 1 adalah perintah pengguna, sedangkan 8 adalah hal sysadmin. Halaman manual untuk man itu sendiri ( man man) menjelaskannya dan mencantumkan yang standar:

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.

Ada istilah tertentu yang memiliki halaman berbeda di bagian berbeda (mis. printfSaat perintah muncul di bagian 1, seperti stdlibfungsi yang muncul di bagian 3); dalam kasus seperti itu Anda dapat meneruskan nomor bagian mansebelum nama halaman untuk memilih yang Anda inginkan, atau gunakan man -auntuk menampilkan setiap halaman yang cocok secara berturut-turut:

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

Anda bisa memberi tahu bagian mana yang termasuk dalam istilah man -k(setara dengan aproposperintah). Ini akan melakukan pencocokan substring juga (misalnya akan ditampilkan sprintfjika Anda menjalankan man -k printf), jadi Anda perlu menggunakannya ^termuntuk membatasi:

$ 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
sumber
5
Itu jelas menjelaskannya. Apakah ada cara mudah untuk mengetahui apakah ada beberapa halaman manual untuk suatu perintah?
Wilduck
2
@Ya Ya, diedit
Michael Mrozek
11
Perhatikan bahwa nomor bagian ini adalah untuk Linux. 1, 3 dan 6 adalah sama di semua varian unix AFAIK, tetapi yang lain dan bagian non-satu-digit dapat berbeda. Biasanya man X intromenggambarkan apa yang ada di bagian X.
Gilles
2
@KeithB: Saya telah menggunakan beberapa unix dengan 4,5,7,8 berbeda. Digital Unix (OSF1) telah, dan Solaris masih memiliki: format file dalam 4, misc dalam 5, perangkat dalam 7. Solaris juga menempatkan perintah administrator dalam 1m. Saya pikir system calls in 2 adalah universal, tetapi beberapa sistem juga memiliki beberapa interface C library di 2 (ketika mereka seharusnya adalah pembungkus tipis di sekitar syscall eponymous).
Gilles
4
Huh, who'da berpikir Anda akan memerlukan manual untuk menggunakan manual ... Belum pernah saya dieksekusi man man... sampai sekarang.
Matt Clark
59

Sejarah nomor bagian ini kembali ke Manual Programmer Unix asli oleh Thompson dan Ritchie pada tahun 1971.

Bagian aslinya adalah

  1. Perintah
  2. Panggilan sistem
  3. Subrutin
  4. File khusus
  5. Format file
  6. Program yang dikelola pengguna
  7. Lain-lain
KeithB
sumber
Lebih banyak barang dari tahun 70an, memang. Saya pikir itu dari tahun 80-an.
Rolf
"Lain-lain" terutama berarti "informasi luas tentang seluruh subsistem atau fitur Unix generik daripada titik akhir API tertentu." Lihat misalnya pipe(7), tcp(7)(dan beberapa jaringan halaman manual lainnya), pthreads(7), boot(7), regex(7), dll Ada hal-hal lain di bagian 7 juga, seperti ascii(7)(table ASCII) dan man(7)(bagaimana menulis sebuah halaman manual) tapi docs luas halaman yang jauh hal yang paling berguna di bagian 7 dalam pengalaman saya.
Kevin
31

konqueror juga menjelaskan bagian yang tidak standar: (terima kasih kepada @ greg0ire untuk idenya)

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
sumber
21

Apa itu berarti sudah dijelaskan, tapi saya juga ingin menambahkan bahwa setiap bagian memiliki halaman pengguna khusus dengan pengenalan: intro. Misalnya, lihat man 1 introatau man 3 introdan seterusnya.

php-coder
sumber
1
Saya tidak melihat ini di instal Fedora saya. Apakah intro pria X tidak standar?
beatgammit
@tjameson Apakah Anda sudah man-pagesmenginstal paket?
php-coder
15

Dari halaman manmanual:

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]

Mengapa mereka terpisah seperti itu - ada beberapa tumpang tindih. Halaman manual tertentu ada di lebih dari satu bagian tergantung pada apa yang Anda maksud.

Sebagai contoh, bandingkan man crontabdengan man 5 crontab- kemungkinan yang terakhir adalah yang Anda maksudkan untuk dicari.

Shadur
sumber
Dan apa man1pdan man3p?
Tyilo
Dan di mana saya harus menempatkan halaman manual saya yang berlokasi ~/man?
Tyilo
Saya tahu ada nomor yang berbeda, tetapi saya tidak tahu ada sajak untuk itu. Terima kasih
user606723
1
1p adalah versi standar posix dari manual. Jika Anda ingin menulis kode portabel, Anda harus menggunakan halaman manual Xp saja. Jika implementasi Anda halaman buku panduan X dan Xp yang tidak memenuhi syarat bisa berbeda.
andcoz
@ Tyilo melihat jawaban saya
Babken Vardanyan
8

Ini adalah nomor bagian. Cukup ketik man manatau buka konqueror dan ketik man: // man dan Anda akan melihat apa saja bagian ini.

greg0ire
sumber
7

Seringkali, halaman manual dirujuk melalui suffix dengan bagian yang dilampirkan dalam tanda kurung, misalnya:

read(2)

Gaya ini memiliki dua keunggulan utama:

  • segera jelas bahwa Anda merujuk halaman manual - yaitu Anda dapat menulis sesuatu seperti 'lih. baca (3) 'bukan' lih. bagian 3 halaman manual baca '
  • jika beberapa bagian berisi halaman manual dengan nama yang sama, menentukan bagian tersebut lebih tepat

Halaman manual disusun dalam bagian, misalnya Bagian 1 termasuk semua halaman manual perintah pengguna, Bagian 2 semua halaman manual untuk panggilan sistem, Bagian 3 adalah untuk fungsi perpustakaan dll.

Pada baris perintah, jika Anda tidak secara eksplisit menentukan bagian Anda mendapatkan halaman manual pertama yang cocok, dalam urutan traversal bagian default, misalnya:

$ man read

ditampilkan BASH_BUILTINS(1)di Fedora. Dimana

$ man 2 read

menampilkan halaman manual untuk read()panggilan sistem.

Perhatikan bahwa spesifikasi posisi bagian ini tidak portabel - mis. Pada Solaris Anda akan menentukannya seperti ini:

$ man -s 2 read

Biasanya, cantumkan man manjuga beberapa bagian yang tersedia. Namun belum tentu semuanya. Untuk mendaftarkan semua bagian yang tersedia, seseorang dapat mendaftar subdirektori dari semua direktori yang terdaftar di path man default atau variabel lingkungan $MANPATH. Misalnya pada sistem Fedora 23 dengan beberapa paket pengembangan yang diinstal /usr/share/manmemiliki subdirektori berikut:

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

Direktori dengan manawalan mewakili setiap bagian - sedangkan yang lainnya berisi bagian yang diterjemahkan. Jadi, untuk mendapatkan daftar bagian yang tidak kosong, seseorang dapat mengeluarkan perintah seperti ini:

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

(bagian yang diakhiri padalah halaman manual POSIX)

Untuk melihat halaman manual dalam bahasa lain (jika tersedia) seseorang dapat mengatur variabel lingkungan terkait bahasa, misalnya:

$ LC_MESSAGES=de_DE man read

Juga, setiap bagian harus memiliki halaman manual pengantar yang dinamai intro, misalnya dapat dilihat melalui:

$ man 2 intro
maxschlepzig
sumber
4

Definisi untuk SVr4 adalah:

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

Ini adalah penomoran aktual untuk UNIX "genetik". POSIX tidak mendefinisikan angka.

schily
sumber