Linux系統編程1核心概念1.3使用手冊頁
1.3 使用手冊頁
為了充分利用手冊頁,您需要學習如何使用顯示頁面的分頁器,并閱讀 man 命令本身的手冊頁,這樣您才能理解手冊頁的結構以及 man 命令的選項。
1.3.1 分頁器
分頁器是一個一次顯示一屏輸入的程序。手冊頁以壓縮格式存儲在目錄層次結構中。man 命令會解壓縮并格式化它們,然后使用其分頁器顯示它們。默認分頁器實際上名為 pager,但它通常是指向 less 命令的符號鏈接。因此,當您查看頁面時,您很可能使用的是 less 命令。屏幕底部的 : 后面跟著您的光標,因為 : 是 less 命令提示您在鍵盤上輸入內容的提示。您可以通過更改 PAGER 環境變量的值來更改 man 使用的分頁器。以下列表介紹了使用默認分頁器時的一些基本導航控件:
- 要查看下一屏,請按空格鍵或輸入 f(前進)。
- 要后退一屏,請輸入 b(后退)。
- 要停止閱讀,請輸入 q(退出)。
- 要跳至第 N 行,請輸入 NG。如果直接輸入 G,則會跳至頁面底部。
- 要正向搜索關鍵字,請輸入 /keyword。輸入 n 向下查找下一個匹配項,或輸入 N 向上搜索。
- 要反向搜索關鍵字,請輸入 ?
。輸入 n 向上查找下一個匹配項,或輸入 N 向下搜索。
要查看所有可能的導航運算符列表,請閱讀分頁器的手冊頁。這兩個搜索運算符都接受帶有通配符的模式,您可以在 pager 命令的手冊頁中了解相關信息。
1.3.2 手冊頁的結構
輸入 man 后跟任何包含手冊頁的命令或主題的名稱,即可顯示該手冊頁。我們之前看到,man 命令本身也有一個手冊頁。我們即將學習該手冊頁,但在此之前,我們先來看看其他幾個更簡單的手冊頁。
由于我們已經在簡介中了解過 echo 命令,所以就先從 echo 開始吧。如果您想了解更多關于如何使用 echo 的信息,可以輸入man echo,然后會看到幾個屏幕輸出,開頭是:

頁面頂部通常包含您需要了解的所有內容,例如可用的選項以及命令是否有多種形式。有時,man 顯示的手冊頁名稱與您作為參數輸入的命令名稱不同。例如,輸入 man view 會產生以下輸出:

這是 vim 的頁面,但 view 命令也列在該頁面上。有時,單個手冊頁會提供相關命令的信息。
另請注意,此頁面的標題不是“用戶命令”,而是“通用命令手冊”。編寫手冊頁的人遵循標準,但該標準允許一些變化,例如頁面標題的變化。
手冊頁的章節在某種程度上是標準化的。少數章節是必需的,但大多數章節是可選的。以下列表顯示了一些常用章節名稱及其內容:

首次閱讀手冊頁時,最重要的部分是“名稱”、“概要”、“描述”和“另請參閱”,如果您正在閱讀有關命令的內容,也請檢查“選項”部分。“概要”部分包含該命令或函數接口的簡要概述。如果有
示例部分,我通常會在閱讀完“概要”后立即查看它,而“概要”通常是我閱讀該頁面的第一站。示例通常包含可復制運行的程序或可供試用的命令。
命令的概要部分展示了命令的語法,包括所有參數和選項。方括號 ([ ]) 括起可選元素,豎線 (|)(有時稱為交替運算符)分隔元素之間的選項,尖括號 (< >) 括起占位符,省略號 (...) 表示可重復的元素。當多個選項字母括在方括號中時,例如 [-aHvW],表示所有選項字母可以一起給出。如果寫成 [-a | -H | -v | -W],則只允許其中一個選項。舉例來說,git 命令是一個版本控制程序,其復雜概要如下:

