linux shell命令快捷獲得系統(tǒng)幫助(一)[man-pages定義規(guī)范]
作為剛剛學(xué)習(xí)linux朋友,我們拿到一個命令,不知道怎么樣使用,一般都會先看下命令默認(rèn)參數(shù)說明,然后再不清楚就是通過man命令查閱手冊。還是找不到方法,就網(wǎng)上搜索,最后不行就去大論壇發(fā)帖。由于很多時候發(fā)帖子估計要比較久有人回復(fù)。久而久之,對學(xué)習(xí)linux的熱情被怠慢下來了。 其實,這也是學(xué)習(xí)linux的最大困難。
linux命令幫助,一般有2種,命令自身代碼里面帶有使用幫助說明,這種一般很精簡,太長了,程序自身的大小以及日常維護(hù)不方便。還有一種,就是帶有幫助文件,類似windows的chm格式文件。下面我說下這2種怎么樣查閱。
一、程序內(nèi)在幫助信息
例如:
[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個例子,通過參數(shù)獲得命令使用幫助,這是我們經(jīng)常用的。 說點題外話,開始跑題了……,呵呵
我想說下命令常見參數(shù)規(guī)律,一般如果帶參數(shù)是一個字符,那么就用:一個”-“連接,如果后面參數(shù)是多個字符就用:”--“連接。是不是一個”-“后面不能接多個字符呢?這點就是linux命令解析靈活性了,如果你把多個字符用一個”-“連接,它會將它分割為多個參數(shù)。如:ls –al 等價于 ls –a –l ,如果你用:ls –-al 那么它將把al作為整體參數(shù)了。
還要說一點,一般linux命令,都會用-h,或者 --help作為返回命令行幫助信息。 特別是--help最多,有的命令2個都支持。 這個已經(jīng)成了一種習(xí)慣了。遇到不會用的命令,不妨試試這2個參數(shù)。
二、獲得命令外部幫助文件(man-pages)
什么是手冊頁(man-pages)
在windows下面,我們經(jīng)常把幫助手冊叫電子書,是chm文件。在linux下面的幫助手冊,一般叫man-pages。它們按照一定規(guī)律存放在linux一些文件夾里面,如果需要查閱,可以通過man-pages手冊索引命令查閱,常見有:info,man(本文主要講的),xman等等。說到這里,肯定有朋友會說:那有windows下面的chm方便嗎,搜索,查詢,以及表現(xiàn)形式怎么樣的呢?在shell終端查看,是不是都是一大篇大篇文字,單獨枯燥,密密麻麻的。 哈哈,我可以說的是,它內(nèi)容表現(xiàn)還很豐富,支持普通文字,表格,圖片,還有就是搜索定位到需要信息超快。 一定比在windows里面通過鼠標(biāo)點擊快幾倍了。
那么它為什么管理方便,索引速度快呢。接下來,我們看一下man-pages也的規(guī)范了。
man-pages目錄及文件名規(guī)范定義
存放目錄:
首先是目錄以及存放規(guī)范,linux文檔經(jīng)常放在:MANPATH環(huán)境變量指定的目錄中。一般在:/usr/share/man 這個目錄里面。這個目錄下面結(jié)構(gòu)還有定義的:
[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類代表語言已經(jīng)地區(qū),編碼目錄
先說一下,man[*]這類目錄表示意思。linux幫助文檔,一個特別的有意思的是,按照文檔表示不同類型,分領(lǐng)域的(也就是分類別),過會我們會說這個類別按照什么分了。還有就是類似:zh_CN pl.ISO8859-2這些。文檔還分語言.地域.字符編碼 ??梢灾С纸y(tǒng)一命令,多個語言版本的文檔,并且地域可以不一樣,還可以指定字符集。如:zh_TW.big5 這個意思就是:中文_臺灣地區(qū).使用big5字符集編碼的文檔。
文檔領(lǐng)域區(qū)分方法(就是類別)
我們看下下面的表格:
領(lǐng)域 | 描述 | 說明 |
1 | 用戶命令 | 可由任何人啟動的,如env、cat、man、touch文檔 |
2 | 系統(tǒng)調(diào)用或內(nèi)核函數(shù) | 即由內(nèi)核提供的函數(shù) 如link、sethostname、mkdir |
3 | 庫程序 | 即庫函數(shù) 如acosh、asctime、btree、locale |
4 | 與設(shè)備有關(guān)的信息 | 即/dev目錄下的特殊文件 如zero null sda |
5 | 文件格式描述 | 如/etc/passwd 文件格式描述說明在這個分類下 |
6 | 游戲 | 游戲的幫助文件 |
7 | 其他 | 包括 宏命令包、慣例等如 arp、boot、regex、unix utf8 |
8 | 系統(tǒng)管理 | 只能由root啟動 如fdisk、fsck、renice、rpm、yum |
9 | 內(nèi)核 | 用來存放內(nèi)核例行程序的文檔 |
n | 新文檔 | 可能要移到更適合的領(lǐng)域 |
o | 老文檔 | 可能會在一段期限內(nèi)保留 |
l | 本地文檔 | 與本特定系統(tǒng)有關(guān)的 |
如果文檔屬于那個類型的,它就放到 MANPATH/語言_區(qū)域.字符集/man[n]目錄下面。 沒有區(qū)域語言,代表是en英文文檔。就直接放到:MANPATH/man[n]下面,基本上大部分文檔都是這個下面。
舉個列子吧:
linux下面有個命令是:passwd 修改密碼信息的,每個用戶都可以調(diào)用,所以它會放到man1/目錄下面
但是同時,/etc/passwd有個保存用戶賬戶信息配置文件,它的格式及說明信息文檔,將放到/man5目錄下了。這樣按照領(lǐng)域(以后都叫這個了,呵呵)區(qū)分,不會出現(xiàn)相同名稱文件找錯的情況了。 上面提到的:1,2,3,4,5,7,8這些類型是我們經(jīng)常用到的。 如果我想知道/dev/null 設(shè)備的意思,我可以到:man4這個目錄下面找了。
幫助文件格式:
剛才說了,目錄存放格式,幫助文件一樣有它的格式的。首先是命名格式:
[命令名稱.領(lǐng)域]:名字就是命令、函數(shù)或文件名的名稱,后面跟一個點,再跟著領(lǐng)域字符。如:如果passwd命令說明文檔,文件名命名是:passwd.1,加上目錄存放為:man1/passwd.1 ,如果對應(yīng)passwd格式說明文檔,它將是:man5/passwd.5 。看下下面例子:
[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開頭文件,從文件里面我們就知道它對應(yīng)于那些配置文件格式說明了。 #pam.d.5.gz就是pam.d目錄結(jié)構(gòu)說明 pam.5.gz是pam模塊結(jié)構(gòu)說明
從這個里面看,.gz結(jié)尾,看來是通過gzip壓縮過的,linux系統(tǒng)為節(jié)省文檔存儲空間,自帶文檔都經(jīng)過壓縮的。只是查看時候,我們需要解壓然后查看。文檔內(nèi)容不會改變。
再啰嗦一下:
細(xì)心朋友一定看到個問題,上面顯示:man目錄下面結(jié)構(gòu)例子里面,除了man[n]以及語言地區(qū)目錄。還有一類目錄:man1,man0p,man1p,man1x 這里說明下:
加p:表示POSIX Programmer 程序說明文檔
加x:表示x windows桌面程序說明文檔
0p:表示POSIX Programmer 一些c的頭文件庫,如:tcp.h,ulimit.h等說明文檔
man-pages文件內(nèi)容格式規(guī)范
能夠快捷方便查詢linux文檔,除了目錄規(guī)范以及命名規(guī)范外。對于文檔的內(nèi)容也有一個格式規(guī)范呢。
一個文本文件,又不是用word格式,基本都是ascii字符,還有什么規(guī)范?
可能朋友會這么說,是的,它確實是文本文件,編輯一個隨便的txt文件,就可以是一個linux文檔,如:你寫了個:testhellow.sh腳本,然后你寫了一段文本存為:man/man1/testhellow.1文件。這個就算一個文檔了。
你通過linux索引方法,是可以找得到的。 但是:它不是一個規(guī)范的文檔。
規(guī)范格式文檔是:
手冊頁內(nèi)容 |
描 述 |
NAME |
程序或者命令的名稱、手冊節(jié)號及發(fā)布日期 |
SYNOPSIS |
怎樣調(diào)用命令,帶有所有選項和參數(shù)的完整列表 |
DESCRIPTl0N |
命令及其用法的簡短小結(jié) |
RETURN VALUES |
程序或者庫函數(shù)返回值,以及產(chǎn)生特定返回值的環(huán)境 |
EXIT STATUS |
經(jīng)常用來替代服TURNVALUS |
OPTIONS |
按字母順序排列的選項和參數(shù)清單,如果有的話 |
FILES |
命令使用的或者能使用的文件清單 |
USAGE |
用程序的語言說明的簡明語法,如果有的話 |
ENVIROMENT |
命令使用的或者能使用的環(huán)境變量清單 |
DIAGNOSTICS |
命令產(chǎn)生的錯誤信息及其解決辦法的清單 |
NOTES |
不能夠歸入其他任何一種類別下的所有信息 |
CONFORMING TO |
列出程序遵循的任何標(biāo)難,比如PoSIX或ISO |
SEE ALSO |
和命令有關(guān)的交叉索引和信息 |
BUGS |
指出己知的bug和錯誤功能,以及怎樣和程序的作者聯(lián)系修正它們 |
AUTHOR |
命令的作者或者維護(hù)者的名字,可能帶有電子郵件地址或URL地址 |
規(guī)范的文檔,如果有相關(guān)描述,都會包含上面這些節(jié)點類型的。我們舉例說明下:
[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然后通過自帶命令查看文檔格式如上圖,這些你看到用到好多命令,顯示一個文檔,在下一節(jié)文檔查詢里面我們會知道原因的。
這里主要說的是linux文檔結(jié)構(gòu),包括目錄,命名,已經(jīng)文檔名稱,格式等。這些不是強(qiáng)制的,系統(tǒng)也不好強(qiáng)制檢測你自己的文檔是否滿足。但是,你如果有自己文檔想加入系統(tǒng)索引,按照規(guī)定去做,才會讓以后管理不止混亂了。俗話說:無規(guī)律不成方圓。是這個理。呵呵,今天說的比較啰嗦,不知道有沒有說清楚,這次說的比較理論的,下一節(jié)實際檢索文檔方面的東西。
相關(guān)文章
詳解shell 遍歷文件夾內(nèi)所有文件并打印絕對路徑
本篇文章主要介紹了shell 遍歷文件夾內(nèi)所有文件并打印絕對路徑,具有一定的參考價值,有興趣的可以了解一下。2017-01-01