標籤:style blog http color 使用 strong
最近開始學習linux c編程,需要用到很多庫函數和c標準庫函數,發現原來man命令還可以用來查詢函數原型。
比如輸入man lseek可以擷取函數lseek的原型和所屬標頭檔。
有些函數名既是linux命令又是系統調用,如mkdir,可以輸入man 2 mkdir擷取該函數原型。只輸入man mkdir擷取的是命令mkdir的協助。
對於庫函數可以輸入man 3 <庫函數名> 獲得協助資訊。man 3 opendir
對於系統開發經常需要查詢函數還是非常方便的,另外在vim中可以用shift + k查詢。
以下轉自:http://blog.csdn.net/sunyubo458/article/details/5935248
在unix下面做開發,查看man手冊是非常必要,也是非常需要的。如何更快速的使用man?
當然,平時有不會的命令,或者記不住命令的參數時,就會man一下,可是在unix man手冊裡有這樣一個現象,比如你想查看一下read()這個C庫函數的功能和參數以及用法。man read其結果呢?只會出shell的read命令的相關協助資訊,沒有出現read()庫函數的相關內容。
為何?
那是因為man的搜尋順序是根據man.cf中的設定來進行的。當man找到一個匹配時,就不再往下找了。所以當你想查看一下read()函數而不是想瞭解 read命令的使用時,光使用man read 是肯定不行。在我用的機子環境:
Machine hardware: sun4u
OS version: 5.8
Processor type: sparc
Hardware: SUNW,Ultra-250下.
這時使用man -s 2 read, 就強制man只搜尋section 2中的檔案(注意了:根據不同版本的unix可能不一樣哦)
問題來了,什麼是section?
Unix的man page(不用想太多了,man page 就是所說的參考手冊頁)是按照節(section)來組織的.當我們使用man ls的時候,會看到ls(1),這個括弧中的1就表示ls的man page位於section 1。section通常是由一個主section名和一個可選的次section名組成.主section名通常是 一個數字,次section名通常是一個或多個字母組成. Solaris中各 section 所對應的內容:
1: User Commands and Utilities
2: System Calls
3: C Library Functions
4: File formats
5: Headers,tables and macros
6: Games and demos
7: Device and Network Interfaces
8: Maintance and Accounting commands
9: Device driver interfaces
使用-s參數就是要指寫在哪一個session裡找。要記住了,不同的版本,數字可能不一樣,就是這樣的方法了,試一下數字就可了,格式如:man -s 2 read.
附:man指令的其他相關資料
Linux系統提供了大量命令和許多工具 + 生產力軟體。一些常用命令和實用軟體的資訊,我們可以使用系統提供的線上說明手冊擷取。在 Linux線上說明手冊上,幾乎每個命令都有說明。因此,當使用者對於Linux上的一個命令不會用或是不太瞭解時,就請使用線上說明命令。
Linux系統的線上手冊中有大量的可用資訊,根據其內容分成若干節。
1. 章節說明:
1 一般使用者的命令
2 系統調用的命令
3 C語言函數庫的命令
4 有關驅動程式和系統裝置的解釋
5 設定檔的解釋
6 遊戲程式的命令
7 其他的軟體或是程式的命令
8 有關係統維護的命令
n shell內部命令章節號
2. man 命令
這個命令格式化並顯示線上的手冊頁。通常使用者只要在命令 man 後,輸入想要擷取的命令的名稱(例如 ls ),man 就會列出一份完整的說明,其內容包括命令文法、各選項的意義以及相關命令等。
該命令的一般形式為∶man [選項] 命令名稱
命令中主要選項的含義分別為∶
-M 路徑 指定搜尋 man 手冊頁的路徑
-S 章節列表 指定所要查看的章節列表
-a 顯示所有章節
章節號 指定所要查看的章節號
(1)所有的手冊頁都屬於一個特定的領域,用一個字元來表示。
Linux下最通用的領域及其名稱及說明如下:
領域 名稱 說明
1 使用者命令, 可由任何人啟動的。
2 系統調用, 即由核心提供的函數。
3 常式, 即庫函數。
4 裝置, 即/dev目錄下的特殊檔案。
5 檔案格式描述, 例如/etc/passwd。
6 遊戲, 不用解釋啦!
7 雜項, 例如宏命令包、慣例等。
8 系統管理員工具, 只能由root啟動。
9 其他(Linux特定的), 用來存放核心例行程式的文檔。
n 新文檔, 可能要移到更適合的領域。
o 老文檔, 可能會在一段期限內保留。
l 本地文檔, 與本特定系統有關的。
例如:man ls就會有LS(1)
(2)man的一些常用參數和用法
man -a cmd
開啟所有領域內的同名協助,例如 man fam ,你首先會進入一個fam(1M)的命令版fam協助,你再按q鍵
就會進入FAM(3X),庫函數版的協助
man -aw cmd
顯示所有cmd的所有手冊檔案的路徑,如 man -aw fam 就是
/usr/share/man/man1/fam.1m.gz
/usr/share/man/man3/fam.3x.gz
man 領域代號 cmd
直接指定特定領域內搜尋手冊頁,如 man 3 fam 直接進入庫函數版的協助
man -M cmd
指定手冊檔案的搜尋路徑,如 man -M /home/mysql/man mysql 顯示的就是你安裝的mysql的協助,
而不是系統內建的舊版mysql的協助
man cmd | col -b > cmd.txt
把man手冊資訊輸出到文字檔
LANG=語言代號
man -w cmd
man 特定語言manpage檔案的路徑
查看特定語言版本的手冊頁
例如,要查看mplayer的中文man
shell> LANG=zh
shell> man -w mplayer
/usr/share/man/zh/man1/mplayer.1.gz
新開一個shell視窗(或在原視窗 shell> LANG=en_US.UTF-8)
shell> man /usr/share/man/zh/man1/mplayer.1.gz
(3)man的設定檔/etc/man.config
如果你不想每次man cmd都要用-M指定路徑,那麼可以通過修改設定檔,新增內容如
MANPATH /home/mysql/man
man在各領域的搜尋次序可以通過修改
MANSECT 1:8:2:3:4:5:6:7:9:tcl:n:l:p:o
實現,一般不推薦修改。