man 搜尋部分的預定義順序是什麼?
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()。
請注意,一些“命令”——比如
cd
和fg
——實際上是所謂的 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 用於不適合其他地方的各種手冊頁。