這裡整理一些關於 Linux 線上手冊(man page)的使用範例,教您如何善用這些說明文件。
在 UNIX/Linux 的系統中有非常多的指令,通常使用者(甚至是資深的系統管理者)都無法記住每個指令的詳細使用方式,尤其是那些有非常多參數可以用的指令,就算是天天在用的 ls
,您可能也不是很清楚它所有的參數如何使用。
所幸一般 UNIX/Linux 系統中的指令都會附帶相關的線上說明手冊(man page),提供使用者查詢與參考。
基本查詢
一般稍微有經驗的 Linux 使用者大概都知道使用 man
指令加上要查詢的說明主題來閱讀線上手冊,通常主題的名稱就是指令或是函數的名稱,例如查詢 ls
的用法:
man ls
這樣就可以查閱 ls
的使用方式:
指定章節(Section)
Linux 的線上手冊分為幾個主要的章節(sections),每個章節對應不同的類別:
- 1:可執行的程式或是 shell 指令。
- 2:系統呼叫(system calls,Linux 核心所提供的函數)。
- 3:一般函式庫函數。
- 4:特殊檔案(通常位於
/dev
)。 - 5:檔案格式與協定,如
/etc/passwd
- 6:遊戲。
- 7:雜項(巨集等,如
man(7)
、groff(7)
)。 - 8:系統管理者指令(通常是管理者
root
專用的)。 - 9:Kernel routines(非標準)。
而在線上手冊中的文件都會以小括弧來標明該文件所屬的章節,例如 LS(1)
就代表這份文件隸屬於第 1
個章節。
有些時候一個主題名稱在不同章節中有不同的說明文件,如果查詢一個主題的時候沒有指定章節,預設會依照 1 n l 8 3 2 3posix 3pm 3perl 5 4 9 6 7
這個順序來搜尋,然後顯示第一個搜尋到的章節。
例如 passwd
這個主題有 passwd(1)
與 passwd(5)
兩個章節,如果不指定章節的話:
man passwd
就會顯示 passwd(1)
,而若要查詢 passwd(5)
的話,就要明確指定章節數:
man 5 passwd
列出所有章節
有時候我們對於某個主題有興趣,但是卻不知道該主題有哪些章節可以查詢,這時候就可以使用 -aw
參數查詢:
man -aw printf
輸出為
/usr/share/man/man1/printf.1.gz
/usr/share/man/man3/printf.3.gz
這樣我們就可以知道 printf
這個主題有兩份說明文件,一份在第 1 個章節,另一份在第 3 個章節,所以我們可以用下面兩個指令來查詢:
man printf man 3 printf
一次查閱所有章節
如果要一次查閱一個主題的所有章節,可以使用 -a
參數,這樣 man
會依序顯示所有的章節:
man -a printf
當您看完一個章節並按下 q
離開之後,它就會顯示
--Man-- next: printf(3) [ view (return) | skip (Ctrl-D) | quit (Ctrl-C) ]
接著按下 Enter
鍵即可繼續閱讀下一個章節。
搜尋線上手冊
若想要在所有的線上手冊中以關鍵字搜尋,可以使用 -k
參數,並指定要搜尋的字眼:
man -k printf
輸出會類似這樣
asprintf (3) -- print to allocated string
dprintf (3) -- print to a file descriptor
fprintf (3) -- formatted output conversion
fwprintf (3) -- formatted wide-character output conversion
printf (1) -- format and print data
[略]
man
在搜尋時其實是以正規表達式(regular expression)來比對的,所以您可以使用任何正規表達式來做更複雜的搜尋,例如搜尋 s
開頭,並且包含 printf
字眼的文件:
man -k "^s.*printf"
輸出為
snprintf (3) -- formatted output conversion
sprintf (3) -- formatted output conversion
swprintf (3) -- formatted wide-character output conversion
另外也可以使用 apropos
指令來搜尋:
apropos "^s.*printf"
使用瀏覽器顯示線上手冊
如果您喜歡瀏覽器來查看說明文件,可以使用 -H
參數,並指定要使用的瀏覽器:
man -Hfirefox printf
畫面會像這樣
如果您在使用 -H
這個參數時,出現這樣的錯誤:
man: command exited with status 3: /usr/lib/man-db/zsoelim | /usr/lib/man-db/manconv -f UTF-8:ISO-8859-1 -t UTF-8//IGNORE | preconv -e UTF-8 | tbl | groff -mandoc -Thtml
就表示系統可能沒裝 groff
,請先用 apt 安裝:
sudo apt-get install groff
指定分頁程式(Pager)
顯示文件用的分頁程式,可以使用 -P
參數指定:
man -P more printf
將線上手冊儲存為文字檔、網頁或 PDF
有時候我們會想要將線上手冊儲存成一般的檔案,方便用其他的方式來查閱,若要儲存成一般的文字檔可以使用:
man printf | col -b > printf.txt
將線上手冊儲存為 HTML 網頁檔:
zcat `man -w printf` | groff -mandoc -T html > printf.html
將線上手冊儲存為 PDF 檔:
man -t printf | ps2pdf - > printf.pdf
指定語系
現在很多線上手冊都有中文翻譯,如果您的 Linux 系統設定為中文語系,可能就有機會看到中文的說明文件:
如果想要看原文的話(尤其是翻譯翻的不好的時候),可以用 -L
指定語系:
man -L en 5 passwd
彩色的線上文件
將文件的關鍵字加上色彩可以讓人閱讀起來更舒服,在 ~/.bashrc
中加入以下的色彩設定:
# Less Colors for Man Pages export LESS_TERMCAP_mb=$'E[01;31m' # begin blinking export LESS_TERMCAP_md=$'E[01;38;5;74m' # begin bold export LESS_TERMCAP_me=$'E[0m' # end mode export LESS_TERMCAP_se=$'E[0m' # end standout-mode export LESS_TERMCAP_so=$'E[38;5;246m' # begin standout-mode - info box export LESS_TERMCAP_ue=$'E[0m' # end underline export LESS_TERMCAP_us=$'E[04;38;5;146m' # begin underline
這樣就可以讓線上文件變成彩色的:
這裡的顏色都是使用 ANSI escape code 來指定的,所以您也可以自己修改這裡的色碼,自己調整顏色。
另外一個顯示彩色文件的方法是改用 most
這個分頁程式:
sudo apt-get install most export PAGER="most" man printf
畫面會像這樣
1 則自動引用通知