教你如何比谷歌搜尋更快速有效地利用 man

發表於2017-07-26

Linux 的幫助手冊其實擁有很多有用的資訊,而且比你想象中更容易使用

我們通常通過 google 來查詢 Linux 中的命令說明,但是其實還有一個更好的辦法:那就是通過 Linux 自帶的 man 幫助頁來查詢命令詳盡完整的使用說明。

man 頁面的歷史本身比 Linux 還長,可以追溯到 Unix 早期那個年代。 通過這個 Wikipedia 可以知道,Dennis Ritchie 和 Ken Thompson 在 1971 年寫了第一個 man 幫助頁,那個年代的計算器使用的還是像烤箱一樣的計算機,個人電腦還未出世。man 幫助頁也有它自己的一套設計精煉的語法,和 Unix 與 Linux 一樣,man 幫助頁也不是一成不變的,它就像 Linux 核心一樣不停地發展更新。

Man 幫助頁通過數字識別符號來分成不同型別的內容:

  1. 一般使用者命令
  2. 系統呼叫命令
  3. 庫函式
  4. 特殊的檔案和驅動程式
  5. 檔案格式
  6. 遊戲和屏保
  7. 雜項
  8. 系統管理命令和守護程式

儘管如此,使用者一般也不需要知道他們想查詢的命令是屬於哪一個型別的。

這些檔案格式化的方式在當今許多使用者看來有點古怪。因為最開始他們是用 trooff 的方式,通過 PostScript 印表機來列印,所以包含了頭部和佈局方面的格式化資訊。在 Linux 中,取而代之使用了一種叫做 groff 的方法。

在我的 Fedora 系統中,man 幫助頁相關的檔案儲存在 /usr/share/man 下的子目錄中(比如 man1 儲存第一部分的命令),還有進一步的子目錄用於儲存 man 幫助頁的翻譯。

如果你在 Shell 中查詢 man 命令的 man 幫助頁,你時間看到將是 gzip 工具壓縮的 man.1.gz 檔案。想要查詢 man 幫助頁,需要輸入類似如下命令:

這個例子會顯示 man 命令的 man 幫助頁,這將先解壓 man 幫助頁檔案,然後解釋格式化指令並用 less 顯示結果,所以導航操作和在 less 中一樣。

所有的 man 幫助頁都應該顯示這些子段落:Name、 Synopsis、 DescriptionExamplesSeeAlso。有些還會新增一些額外的子段落,比如 Options、 ExitStatus、 EnvironmentBugsFilesAuthorReportingBugsHistoryCopyright

詳細說明一個 man 幫助頁

為了更詳細地介紹一個典型的 man 幫助頁,就用 ls 命令的幫助頁來分析吧,在 Name 分段下,我們可以看到如下內容:

它會簡要地告訴我 ls 這條命令的作用.

Synopsis 分段下,我們可以看到如下的內容:

任何在中括號中的元素都是可選的。你可以只輸入 ls 命令,後面不接任何引數。引數後面的省略號表示你可以新增任意多個彼此相容的引數,以及許多檔名。對於 [FILE] 引數,你可以指定具體的目錄名,或者可以使用萬用字元 *,比如這個例子,它會顯示 Documents 資料夾下的 .txt 檔案:

在 Description 分段下, 我們可以看到關於這條命令更加詳細的資訊,還有關於這條命令各個引數作用的詳細介紹的列表,比如說 ls 命令第一個選項 -a 引數,它的作用是顯示包括隱藏檔案/目錄在內的所有檔案:

如果我們想用這些引數,要麼用它們的別名,比如 -a,要麼用它們的全名,比如 --all(兩條中劃線)。然而並不是所有引數都有全名和別名(比如 --author 只有一種),而且兩者的名字並不總是相互關聯的(-F--classify)。當你想用多個引數時,要麼以空格隔開,要麼共用一個連字元 -,在連字元後連續輸入你需要的引數(不要新增空格)。比如下面兩個等價的例子:

但是 tar 這個命令有些例外,由於一些歷史遺留原因,當引數使用別名時可以不用新增連字元 -,因此以下兩種命令都是合法的:

lsDescription 分段後是 AuthorReporting BugsCopyrightSee Also 等分段。

See Also 分段會提供一些相關的 man 幫助頁,沒事的話可以看看。畢竟除了命令外還有許多其他型別的 man 幫助頁。

有一些命令不是系統命令,而是 Bash 特有的,比如 aliascd。這些 Bash 特有的命令可以在 BASH_BUILTINS man 幫助頁中檢視,和上面的比起來它們的描述更加精煉,不過內容都是類似的。

其實通過 man 幫助頁讓你可以獲得大量有用的資訊,特別是當你想用一個已經很久沒用過的命令,需要複習下這條命令的作用時。這個時候 man 幫助頁飽受非議的簡潔性反而對你來說是更好的。


作者簡介:

Greg Pittman – Greg 是住在肯塔基州路易斯維爾的一位退休神經學家,但是卻對計算機和程式設計保持著長久的興趣,從二十世紀六十年代就開始搗騰 Fortran IV 了。隨著 Linux 和開源軟體的到來,更加激起了他去學習的興趣並投身於這項事業中,併成為 Scribus 組織的一員。


相關文章