作为刚刚学习linux朋友,我们拿到一个命令,不知道怎么样使用,一般都会先看下命令默认参数说明,然后再不清楚就是通过man命令查阅手册。还是找不到方法,就网上搜索,最后不行就去大论坛发帖。由于很多时候发帖子估计要比较久有人回复。久而久之,对学习linux的热情被怠慢下来了。 其实,这也是学习linux的最大困难。 linux命令帮助,一般有2种,命令自身代码里面带有使用帮助说明,这种一般很精简,太长了,程序自身的大小以及日常维护不方便。还有一种,就是带有帮助文件,类似windows的chm格式文件。下面我说下这2种怎么样查阅。 一、程序内在帮助信息 例如:
上面是2个例子,通过参数获得命令使用帮助,这是我们经常用的。 说点题外话,开始跑题了……,呵呵 我想说下命令常见参数规律,一般如果带参数是一个字符,那么就用:一个”-“连接,如果后面参数是多个字符就用:”–“连接。是不是一个”-“后面不能接多个字符呢?这点就是linux命令解析灵活性了,如果你把多个字符用一个”-“连接,它会将它分割为多个参数。如:ls –al 等价于 ls –a –l ,如果你用:ls –-al 那么它将把al作为整体参数了。 还要说一点,一般linux命令,都会用-h,或者 –help作为返回命令行帮助信息。 特别是–help最多,有的命令2个都支持。 这个已经成了一种习惯了。遇到不会用的命令,不妨试试这2个参数。 二、获得命令外部帮助文件(man-pages)
在windows下面,我们经常把帮助手册叫电子书,是chm文件。在linux下面的帮助手册,一般叫man-pages。它们按照一定规律存放在linux一些文件夹里面,如果需要查阅,可以通过man-pages手册索引命令查阅,常见有:info,man(本文主要讲的),xman等等。说到这里,肯定有朋友会说:那有windows下面的chm方便吗,搜索,查询,以及表现形式怎么样的呢?在shell终端查看,是不是都是一大篇大篇文字,单独枯燥,密密麻麻的。 哈哈,我可以说的是,它内容表现还很丰富,支持普通文字,表格,图片,还有就是搜索定位到需要信息超快。 一定比在windows里面通过鼠标点击快几倍了。 那么它为什么管理方便,索引速度快呢。接下来,我们看一下man-pages也的规范了。
存放目录: 首先是目录以及存放规范,linux文档经常放在:MANPATH环境变量指定的目录中。一般在:/usr/share/man 这个目录里面。这个目录下面结构还有定义的:
先说一下,man[*]这类目录表示意思。linux帮助文档,一个特别的有意思的是,按照文档表示不同类型,分领域的(也就是分类别),过会我们会说这个类别按照什么分了。还有就是类似:zh_CN pl.ISO8859-2这些。文档还分语言.地域.字符编码 。可以支持统一命令,多个语言版本的文档,并且地域可以不一样,还可以指定字符集。如:zh_TW.big5 这个意思就是:中文_台湾地区.使用big5字符集编码的文档。 我们看下下面的表格:
如果文档属于那个类型的,它就放到 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 。看下下面例子:
从这个里面看,.gz结尾,看来是通过gzip压缩过的,linux系统为节省文档存储空间,自带文档都经过压缩的。只是查看时候,我们需要解压然后查看。文档内容不会改变。 再啰嗦一下: 细心朋友一定看到个问题,上面显示:man目录下面结构例子里面,除了man[n]以及语言地区目录。还有一类目录:man1,man0p,man1p,man1x 这里说明下: 加p:表示POSIX Programmer 程序说明文档 加x:表示x windows桌面程序说明文档 0p:表示POSIX Programmer 一些c的头文件库,如:tcp.h,ulimit.h等说明文档
能够快捷方便查询linux文档,除了目录规范以及命名规范外。对于文档的内容也有一个格式规范呢。 一个文本文件,又不是用word格式,基本都是ascii字符,还有什么规范? 可能朋友会这么说,是的,它确实是文本文件,编辑一个随便的txt文件,就可以是一个linux文档,如:你写了个:testhellow.sh脚本,然后你写了一段文本存为:man/man1/testhellow.1文件。这个就算一个文档了。 你通过linux索引方法,是可以找得到的。 但是:它不是一个规范的文档。 规范格式文档是:
规范的文档,如果有相关描述,都会包含上面这些节点类型的。我们举例说明下:
这里自己解压了一个cat.1.gz然后通过自带命令查看文档格式如上图,这些你看到用到好多命令,显示一个文档,在下一节文档查询里面我们会知道原因的。 这里主要说的是linux文档结构,包括目录,命名,已经文档名称,格式等。这些不是强制的,系统也不好强制检测你自己的文档是否满足。但是,你如果有自己文档想加入系统索引,按照规定去做,才会让以后管理不止混乱了。俗话说:无规律不成方圆。是这个理。呵呵,今天说的比较啰嗦,不知道有没有说清楚,这次说的比较理论的,下一节实际检索文档方面的东西。 |