這兩天學習<linux裝置驅動程式開發詳解>中的非同步通知,其中有一個fcntl()函數,就是找不到,很氣憤,在網上搜,也沒有好的解決辦法,
最終,一個網友給我做瞭解答:是因為fcntl()是標準庫,在核心源碼中是找不到的,只能在系統中尋找到,你可以用這個命令來實現:man fcntl
所以,我才重新看看man的用法,發現確實有這麼多的用處,咳,整理如下:
什麼是man手冊
首先,man是manual的簡稱,中文說法可以是手冊。
在Linux世界中,許多新手請教某條命令的用法時, 好多不耐心的老手通常會用一條命令來回答這位無助的新手,而這條命令通常
就是man開頭。無助的新手敲上這條命令一看究竟,在終端上頓時顯示出來了一螢幕的英文,
老手的意思是,自己看看手冊嗎,可是看手冊也是有學問的,無助的新手甚
至不知道怎麼退出這條命令呢。下面我們就來講解一下看man手冊的學問
一。介紹man的使用方法
1.手冊頁(Man Pages)
對於Linux初學者,不能將手冊頁當教程,因為它只是簡明的參考資料.在你需要瞭解某一命令的功能以及相關的參數意義時可以用到它.
Linux man中的man就是manual的縮寫,用來查看系統中內建的各種參考手冊,但是手冊頁分為好幾個部分,如下所示:(註:手冊頁,很重要的,一般我們也都沒有用上,不過有時候,你就會發現你用上了)
1 Executable programs or shell commands
2 System calls (functions provided by the kernel)
3 Library calls (functions within program libraries)
4 Special files (usually found in /dev)
5 File formats and conventions eg /etc/passwd
6 Games
7 Miscellaneous (including macro packages and conventions), e.g. man(7), groff(7)
8 System administration commands (usually only for root)
9 Kernel routines [Non standard]
----------------------
解釋一下,
1是普通的命令
2是系統調用,如open,write之類的(通過這個,至少可以很方便的查到調用這個函數,需要加什麼標頭檔)
3是庫函數,如printf,fread
4是特殊檔案,也就是/dev下的各種裝置檔案
5是指檔案的格式,比如passwd, 就會說明這個檔案中各個欄位的含義
6是給遊戲留的,由各個遊戲自己定義
7是附件還有一些變數,比如向environ這種全域變數在這裡就有說明
8是系統管理用的命令,這些命令只能由root使用,如ifconfig
------------------------------------
n 新文檔, 可能要移到更適合的領域。
o 老文檔, 可能會在一段期限內保留。
l 本地文檔, 與本特定系統有關的。
------------------------------------
在shell中輸入 man+數字+命令/函數 即可以查到相關的命令和函數。若不加數字,那Linux man命令預設從數字較小的手冊中尋找相關命令和函數。
例如:我們輸入 man ls,它會在最左上方顯示“LS(1)”,在這裡,“LS”表示手冊名稱,而“(1)”表示該手冊位於第一節章,同樣,我們輸入“man ifconfig”它會在最左上方顯示“IFCONFIG(8)”。也可以這樣輸入命令:“man [章節號] 手冊名稱”。
man是按照手冊的章節號的順序進行搜尋的,比如:man sleep,只會顯示sleep命令的手冊,如果想查看庫函數sleep,就要輸入:man 3 sleep
------------------------------------
man -f command 顯示man程式的所有手冊
例如:man -f kill
man n command 顯示指定章節的手冊
man -a command 顯示所有章節的手冊
man -w command 顯示手冊所在的路徑
man -aw command 結合-a參數顯示所有章節的手冊路徑
手冊頁一般由以下幾部分組成:
NAME 命令名稱 SYNOPSIS 命令的文法格式 DESCRIPTION 對命令功能的描述
OPEIONS 說明該命令所提供的選項和參數 EXAMPLES 對命令如何使用給出的例子 FILES 該手冊頁的預設位置
AUTHOR 該軟體的作者 REPORTING BUGS 告訴使用者將他們發現的BUGS通過郵件發送給開發人員 COPYRIGHT 著作權資訊
SEEALSO 與該程式有關的其他程式
如:若是以mkdir為例的話,第一行中出現的MKDIR(1)表示該命令屬於Section 1,為使用者命令,類似的man
apt-get會看到APT-GET(8),表示apt-get命令為系統管理工具
man程式是基於less命令的因此less程式的操作命令都可以在man pages中使用.
在手冊頁的最下面一行,可以輸入少量的命令(這些命令很重要,其實和Vi下面編輯程式的快速鍵很一致的,哈哈 學會舉一反三哦)資訊的瀏覽和定位.見下表:
-------------------------------------------
按鍵 描述
-------------------------------------------
j ------》 向下滾動一行
k ------》 向上滾動一行
g ------》 跳轉到手冊的第一行
G ------》 跳轉到手冊的最後一行
/String + Enter ------》 在手冊頁中尋找第一個Sting
n ------》 同方向尋找的下一次匹配,可多次使用
N ------》 反方向尋找的下一次匹配,可多次使用
h ------》 獲得手冊頁的協助
也可以使用如:ctrl+f,ctrl+b來翻一整屏
q------》退出手冊頁
練習,利用可以用man more 和man less 看看他們之間的區別
------------------------------------------
下面簡單說明下more命令和less功能的區別:
more命令功能:讓畫面在顯示滿一頁時暫停,此時可按空格健繼續顯示下一個畫面,或按Q鍵停止顯示。
less命令功能:less命令的用法與more命令類似,也可以用來瀏覽超過一頁的檔案。所不同的是less命令除了可以按空格鍵向下顯示檔案外,還可以利用上下鍵來捲動檔案。當要結束瀏覽時,只要在less命令的提示符“: ”下按Q鍵即可。
它們功能上相近,只是從瀏覽習慣和顯示方式上有所不同
二.如何安裝中文的man包
中文man對英文不是很好的朋友來說,可以起到一點協助作用。不過要學好linux,就不能太依賴這個東東,畢竟學好英語才是王道。
環境:centos 5.3,核心:2.6.18-194.el5 (注,我的電腦也是這個,呵呵)
官方網站:http://cmpp.linuxforum.net
這個是源碼的:http://manpages-zh.googlecode.com/files/manpages-zh-1.5.1.tar.gz
現在下載安裝包:
wget http://manpages-zh.googlecode.com/files/manpages-zh-1.5.1.tar.gz
操作步驟如下:
#tar zxvf manpages-zh-1.5.1.tar.gz
(註:我使用的加上瞭解壓目錄的命令 即又加上了:-C /tmp )
#cd manpages-zh-1.5.1
#./configure --prefix=/usr/local/zhman --disable-zhtw
#make
#make install
以上安裝完成.請做如下操作:
#cd ~
#vi .bashrc
在.bashrc中增加:
alias cman='man -M /usr/local/zhman/share/man/zh_CN'
#source .bashrc //在命令列執行,為了使剛剛添加的alias生效
OK!現在就可以使用中文版的man了,在這裡是cman,此時,你發現你可以用內建的man,還有安裝有中文的cman了,是不是很爽呀。。。
如:
cman cd
cman ls