man命令过程
在linux下,要想查看某一个命令的具体用法,我们可以使用man来查看,例如:man ls;
然后系统就会显示该命令的详细使用信息了。那么,这个过程中,man做了哪些操作呢?
首先,man要去manpath中查找命令说明文档的存放位置:
[root@zabbix-server dmm]# manpath
/usr/local/share/man:/usr/share/man/en:/usr/share/man
一般情况下,命令的说明文档是存放在/usr/share/man的。
cd /usr/share/man ,看到该目录下有man[1-9]这些目录,每个目录存放的内容不一样。
说明:
1 用户级命令和应用程序
2 系统调用和内核出错代码
3 库调用
4 设备驱动程序和网络协议
5 标准文件格式
6 游戏和演示
7 各种文件和文档
8 系统管理命令
9 少见隐秘的内和规范和接口
ls是一个用户命令,所以我们去man1目录中看一下
看到有一个文件:ls.1.gz。
在man命令执行时,man会随需要格式化对应的gzip文件,并将格式化后的文件存放到缓存:/var/cache/man/catX中。
我们cd /var/cache/man/cat1
man ls ,过后,cat1中多了一个ls.1.lzma
man tar,过后,cat1中多了一个tar.1.lzma
这个lzma格式的文件,就是被man把gzip格式化后的文件,它也是一种压缩文件,压缩率:gzip<bzip2<lzma
高压缩保证了该文件占用较小的空间。
解压ls.1.lzma
[root@zabbix-server cat1]# lzma -d ls.1.lzma
[root@zabbix-server cat1]# ls
ls.1 tar.1.lzma
查看ls.1的内容,发现和man ls的内容完全一致。
好了,以上就是man的解析过程。
从manpath中查找命令的gzip文件,格式化成lzma文件到对应的缓存中,之后显示出来。
这里有一个小小的问题,既然命令的文档是gzip文件,我们直接gunzip呢?出来的内容是什么呢?为什么?