Man

man 搜尋部分的預定義順序是什麼?

  • November 21, 2018

man在其自己的手冊頁中的描述包含聲明,

預設操作是按照預定義的順序搜尋所有可用的部分(預設為“1 nl 8 3 0 2 5 4 9 6 7”,除非被 /usr/local/etc/man_db 中的 SECTION 指令覆蓋.conf),並且只顯示找到的第一頁,即使頁面存在於多個部分中。

*“1 nl 8 3 0 2 5 4 9 6 7”*到底是什麼意思?

它是 -page 的“部分” man- 名稱後面括號中的數字,例如ls(1)

您可以將手冊頁視為一組實際的手冊,分為幾卷。例如,第一個“卷”是第 1 節,其中包含普通使用者命令——如 ls(1)、bash(1) 和 man(1)。第 8 節包含系統管理員的命令——例如關閉系統和安裝軟體包的命令。(通常是非 root 使用者無法使用的命令。)第 5 節包含文件格式——比如 /etc/passwd 和 /etc/sudo 應該如何格式化。第 3 節包含各種語言的庫函式(主要是 C 語言)——比如 C 函式 printf()。

請注意,一些“命令”——比如cdfg——實際上是所謂的 shell 內置,並且沒有自己的手冊頁。相反,它們記錄在特定外殼的手冊頁中 - 例如。在 bash(1) 的手冊頁中。Shell 也可以作為內置命令提供某些命令的替代方案,並且通常會使用這些命令而不是外部命令。一個例子是 bash(1) 如何獲得一個內置版本的 kill(1)。

從手冊頁(7)的手冊頁:

  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 conventions), e.g.
      man(7), groff(7)
  8   System administration commands (usually only for root)
  9   Kernel routines [Non standard]

有時在數字中添加字母或單詞以表示手冊頁屬於子系統或包,例如,“x”表示 X GUI 命令,如 startx(1x),或“tcl”表示屬於的命令和函式Tcl 語言。甚至它們是“可選”/“附加”或“替代”命令 - 例如,如果您有兩個版本tar,一個來自 GNU,一個來自 BSD。

要獲取特定部分,您可以將 section-number 添加到您的 man 命令中:

man passwd從第 1 節返回 passwd-command(因為首先搜尋第 1 節,然後搜尋停止)

man 1 passwd返回相同(但現在因為我們指定了第 1 節)

man 5 passwd從第 5 節返回 /etc/passwd 的文件格式(因為我們指定了第 5 節而不是第 1 節)

為了區分這兩者,您可以將它們稱為 passwd(1) 和 passwd(5)(例如,如果您編寫了教科書或手冊頁)。

所以搜尋順序是有意義的——命令比文件格式更常見,更不用說程式庫和系統呼叫了。

最後,您應該注意,不同的 Unix 系統可能使用略有不同的分節,例如,我看到第 7 節用於文字處理命令,第 9 節用於遊戲,我看到第 9 節用作擷取-all 用於不適合其他地方的各種手冊頁。

引用自:https://unix.stackexchange.com/questions/482940