在剛剛接觸到Linux的時候,我們通常需要使用man 來查閱一些命令的幫助信息。一般使用“man 命令名稱”的格式就能進行簡單的查詢。下面關於man 的是用技巧介紹一下。
一、man 命令
使用權限
所有用戶< /pre>
語法格式
man [[ [-c ] [-t ] [Section] ] | [-k | -f ] ] [-F] [-m] [ -MPath ] [ -r ] [ -a ]Title < /pre>
二、主要參數
1、-c
顯示使用 cat 命令的手冊信息。
2、-t
使用 troff 命令格式化手冊信息。如果在超文本信息基中查找到手冊頁面,則忽略該標誌。
3、-k
顯示關鍵字數據庫中包含與作爲最終參數給定的字符匹配的標題的字符串的每一行。 可以輸入多個標題,中間用空格隔開。 要使用 -k 標誌,root 用戶必須以前已輸入 catman -w 以建立 /usr/share/man/whatis 文件。
4、-f
顯示在關鍵字數據庫中僅與作爲最終參數給定的命令名相關的項。可以輸入多個命令名,中間用空格隔開。 使用該標誌僅搜索命令物件。 要使用 -f 標誌,root 用戶必須以前已輸入 catman -w 以建立 /usr/share/man/whatis 文件。
5、-F
只顯示首個匹配項。
6、-m
只在 MANPATH 或 -M 中指定的路徑中搜索。
7、-MPath
更改 man 命令搜索手冊信息的標準位置。路徑是用冒號隔開的路徑的列表,其中,可以使用以下特殊符號: %D - 聯機幫助頁的缺省 AIX? 路徑。 %L-與當前語言環境的 LC_MESSAGES 類別相對應的特定於語言環境的目錄位置。 %L-與當前 LC_MESSAGES 類別的首 2 個字符相對應的特定於語言環境的目錄位置。
8、-r
手冊信息的遠程搜索。如果出於某個原因,遠程搜索失敗,則 man 將執行本地搜索以獲取請求的聯機幫助頁。
9、-a
顯示所有匹配項。
三、命令的使用
1、 man手冊章節
man 命令是按照章節存儲的,linux的man手冊共有以下幾個章節:
章節編號 |
章節名稱 |
章節主要內容 |
1 |
General Commands |
用戶在shell中可以操作的指令或者可執行文檔 |
2 |
System Calls |
系統調用的函數與工具等 |
3 |
Sunroutines |
C語言庫函數 |
4 |
Special Files |
設備或者特殊文件 |
5 |
File Formats |
文件格式與規則 |
6 |
Games |
遊戲及其他 |
7 |
Macros and Conventions |
表示宏、包及其他雜項 |
8 |
Maintenence Commands |
表示系統管理員相關的命令 |
9 |
|
|
我們輸入“man ls”,在屏幕的左上角會顯示“”,在這裏“LS”表示手冊名稱,而“(1)”表示該手冊位於第一章節。
man是按照手冊的章節號的順序進行搜索的,比如:
man sleep只會顯示sleep在章節1中的信息,相當於命令“man 1 sleep”。如果想查看庫函數sleep,就要輸入:
man 3 sleep
2、 常用命令形式
1要顯示關於 grep 命令的信息,請輸入: man grep
2要顯示包含“mkdir”字符串的 /usr/share/man/whatis 關鍵字數據庫中的所有項,請輸入:man -k mkdir
此輸出等同於 apropos 命令,即:apropos mkdir
3要顯示 /usr/share/man 或 /usr/share/man/local 路徑中的所有與 ftp 命令相關的物件,請輸入:man –M/usr/share/man:/usr/share/man/local ftp< /pre>
4要顯示所有匹配項,輸入以下命令:man –aTitle< /pre>
5只要顯示首個匹配項,輸入以下命令:man –FTitle< /pre>
6只要在 MANPATH 或 –M 中指定的路徑中搜索,輸入以下命令: man -m –M PATH Title< /pre>
7要在用戶定義的 PATH 中搜索,輸入以下命令: man –MPATH Title< /pre>
3、添加庫函數手冊
ubuntu默認是沒有安裝c語言的庫函數man手冊的,所以你在man perror 和sendto之類的函數時會顯示沒有相關文檔的問題,這個問題讓我鬱悶了我好久。解決方法:sudo apt-get install manpages-dev
4、讓man顯示中文
ubuntu源裏面已經包含了中文的man包,所以不用從其他地方down了,直接sudo apt-get install manpages-zh
但是這樣man默認顯示的還不是中文,還需要以下兩步
a.把中文man包轉換成utf8格式的
新建一個腳本文件gedit t.sh
把下面內容添加進去
#!/bin/bashcd /usr/share/man/zh_CN/for k in *docd $kfor i in *.gzdo j=`echo${i%.gz}` gunzip $i iconv -f gb18030 -t utf8 $j >tmp mv tmp $j gzip $jdonecd..done
然後
sudo ./t
b.修改man默認的語言
sudo gedit /etc/manpath.config 把裏面的所有的 /usr/share/man 改成 /usr/share/man/zh_CN保存後退出,然後你再試一下man ls
5、讓沒有中文幫助的顯示英文
做完上面第二部還不夠,這時你再man 一下一些c語言函數(不要用printf,socket之類比較有名的函數,這些已經有中文幫助了)的時候就會發現竟然沒有幫助,而剛纔明明在第一步已經安裝了啊。這是因爲你上面把/usr/share/man 改成/usr/share/man/zh_CN的操作使man只在中文幫助中搜索,如果沒有就直接放棄,因此還需要以下操作,才能讓man在沒有中文幫助的時候自動顯示英文的幫助,如果英文的也沒有,哪就真的沒有了。sudo gedit /etc/manpath.config
然後搜索你剛纔改過的地方,然後在其後面添加同樣的一行,只是後面的目錄還用原來的/usr/share/man,比如在修改後的
MANPATH_MAP /bin /usr/share/man/zh_CN
再添加一行
MANPATH_MAP /bin /usr/share/man
6、新安裝了ubuntu 8.04版本,發現安裝過的系統中缺少很多手冊頁。
用以下命令搞定了sudo apt-get install manpages
sudo apt-get install manpages-de
sudo apt-get install manpages-de-dev
sudo apt-get install manpages-dev
7、man信息在Linux系統中的存儲
我的這些man信息都存在Linux系統的哪裏?
[root@wupengchong ~]# manpath
/usr/kerberos/man:/usr/local/share/man:/usr/share/man/en:/usr/share/man
用manpath命令就可以看到了,當你man的時候,man會到如上這些路徑去尋找對應的幫助信息。如果沒有的話,那麼man會抱怨:
[root@wupengchong ~]# man rocrocket
No manual entry for rocrocket
8、如何重新建立man的數據庫?
使用makewhatis命令就可以!
最後,給大家推薦一個man的非常好的網站,http://www.linuxmanpages.com/,相當於一個網頁版的Linux的man手冊。