- man命令使用
man命令:可以通過一些參數,快速查詢linux幫助手冊,並且格式化顯示。
使用語法:
man [-adfhktwW] [section] [-M path] [-P pager] [-S list] [-m system] [-p string] title..
參數用法:
| 參數 | 備注 |
| man命令常用參數 | |
| -a | 顯示所有匹配項 |
| -d | 顯示man查照手冊文件時候,搜索路徑信息,不顯示手冊頁內容 |
| -D | 同-d,顯示手冊頁內容 |
| -f | 同命令whatis ,將在whatis數據庫查找以關鍵字開同的幫助索引信息 |
| -h | 顯示幫助信息 |
| -k | 同命令apropos 將搜索whatis數據庫,模糊查找關鍵字 |
| -S list | 指定搜索的領域及順序 如:-S 1:1p httpd 將搜索man1然后 man1p目錄 |
| -t | 使用troff 命令格式化輸出手冊頁 默認:groff輸出格式頁 |
| -w | 不帶搜索title 打印manpath變量 帶title關鍵字 打印找到手冊文件路徑,默認搜索一個文件后停止 |
| -W | 同-w |
| section | 搜索領域【限定手冊類型】默認查找所有手冊 |
| man命令其它參數 | |
| -c | 顯示使用 cat 命令的手冊信息 |
| -C | 指定man 命令搜索配置文件 默認是man.config |
| -K | 搜索一個字符串在所有手冊頁中,速度很慢 |
| -M | 指定搜索手冊的路徑 |
| -P pro | 使用程序pro顯示手冊頁面 默認是less |
| -B pro | 使用pro程序顯示HTML手冊頁 默認是less |
| -H pro | 使用pro程序讀取HTML手冊,用txt格式顯示,默認是cat |
| -p str | 指定通過groff格式化手冊之前,先通過其它程序格式化手冊 |
它帶的參數非常多,其實只有上面常用參數我們才經常使用,其它很多參數幾本不會去修改。
- man命令獲得幫助一般過程
實例代碼
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
|
[chengmo@centos5 ~]$ man -w passwd
/usr/share/man/man1/passwd.1.gz
#顯示passwd幫助文件路徑,passwd.1 通過名稱知道這個是passwd命令幫助手冊,那它的其它命令的呢?
[chengmo@centos5 ~]$ man -aw passwd
/usr/share/man/man1/passwd.1.gz
/usr/share/man/man5/passwd.5.gz
#加入-a獲得所有幫助手冊文件地址,默認只會查找一個
[chengmo@centos5 ~]$ man 5 passwd
#只得到passwd配置文件幫助信息,可以加入領域類型限制,如果知道5,默認是查詢man5 文件配置信息說明 手冊目錄
[chengmo@centos5 ~]$ man -d passwd
Reading config file /etc/man.config
.....
found man directory /usr/man
using /usr/bin/less -is as pager
using /usr/bin/less -is as browser
using /bin/cat to dump HTML pages as text
path directory /bin is in the config file
adding /usr/share/man/zh_CN to manpath
adding /usr/share/man to manpath
found 'NROFF_OLD_CHARSET' in path
old charset of '/usr/share/man/man1/passwd.1.gz' is 'ISO-8859-1'
man:
not executing command:
(cd /usr/share/man && (echo ".ll 11.8i"; echo ".nr LL 11.8i"; echo ".pl 1100i"; /usr/bin/gunzip -c '/usr/share/man/man1/passwd.1.gz'; echo ".\\\""; echo ".pl \n(nlu+10") | /usr/bin/gtbl | /usr/bin/nroff -c --legacy ISO-8859-1 -mandoc 2>/dev/null | /usr/bin/less -is)
#man -d 返回man 執行過程搜索查找方法,以及查詢手冊通過怎么樣格式化語句顯示。都會列出來
#可以看到,指定pages,borwser輸出命令對應文件,html輸出文件,搜索路徑,由於我當前LANG=zh_CN.gb2312因此,添加了zh_CN目錄搜索
#最終執行命令時候,通過一系列格式轉換命令,最終有less顯示
[chengmo@centos5 ~]$ man -S 1:2 passwd
#在領域類型是:1:2 范圍內查找手冊,對應目錄分別是man1 ,man2
[chengmo@centos5 ~]$ man -f httpd
httpd (8) - Apache Hypertext Transfer Protocol Server
httpd (rpm) - Apache HTTP Server
httpd-devel (rpm) - Development tools for the Apache HTTP server.
#在whatis數據庫(有所有網站man幫助以及cat,doc幫助信息索引)中查詢,文件標題以:http開頭信息的文檔
#中間的(8) 對應我們可以用:man 8 httpd 調用,對於顯示(rpm)實際上顯示有個httpd幫助信息,是屬於一個httpd rpm安裝包,通過man rpm httpd查看不了。可以通過rpm -ql httpd 查找安裝包
[chengmo@centos5 ~]$ man -k httpd
CGI::Carp (3pm) - CGI routines for writing to the HTTPD (or other) error log
httpd (8) - Apache Hypertext Transfer Protocol Server
httpd (rpm) - Apache HTTP Server
httpd-devel (rpm) - Development tools for the Apache HTTP server.
httpd_selinux (8) - Security Enhanced Linux Policy for the httpd daemon
lighttpd (1) - a fast, secure and flexible webserver
lighttpd (rpm) - Lightning fast webserver with light system requirements
lighttpd-fastcgi (rpm) - FastCGI module and spawning helper for lighttpd and PHP configuration
ncsa_auth (8) - NCSA httpd-style password file authentication helper for Squid
#在whatis數據庫中,查詢包含httpd所有幫助手冊,以及安裝包. 可以通過:rpm -ql lighttpd
[chengmo@centos5 ~]$ rpm -ql lighttpd | grep gz
/usr/share/man/man1/lighttpd.1.gz
#其實這個包剛好是:lighttpd (1) - a fast, secure and flexible webserver 幫助手冊
[chengmo@centos5 ~]$ man -w
/usr/kerberos/man:/usr/local/share/man:/usr/share/man/zh_CN:/usr/share/man:/usr/local/man
#顯示man 命令查找手冊的路徑
|
對於:whatis數據庫,以及中文化linux幫助文件這里先不分析。
一般遇到一個不是很熟悉命令可以先通過:
man -k command1 查詢所有類似幫助文件信息,這樣輸出最多也可以用:
man -f command1 查詢以command1開頭所有相關幫助信息列表 如果發現有類似:command1 (5)
man 5 command1 通過直接定位5獲得幫助信息
- man命令搜索配置文件(man.config配置方法)
man這個命令為什么功能這么神奇,能夠這么方便快捷索引出系統幫助信息,其它與它的一個配置文件分不開。我們看一下它配置文件。
|
1
2
3
4
5
6
7
|
[chengmo@centos5 ~]$ man -f man
man (1) - format and display the on-line manual pages
man (1p) - display system documentation
man (7) - macros to format man pages
man (rpm) - A set of documentation tools: man, apropos and whatis.
man-pages (rpm) - Man (manual) pages from the Linux Documentation Project.
man.config [man] (5) - configuration data for man
|
通過該命令,我們索引到所有與man有關的手冊頁了。 根據前面提到的領域設置類型,(1)是man命令說明,(7)man文件使用的宏格式規定,下面有一個:man.config (5) ,就是man的配置文件了。
讀取man.config文件:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
[wangsl@centos5 ~]$ cat /etc/man.config | grep -v '^#'
FHS
MANPATH /usr/man
MANPATH /usr/share/man
MANPATH /usr/local/man
MANPATH /usr/local/share/man
MANPATH /usr/X11R6/man
MANPATH_MAP /bin /usr/share/man
MANPATH_MAP /sbin /usr/share/man
MANPATH_MAP /usr/bin /usr/share/man
MANPATH_MAP /usr/sbin /usr/share/man
MANPATH_MAP /usr/local/bin /usr/local/share/man
MANPATH_MAP /usr/local/sbin /usr/local/share/man
MANPATH_MAP /usr/X11R6/bin /usr/X11R6/man
MANPATH_MAP /usr/bin/X11 /usr/X11R6/man
MANPATH_MAP /usr/bin/mh /usr/share/man
TROFF /usr/bin/groff -Tps -mandoc
NROFF /usr/bin/nroff -c --legacy NROFF_OLD_CHARSET -mandoc 2>/dev/null
EQN /usr/bin/geqn -Tps
NEQN /usr/bin/geqn -Tutf8
TBL /usr/bin/gtbl
REFER /usr/bin/grefer
PIC /usr/bin/gpic
VGRIND
GRAP
PAGER /usr/bin/less -is
BROWSER /usr/bin/less -is
HTMLPAGER /bin/cat
CAT /bin/cat
CMP /usr/bin/cmp -s
COMPRESS /usr/bin/bzip2
COMPRESS_EXT .bz2
MANSECT 1:1p:8:2:3:3p:4:5:6:7:9:0p:n:l:p:o:1x:2x:3x:4x:5x:6x:7x:8x
.gz /usr/bin/gunzip -c
.bz2 /usr/bin/bzip2 -c -d
.z
.Z /bin/zcat
.F
.Y
|
配置文件分類:
MANPATH 關鍵字
指定手冊默認存放路徑,man啟動就會在這些目錄中索引手冊頁,可以通過添加一行:MANPATH /home/chengmo/man 指定加入自己的手冊路徑,通過man -M可以添加自己的手冊路徑
MANPATH_MAP關鍵字
指定幫助手冊與命令對應目錄,如果自己增加搜索目錄,這里需要增加對應方式
格式化手冊頁輸出
linux系統手冊頁,大家在看到時候有高亮,然后還有加粗,下划線,傾斜,空行等固定格式。其實這些在本來的手冊頁文件里面,只是保存為一系列的代號。大家不妨解壓個gz手冊文件,然后通過cat查看下內容。你會發現顯示里面有如下內容中(點開頭,然后一系列數字,而且整個頁面顯示雜亂無章,跟我們man看到完全不一樣),其它這些代號對應是linux文件里面的宏指令代碼,如:
.B 粗體
.BI 粗體跟斜體
.BR 粗體跟正體
.I 斜體
.IB 斜體跟粗體
.IR 斜體跟正體
.RB 正體跟粗體
.RI 正體跟斜體
.SM 小(縮放到正常大小的9/10)
.SB 小跟黑體(所跟的黑體不會縮小)
如果不清楚這個關系,把這些宏指令比擬為:html語言一些標簽,在記事本中打開,大家都看不明白,但是如果用ie查看。就一目了然了。
這些宏指令在顯示時候,必須通過一系列命令做格式轉換,這里必須提到是:groff系列命令(它的工作有點像IE):
groff簡介:
Groff (GNU Troff) 是 Troff 的最新開放源碼實現,Troff 是從相同的輸入源為各種設備生成打印和屏幕文檔的一種文檔格式化輸出系統。
Groff 是一種用於格式化輸出文檔的編程語言。它由一套工具組成,而不是單個的應用程序,groff 工具是使用這些工具的前端。其中包括處理特殊的輸入文本的預處理器、用於處理輸入的稱為 troff 的主排版引擎、以及將 troff 的輸出轉換為打印和屏幕輸出的各種格式的后處理器。
您可以在文本編輯器中編寫輸入或者從程序生成輸入,無論采用哪種方式,文檔的編寫過程都發生在 Groff 系統之外。文檔使用純文本進行編寫並使用 Groff 語言進行標記,后者指定了文檔的格式和外觀(請參見為 Groff 編寫輸入部分)。然后將該輸入文本發送到 Groff,以便對其進行處理從而獲得所需的輸出。
Groff包含幾個處理文本格式的程序。Groff把標准的文本和特殊的命令翻譯成格式化的輸出,像你在 man 手冊頁里看到的那樣。
安裝下列程序: addftinfo, afmtodit, eqn, eqn2graph, geqn (link to eqn), grn, grodvi, groff, groffer, grog, grolbp, grolj4, grops, grotty, gtbl (link to tbl), hpftodit, indxbib, lkbib, lookbib, mmroff, neqn, nroff, pfbtops, pic, pic2graph, post-grohtml, pre-grohtml, refer, soelim, tbl, tfmtodit, troff and zsoelim (link to soelim)
這里只是解析man.config常見的解析命令:
gpic 將內嵌於troff或者TeX輸入文件中的圖像編譯成troff或者TeX理解的指令。
gtbl 實現table表格輸出。
neqn 將方程格式化,使其成為適應ASCII輸出的腳本,如果文檔要表示一些數字開方,根號之類需要它了
refer 將一個文件拷貝到標准輸出,並丟棄.[和.]之間作為引用的內容和在.R1和.R2之間解釋如何處理這些引用的命令。
troff groff依照合適的順序並使用合適的參數來執行預處理程序和后處理程序。
PAGER、BROWER、HTMLPAGER
分別制定最終標准手冊頁,HTML手冊頁,HTML as TXT手冊頁 由那個程序顯示。其實基本都是交給了:less這個作為手冊頁顯示程序。當我們打開了手冊頁后,對它進行翻頁查找等操作,其實就是運用less 程序快捷鍵完成的。如果命令行man –[PBH] 可以對當前索引,分別用新的程序覆蓋系統設置。
COMPRESS,COMPRESS_EXT
設置壓縮文件,已經壓縮文件生成擴展名,如果需要將手冊輸出其它格式時候會用到
MANSECT
指定man 搜索手冊目錄順序,假設設置是:
mansect 1:1p:8:2:3:3p:4:5:6:7:9:0p:n:l:p:o:1x:2x:3x:4x:5x:6x:7x:8x
如果直接man command1 ,它將按照這里指定的順序查找手冊頁,先是man1,然后man1p…… 直到找到一個頁面,就停止搜索。除非加了-a 參數。如果調用man -S 1:1p 是可以覆蓋這項設置的
.gz .bz2
這個是如果手冊頁面是這里程序的,用什么程序進行解壓。
我們還記得上次man -d 的參數吧!運行最后會輸入一個腳本:
(cd /usr/share/man && (echo “.ll 11.8i”; echo “.nr LL 11.8i”; echo “.pl 1100i”; /usr/bin/gunzip -c ‘/usr/share/man/man1/man.1.gz’; echo “.\\\””; echo “.pl \n(nlu+10”) | /usr/bin/gtbl | /usr/bin/nroff -c –legacy ISO-8859-1 -mandoc 2>/dev/null | /usr/bin/less -is)
其實這個才是man命令執行后 ,通過各個格式化指令組合,最終shell腳本運行的命令。
突然想到一個問題,man之所以強大,與它的松散配置分不開,它只是實現了搜索查找,而解壓由:gunzip,格式化是由:groff處理,顯示有less處理。
說到這里,man好像都說完了,對了,顯示的頁面怎么操作呢?接下來,我們在看看,less常用命令
- man顯示頁面操作(less命令使用)
我們找到了自己的幫助文件了,而且已經顯示了頁面。在這個黑屏頁面里面,我怎么樣實現查找,跳轉等操作呢?
其實,它現在已經進入了less命令管理范圍了(可能有朋友認為是vi的,因為它們快捷鍵很相似,其實是less的)

下面說下less命令操作:
光標移動操作:
e ^E j ^N CR * 前進一行(或N行)
y ^Y k ^K ^P * 后退一行(或N行)
f ^F ^V SPACE * 前進一個窗口(或N行)
b ^B ESC-v * 后退一個窗口(或N行)
z * 前進一個窗口(將窗口設置到N)
w * 后退一個窗口(將窗口設置到N)
ESC-SPACE * 前進一個窗口,在文件末尾不停止
d ^D * 前進半個窗口(將這半個窗口設置到N)
u ^U * 后退半個窗口(將這半個窗口設置到N)
ESC-) RightArrow * 向左半個屏幕寬(或N個位置)
ESC-( LeftArrow * 向右半個屏幕寬(或N個位置)
F 一直前進,像”tail -f”一樣
移動操作基本與vi一樣的。
查找操作:
/pattern * 向前查找包含pattern的行.
?pattern * 向后查找包含pattern的行.
n * 查找下一個pattern行.
N * 查找上一個pattern行.
ESC-n * 同n.
ESC-N * 同N
ESC-u 取消所有搜索的高亮顯示
調動操作:
g < ESC-< * 跳轉到文件第一行
G > ESC-> * 跳轉到文件最后一行
p % * 跳轉到文件最開始
其它操作:
:n * 打開跳轉到下一個文件
:p * 打開跳轉到上一個文件
:x * 跳轉到第一個打開的文件
h H 顯示幫助
q :q Q :Q ZZ 退出當前打開文件
less可以打開多個文件,在多個文件操作中,可以使用這些命令。如man -a passwd 實際會查到多個手冊,都會有less打開。可以通過這類命令實現打開與關閉。
