Những con số trong một trang người đàn ông có ý nghĩa gì?


474

Vì vậy, ví dụ, khi tôi gõ man lstôi thấy LS(1). Nhưng nếu tôi gõ man apachectltôi thấy APACHECTL(8)và nếu tôi gõ man cdtôi sẽ kết thúc cd(n).

Tôi đang tự hỏi ý nghĩa của các số trong ngoặc là gì, nếu chúng có bất kỳ.




4
@PeterMortensen Đây là lý do tại sao SuperUser và Unix / Linux và ServerFault và AskUb Ubuntu và Apple đều cần được hợp nhất.
Chloe

Bên cạnh đó, bạn có thể đặt thứ tự tìm kiếm của riêng mình vớiexport MANSECT=0p:1:2:3:3p:4:5:6:7:8:9:l:s:n
meuh

Đây là một thất bại UX khổng lồ. Tài liệu kỹ thuật số không nên có số phần; nó nên có tên mô tả và siêu liên kết. Tôi không thể tin rằng họ quản lý để làm cho tài liệu khó hiểu đến nỗi câu hỏi này đã được xem 121000 lần.
iono

Câu trả lời:


496

Số tương ứng với phần của hướng dẫn mà trang đó đến từ; 1 là các lệnh của người dùng, trong khi 8 là các công cụ sysadmin. Trang man cho chính man ( man man) giải thích nó và liệt kê các tiêu chuẩn:

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.

Có một số thuật ngữ nhất định có các trang khác nhau trong các phần khác nhau (ví dụ printfnhư một lệnh xuất hiện trong phần 1, như một stdlibchức năng xuất hiện trong phần 3); trong trường hợp như vậy, bạn có thể chuyển số phần tới mantrước tên trang để chọn trang nào bạn muốn hoặc sử dụng man -ađể hiển thị mọi trang phù hợp trong một hàng:

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

Bạn có thể cho biết phần nào một thuật ngữ rơi vào man -k(tương đương với aproposlệnh). Nó cũng sẽ thực hiện khớp chuỗi con (ví dụ: nó sẽ hiển thị sprintfnếu bạn chạy man -k printf), vì vậy bạn cần sử dụng ^termđể giới hạn nó:

$ 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)

5
Điều đó chắc chắn giải thích nó. Có một cách dễ dàng để biết liệu có nhiều trang man cho một lệnh nhất định hay không?
Wilduck

2
@Wil Có, đã chỉnh sửa
Michael Mrozek

11
Lưu ý rằng những số phần này là dành cho Linux. 1, 3 và 6 giống nhau trên tất cả các biến thể unix AFAIK, nhưng các phần khác và các phần không có chữ số có thể khác nhau. Thường man X intromô tả những gì trong phần X.
Gilles

2
@KeithB: Tôi đã sử dụng một số thông báo với 4,5,7,8 khác nhau. Unix kỹ thuật số (OSF1) đã có, và Solaris vẫn có: định dạng tệp trong 4, misc trong 5, thiết bị trong 7. Solaris cũng đặt lệnh quản trị viên trong 1m. Tôi nghĩ rằng các cuộc gọi hệ thống trong 2 là phổ biến, nhưng một số hệ thống cũng có một số giao diện thư viện C trong 2 (khi chúng được coi là các trình bao bọc mỏng xung quanh tòa nhà cùng tên).
Gilles

4
Huh, who'da nghĩ rằng bạn cần một hướng dẫn để sử dụng một hướng dẫn ... Chưa bao giờ tôi thực hiện man man... cho đến bây giờ.
Matt Clark

59

Lịch sử của các số phần này quay trở lại Hướng dẫn lập trình viên Unix ban đầu của Thompson và Ritchie vào năm 1971.

Các phần ban đầu là

  1. Các lệnh
  2. Các cuộc gọi hệ thống
  3. Chương trình con
  4. Tập tin đặc biệt
  5. Định dạng tệp
  6. Các chương trình do người dùng duy trì
  7. Điều khoản khác

Nhiều thứ từ những năm 70, thực sự. Tôi nghĩ đó là từ những năm 80.
Rolf

"Khác" chủ yếu có nghĩa là "thông tin rộng về toàn bộ hệ thống con hoặc tính năng Unix chung thay vì điểm cuối API cụ thể." Xem ví dụ pipe(7), tcp(7)(và một số mạng trang người đàn ông khác), pthreads(7), boot(7), regex(7), vv Có những thứ khác trong phần 7 là tốt, chẳng hạn như ascii(7)(bảng mã ASCII) và man(7)(làm thế nào để viết một trang người đàn ông) nhưng các tài liệu rộng trang là của xa những điều hữu ích nhất trong phần 7 theo kinh nghiệm của tôi.
Kevin