從這個概要中,我們可以得出幾條規則:
- 占位符
? 是命令之后唯一必需的元素命令名稱。 - [-c
= ] 元素是 git 的一個選項,但如果 -c 存在,則其后必須跟有名稱-值賦值語句。 - 豎線 | 用于指示最多只能使用 -p、
- --paginate、-P 或 --no-pager 中的一個。
- --super-prefix 是一個包含必需參數的長選項。
對于函數,“概要”會顯示所有必需的數據聲明或 #include 指令,后跟函數聲明。如果有功能測試宏的要求(我們將在第 67 頁的“功能測試宏”中介紹),也會對此進行描述。閱讀函數相關內容時,務必閱讀“錯誤”和“返回值”部分;它們會告訴您該函數可能報告哪些錯誤、可能返回哪些值以及您需要如何處理這些錯誤。
要學習如何使用命令和函數,通常手冊頁本身就足夠了。要了解命令如何與操作系統交互,或者如何實現,我們需要做更多的研究。在第 3 章中,我們將通過一個練習更詳細地展示如何使用手冊頁。
參考資料
- 軟件測試精品書籍文檔下載持續更新 https://github.com/china-testing/python-testing-examples 請點贊,謝謝!
- 本文涉及的python測試開發庫 謝謝點贊! https://github.com/china-testing/python_cn_resouce
- python精品書籍下載 https://github.com/china-testing/python_cn_resouce/blob/main/python_good_books.md
- Linux精品書籍下載 http://www.rzrgm.cn/testing-/p/17438558.html
- python八字排盤 https://github.com/china-testing/bazi
- 聯系方式:釘ding或V信: pythontesting
1.3.3 搜索手冊頁
man 命令有許多用于執行搜索的選項。讓我們看一下 man 手冊頁的開頭:

您可能無法看到此處顯示的所有選項。POSIX.1-2024 標準 (https://pubs.opengroup.org/onlinepubs/9699919799/utilities/man.html)
僅需要 -k 選項,但大多數實現都提供了更多選項。
本例中顯示的輸出來自 Linux man-pages 項目 (https://www.kernel.org/doc/man-pages/) 最新版本的手冊頁,該項目獨立于POSIX.1-2024 標準提供并標準化了手冊頁。許多 Linux 發行版,包括 Debian、Fedora、Gentoo、openSUSE 和 Ubuntu,以及 macOS 和一些專有 Unix 系統,都遵循后者的標準。 (請參閱 https://man-db.gitlab.io/man-db/ ,了解可安裝在其他系統上的一組備用手冊頁。)
對我們來說,最重要的選項是 -k 和 -K,它們允許我們在手冊頁中搜索 k關鍵詞。如果您進一步閱讀手冊頁,
您會看到以下示例:

在頁面下方,您會看到此命令和 -K 選項功能的描述:

-k 選項允許我們搜索所有手冊頁,以查找與我們輸入的單詞匹配的簡短描述。簡短描述是指“名稱”部分及其一行描述。-K 選項會搜索整個手冊頁,
而不僅僅是簡短描述。這種方法很慢,但有時可能會有用。該手冊頁還建議我們閱讀 apropos 命令。
如果我們查看它的手冊頁,就會找到我們需要的內容:

我們可以使用 apropos 進行搜索。如果使用 -r 選項,我們可以提供一個正則表達式,這是一種特殊類型的模式;或者,我們可以使用 -w 選項,并使用另一種稱為通配符的模式,通配符是用于匹配文件名的模式。如果使用 -e 選項,它將與關鍵字完全匹配。
如果我們繼續閱讀本頁,就會發現默認情況下,匹配不區分大小寫。此外,默認情況下,apropos 會搜索手冊的所有章節(卷),但我們可以使用 -s 選項將搜索范圍限制在特定章節。 -a 選項強制匹配僅返回匹配所有搜索詞的頁面,而不是匹配任何搜索詞。以下示例將對此進行說明:
$ apropos case
$ apropos Case
這兩個命令都會匹配任何包含單詞 case 的行,不區分大小寫。
匹配可以包含包含大小寫子字符串的單詞的行,例如 lowercase、case-insensitive 等,并且搜索將檢查所有部分。以下兩個示例可以說明這一點:
$ apropos -s2,3 file
$ apropos -e file
第一個命令將搜索范圍限制在第 2 和第 3 部分,并匹配包含任何包含 file 的單詞的描述,例如 filename、FileProducer 等。第二個命令僅匹配包含確切單詞 file 的行,因此它排除 filename、FileProducer 等。
apropos 命令在您的系統上的實現可能與我在此處描述的不同。這些選項的用法可能略有不同。例如,在 Ubuntu Linux 中,-s3 選項會搜索第 3、3posix、3perl 等章節。在您的系統上,您可能需要明確指定所有章節。您應該根據系統的 apropos 手冊頁的說明來使用它。
請考慮以下示例:
$ apropos -a convert case
此命令匹配所有簡短描述中包含 convert 和 case 這兩個單詞的頁面,這兩個單詞不必相鄰,例如 convert lowercase。
以下命令僅匹配包含以 case 開頭的單詞或 case 包含帶連字符的單詞(例如 case-sensitive)的行:

總而言之,apropos 是一款非常實用的幫助搜索工具。本書的其余部分將廣泛使用它,以便我們進行背景研究來實現各種系統程序。
浙公網安備 33010602011771號