作為剛剛學習linux朋友,我們拿到一個命令,不知道怎麼樣使用,一般都會先看下命令預設引數說明,然後再不清楚就是通過man命令查閱手冊。還是找不到方法,就網上搜尋,最後不行就去大論壇發帖。由於很多時候發帖子估計要比較久有人回覆。久而久之,對學習linux的熱情被怠慢下來了。 其實,這也是學習linux的最大困難。
linux命令幫助,一般有2種,命令自身程式碼裡面帶有使用幫助說明,這種一般很精簡,太長了,程式自身的大小以及日常維護不方便。還有一種,就是帶有幫助檔案,類似windows的chm格式檔案。下面我說下這2種怎麼樣查閱。
一、程式內在幫助資訊
例如:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
[chengmo@centos5 ~]$ cat --help Usage: cat [OPTION] [FILE]... Concatenate FILE(s), or standard input, to standard output. -A, --show-all equivalent to -vET #......省略 [chengmo@centos5 ~]$ man -h man, version 1.6d usage: man [-adfhktwW] [section] [-M path] [-P pager] [-S list] [-m system] [-p string] name ... #......省略 |
上面是2個例子,通過引數獲得命令使用幫助,這是我們經常用的。 說點題外話,開始跑題了……,呵呵
我想說下命令常見引數規律,一般如果帶引數是一個字元,那麼就用:一個”-“連線,如果後面引數是多個字元就用:”–“連線。是不是一個”-“後面不能接多個字元呢?這點就是linux命令解析靈活性了,如果你把多個字元用一個”-“連線,它會將它分割為多個引數。如:ls –al 等價於 ls –a –l ,如果你用:ls –-al 那麼它將把al作為整體引數了。
還要說一點,一般linux命令,都會用-h,或者 –help作為返回命令列幫助資訊。 特別是–help最多,有的命令2個都支援。 這個已經成了一種習慣了。遇到不會用的命令,不妨試試這2個引數。
二、獲得命令外部幫助檔案(man-pages)
- 什麼是手冊頁(man-pages)
在windows下面,我們經常把幫助手冊叫電子書,是chm檔案。在linux下面的幫助手冊,一般叫man-pages。它們按照一定規律存放在linux一些資料夾裡面,如果需要查閱,可以通過man-pages手冊索引命令查閱,常見有:info,man(本文主要講的),xman等等。說到這裡,肯定有朋友會說:那有windows下面的chm方便嗎,搜尋,查詢,以及表現形式怎麼樣的呢?在shell終端檢視,是不是都是一大篇大篇文字,單獨枯燥,密密麻麻的。 哈哈,我可以說的是,它內容表現還很豐富,支援普通文字,表格,圖片,還有就是搜尋定位到需要資訊超快。 一定比在windows裡面通過滑鼠點選快幾倍了。
那麼它為什麼管理方便,索引速度快呢。接下來,我們看一下man-pages也的規範了。
- man-pages目錄及檔名規範定義
存放目錄:
首先是目錄以及存放規範,linux文件經常放在:MANPATH環境變數指定的目錄中。一般在:/usr/share/man 這個目錄裡面。這個目錄下面結構還有定義的:
1 2 3 4 5 6 |
[chengmo@centos5 man]$ ls bg el fr hu it.UTF-8 man1 man2x man4 man6 man8 manl pl.ISO8859-2 ro sk zh_CN cs en fr.ISO8859-1 id ja man1p man3 man4x man6x man8x mann pl.UTF-8 ru sl zh_TW da es fr.UTF-8 it ko man1x man3p man5 man7 man9 nl pt ru.KOI8-R sv de fi hr it.ISO8859-1 man0p man2 man3x man5x man7x man9x pl pt_BR ru.UTF-8 tr #可以分為<strong>2類</strong>,一類是man[*]目錄,一類是:en,zh_CN,pl.ISO8859-2類代表語言已經地區,編碼目錄 |
先說一下,man[*]這類目錄表示意思。linux幫助文件,一個特別的有意思的是,按照文件表示不同型別,分領域的(也就是分類別),過會我們會說這個類別按照什麼分了。還有就是類似:zh_CN pl.ISO8859-2這些。文件還分語言.地域.字元編碼 。可以支援統一命令,多個語言版本的文件,並且地域可以不一樣,還可以指定字符集。如:zh_TW.big5 這個意思就是:中文_臺灣地區.使用big5字符集編碼的文件。
文件領域區分方法(就是類別)
我們看下下面的表格:
領域 | 描述 | 說明 |
1 | 使用者命令 | 可由任何人啟動的,如env、cat、man、touch文件 |
2 | 系統呼叫或核心函式 | 即由核心提供的函式 如link、sethostname、mkdir |
3 | 庫程式 | 即庫函式 如acosh、asctime、btree、locale |
4 | 與裝置有關的資訊 | 即/dev目錄下的特殊檔案 如zero null sda |
5 | 檔案格式描述 | 如/etc/passwd 檔案格式描述說明在這個分類下 |
6 | 遊戲 | 遊戲的幫助檔案 |
7 | 其他 | 包括 巨集命令包、慣例等如 arp、boot、regex、unix utf8 |
8 | 系統管理 | 只能由root啟動 如fdisk、fsck、renice、rpm、yum |
9 | 核心 | 用來存放核心例行程式的文件 |
n | 新文件 | 可能要移到更適合的領域 |
o | 老文件 | 可能會在一段期限內保留 |
l | 本地文件 | 與本特定系統有關的 |
如果文件屬於那個型別的,它就放到 MANPATH/語言_區域.字符集/man[n]目錄下面。 沒有區域語言,代表是en英文文件。就直接放到:MANPATH/man[n]下面,基本上大部分文件都是這個下面。
舉個列子吧:
linux下面有個命令是:passwd 修改密碼資訊的,每個使用者都可以呼叫,所以它會放到man1/目錄下面
但是同時,/etc/passwd有個儲存使用者賬戶資訊配置檔案,它的格式及說明資訊文件,將放到/man5目錄下了。這樣按照領域(以後都叫這個了,呵呵)區分,不會出現相同名稱檔案找錯的情況了。 上面提到的:1,2,3,4,5,7,8這些型別是我們經常用到的。 如果我想知道/dev/null 裝置的意思,我可以到:man4這個目錄下面找了。
幫助檔案格式:
剛才說了,目錄存放格式,幫助檔案一樣有它的格式的。首先是命名格式:
[命令名稱.領域]:名字就是命令、函式或檔名的名稱,後面跟一個點,再跟著領域字元。如:如果passwd命令說明文件,檔名命名是:passwd.1,加上目錄存放為:man1/passwd.1 ,如果對應passwd格式說明文件,它將是:man5/passwd.5 。看下下面例子:
1 2 3 4 5 6 |
[chengmo@centos5 man5]$ ls p* pam.5.gz pam_env.conf.5.gz passwd.5.gz png.5.gz pam.conf.5.gz pam_krb5.5.gz pbm.5.gz pnm.5.gz pam.d.5.gz pam_ldap.5.gz pgm.5.gz ppm.5.gz #/usr/share/man/man5 下面所有以p開標頭檔案,從檔案裡面我們就知道它對應於那些配置檔案格式說明了。 #pam.d.5.gz就是pam.d目錄結構說明 pam.5.gz是pam模組結構說明 |
從這個裡面看,.gz結尾,看來是通過gzip壓縮過的,linux系統為節省文件儲存空間,自帶文件都經過壓縮的。只是檢視時候,我們需要解壓然後檢視。文件內容不會改變。
再囉嗦一下:
細心朋友一定看到個問題,上面顯示:man目錄下面結構例子裡面,除了man[n]以及語言地區目錄。還有一類目錄:man1,man0p,man1p,man1x 這裡說明下:
加p:表示POSIX Programmer 程式說明文件
加x:表示x windows桌面程式說明文件
0p:表示POSIX Programmer 一些c的標頭檔案庫,如:tcp.h,ulimit.h等說明文件
- man-pages檔案內容格式規範
能夠快捷方便查詢linux文件,除了目錄規範以及命名規範外。對於文件的內容也有一個格式規範呢。
一個文字檔案,又不是用word格式,基本都是ascii字元,還有什麼規範?
可能朋友會這麼說,是的,它確實是文字檔案,編輯一個隨便的txt檔案,就可以是一個linux文件,如:你寫了個:testhellow.sh指令碼,然後你寫了一段文字存為:man/man1/testhellow.1檔案。這個就算一個文件了。
你通過linux索引方法,是可以找得到的。 但是:它不是一個規範的文件。
規範格式文件是:
手冊頁內容 |
描 述 |
NAME | 程式或者命令的名稱、手冊節號及釋出日期 |
SYNOPSIS | 怎樣呼叫命令,帶有所有選項和引數的完整列表 |
DESCRIPTl0N | 命令及其用法的簡短小結 |
RETURN VALUES | 程式或者庫函式返回值,以及產生特定返回值的環境 |
EXIT STATUS | 經常用來替代服TURNVALUS |
OPTIONS | 按字母順序排列的選項和引數清單,如果有的話 |
FILES | 命令使用的或者能使用的檔案清單 |
USAGE | 用程式的語言說明的簡明語法,如果有的話 |
ENVIROMENT | 命令使用的或者能使用的環境變數清單 |
DIAGNOSTICS | 命令產生的錯誤資訊及其解決辦法的清單 |
NOTES | 不能夠歸入其他任何一種類別下的所有資訊 |
CONFORMING TO | 列出程式遵循的任何標難,比如PoSIX或ISO |
SEE ALSO | 和命令有關的交叉索引和資訊 |
BUGS | 指出己知的bug和錯誤功能,以及怎樣和程式的作者聯絡修正它們 |
AUTHOR | 命令的作者或者維護者的名字,可能帶有電子郵件地址或URL地址
|
規範的文件,如果有相關描述,都會包含上面這些節點型別的。我們舉例說明下:
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 |
[chengmo@centos5 ~]$ gtbl cat.1 | gtbl | groff -Tascii -man CAT(1) User Commands CAT(1) NAME cat - concatenate files and print on the standard output SYNOPSIS cat [OPTION] [FILE]... DESCRIPTION Concatenate FILE(s), or standard input, to standard output. 省略.... EXAMPLES cat f - g 省略.... AUTHOR Written by Torbjorn Granlund and Richard M. Stallman. REPORTING BUGS Report bugs to <bug-coreutils@gnu.org>. COPYRIGHT Copyright (C) 2006 Free Software Foundation, Inc. 省略.... SEE ALSO The full documentation for cat is maintained as a Texinfo manual. If 省略.... cat 5.97 March 2007 CAT(1) |
這裡自己解壓了一個cat.1.gz然後通過自帶命令檢視文件格式如上圖,這些你看到用到好多命令,顯示一個文件,在下一節文件查詢裡面我們會知道原因的。
這裡主要說的是linux文件結構,包括目錄,命名,已經文件名稱,格式等。這些不是強制的,系統也不好強制檢測你自己的文件是否滿足。但是,你如果有自己文件想加入系統索引,按照規定去做,才會讓以後管理不止混亂了。俗話說:無規律不成方圓。是這個理。呵呵,今天說的比較囉嗦,不知道有沒有說清楚,這次說的比較理論的,下一節實際檢索文件方面的東西。