领域 | 描述 | 说明 |
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 。看下下面例子:
[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地址 |
规范的文档,如果有相关描述,都会包含上面这些节点类型的。我们举例说明下:
[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文档结构,包括目录,命名,已经文档名称,格式等。这些不是强制的,系统也不好强制检测你自己的文档是否满足。但是,你如果有自己文档想加入系统索引,按照规定去做,才会让以后管理不止混乱了。俗话说:无规律不成方圆。是这个理。呵呵,今天说的比较啰嗦,不知道有没有说清楚,这次说的比较理论的,下一节实际检索文档方面的东西。