31

konqueror cũng mô tả các phần không chuẩn: (cảm ơn @ greg0ire cho ý tưởng)

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

21

Điều đó có nghĩa là đã được mô tả, nhưng tôi cũng muốn thêm rằng mỗi phần có trang hướng dẫn đặc biệt với phần giới thiệu : intro. Ví dụ, xem man 1 introhoặc man 3 intronhư vậy.


1
Tôi không thấy điều này trên bản cài đặt Fedora của tôi. Là người đàn ông X giới thiệu không chuẩn?
beatgammit

@tjameson Bạn đã man-pagescài đặt gói chưa?
Lập trình viên php

15

Từ mantrang hướng dẫn:

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]

Về lý do tại sao chúng tách biệt như vậy - có một số chồng chéo. Một số trang nhất định tồn tại trong nhiều phần tùy thuộc vào ý của bạn.

Chẳng hạn, so sánh man crontabvới man 5 crontab- rất có thể cái sau là thứ bạn muốn tìm.


Và là gì man1pman3p?
Tyilo

Và nơi tôi nên đặt trang man của riêng tôi nằm ở ~/man?
Tyilo

Tôi biết có những con số khác nhau, nhưng tôi không biết có một vần với nó. Cảm ơn
user606723

1
1p là phiên bản chuẩn của hướng dẫn sử dụng. Nếu bạn muốn viết mã di động, bạn chỉ nên sử dụng các trang man Xp. Nếu bạn triển khai thì các trang man X và Xp không tuân thủ posix có thể khác nhau.
andcoz

@Tyilo xem câu trả lời của tôi
Babken Vardanyan

8

Đây là số phần. Chỉ cần gõ man manhoặc mở konqueror và gõ man: // man và bạn sẽ thấy những phần này là gì.


7

Thông thường, một trang man được tham chiếu thông qua việc thêm vào nó với phần được đặt trong ngoặc đơn, ví dụ:

read(2)

Phong cách này có hai ưu điểm chính:

  • ngay lập tức rõ ràng rằng bạn tham chiếu một trang người đàn ông - tức là bạn có thể viết một cái gì đó như 'cf đọc (3) 'thay vì' trang 3 phần của trang đọc '
  • nếu nhiều phần chứa các trang man có cùng tên, việc chỉ định phần đó chính xác hơn

Các trang man được tổ chức theo các phần, ví dụ Phần 1 bao gồm tất cả các trang man lệnh người dùng, Phần 2 tất cả các trang man cho các cuộc gọi hệ thống, Phần 3 dành cho các chức năng của thư viện, v.v.

Trên dòng lệnh, nếu bạn không chỉ định rõ ràng phần bạn nhận được trang man khớp đầu tiên, theo thứ tự truyền tải phần mặc định, ví dụ:

$ man read

hiển thị BASH_BUILTINS(1)trên Fedora. Ở đâu

$ man 2 read

hiển thị trang man cho read()cuộc gọi hệ thống.

Lưu ý rằng đặc tả vị trí của phần này không khả dụng - ví dụ: trên Solaris bạn sẽ chỉ định nó như thế này:

$ man -s 2 read

Thông thường, man mancũng liệt kê một số phần có sẵn. Nhưng không nhất thiết là tất cả. Để liệt kê tất cả các phần có sẵn, người ta có thể liệt kê các thư mục con của tất cả các thư mục được liệt kê trong đường dẫn man mặc định hoặc biến môi trường $MANPATH. Ví dụ: trên hệ thống Fedora 23 với một số gói phát triển được cài đặt /usr/share/mancó các thư mục con sau:

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

Các thư mục có mantiền tố đại diện cho từng phần - trong khi các thư mục khác chứa các phần được dịch. Do đó, để có được danh sách các phần không trống, người ta có thể đưa ra một lệnh như thế này:

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

(các phần kết thúc bằng pcác trang man POSIX)

Để xem trang man bằng ngôn ngữ khác (nếu có), người ta có thể đặt biến môi trường liên quan đến ngôn ngữ, ví dụ:

$ LC_MESSAGES=de_DE man read

Ngoài ra, mỗi phần nên có một trang giới thiệu có tên intro, ví dụ có thể xem qua:

$ man 2 intro

4

Các định nghĩa cho SVr4 là:

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

Đây là cách đánh số thực tế cho một UNIX "di truyền". POSIX không xác định số.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.