最近使用Ubuntu14.04来做开发,但是发现man手册不全,比如sizeof、ulimit的手册都没有,下面是解决办法。
1 安装标准c的相关的帮助文档
sudo apt-get install libc-dev sudo apt-get install glibc-doc
这时候,ulimit的man手册已经有了,但是sizeof的手册还是缺乏。
2 安装标准c++的帮助文档:(版本号以tab键自动提示的为准)[3]
sudo apt-get install libstdc++6-4.7-dev sudo apt-get install libstdc++6-4.7-doc3 安装 c++ STL 相关帮助文档[3]
sudo apt-get install stl-manual
sudo apt-get install manpages-posix-dev
5 自定义手册
有时候自己写的函数/命令也希望可以通过man来查看帮助信息,那么怎样实现呢?下面是具体的方法。
5.1 manpaht.config
man的搜索路径在/etc/manpath.config中设置,如下图:
图 5.1
5.2 man -w
关于man的搜索路径,还可以使用man -w查看,如下图
图5.2
使用-w参数查看write函数说明文档所在文件,如下图:
图5.3
说明:
-a, --all:默认情况下,man只显示最匹配的查找结果。使用这个参数,是的man显示所有的结果。
-w:只显显示所查找命令/函数所在的文件。
5.3 man帮助文档格式
5.3.1 文件格式
由图5.3可见,man帮助文档一般都是.gz文件(使用gzip压缩,gunzip解压),我们可以将自定义的帮助文档保存为此格式。压缩为.gz格式是为了节约空间,使用gunzip工具把它解压为源文件(不带.gz后缀),man命令照样可以读取其内容!
5.3.2 文件名格式
由图5.3可见,一个函数/命令所对应的帮助文档保存在以该函数名命名的man1/man2/man3目录中(其实还有man4...man8,甚至可以自定义man9,man10...),并且文件名必须有后缀.1/.2/.3(后缀的数字要和该文档所在的目录名最后的数字对应)。
至于后缀.gz,可以没有,如图5.4所示。
图5.4
说明:图5.4中的黄色圈主的部分是我添加的。首先在/usr/share/man目录中创建一个man9目录(默认已有man1~man8),然后再man9中创建一个文件read.9,格式为纯文本格式,所以没有.gz后缀。.9后缀是必需的,而.gz则可有无可无(纯文本不用,gzip压缩文件就要)。
5.3.3 帮助文档内容格式
可以使用gunzip解压fopen.3..gz,得到fopen.3,使用vim打开此文件,其部分内容如下所示:
图 5.5
有上图可见,除了说明信息,还有.TH、.SH等辅助信息,在使用man命令查看此函数时,这些辅助信息是没有显示的。这里辅助信息的意义见参考资料[5]。
5.3.4 自定义帮助文档点击打开链接
5.3.4.1 包含辅助信息
第5.3.3小节说到fopen.3中是有辅助信息的(标记),要创建一个具有辅助信息的帮助文档,方法见参考资料[5][8]。可以使用groff工具将标准的文本和特殊的命令翻译成格式化的输出。
groff -Tascii -man caocao.1
5.3.4.2 不包含辅助信息
第5.3.2小节说到,read.9是纯文本的,因此我们可以创建没有辅助信息的帮助文档,man命令照样可以正常显示。当需要编辑的此帮助文档的时候,可以使用vim,这样就方便动态的往帮助文档中添加内容。
参考资料
[1]ubuntu下man帮助文档不全怎么办?如何解决?
[2]ubuntu14.04系列使用教程:[1]安装中文man
[3]ubuntu man 帮助文档不全
[4]ubuntu中文版man手册配置方法
[5]Linux下自定义命令行实用程序及命令的man手册的编写
[6]linux man命令查看原理
[7]如何把linux系统的man手册导出
[8]Linux 文档编写全攻略
[9]Writing GNUstep man-pages with groff