Man 目录布局——为什么是子目录?

Man 目录布局——为什么是子目录?

Man 希望列出的 man 目录$MANPATH$(manpath)按部分拆分为名为 的目录"man$section"。这会重复联机帮助页后缀中已有的部分信息。 (例如,对于ls.1.gz.1信息会在 中重复man1/)。为什么不跳过中间人目录并制作人行道当扁平化对于目录来说似乎足够好时,目录扁平化$PATH

答案1

它不会重复信息:在给定目录中可以有比普通“.1”或“.3”更多的后缀,例如(取决于平台)数字后面的字母。例如,Debian 在“.3”后面带有应用程序后缀,例如 Perl 模块的“pm”。

这是来自 的清单(部分)/usr/share/man/man1,用于说明:

-rw-r--r--   1 root          592 Apr 17 2012    411toppm.1.gz
-rw-r--r--   1 root         3827 Tue 15:21:13   CA.pl.1ssl.gz
lrwxrwxrwx   1 root           17 Feb 19 2012    GET.1p.gz -> lwp-request.1p.gz
lrwxrwxrwx   1 root           17 Feb 19 2012    HEAD.1p.gz -> lwp-request.1p.gz
lrwxrwxrwx   1 root           17 Feb 19 2012    POST.1p.gz -> lwp-request.1p.gz
-rw-r--r--   1 root         2490 Aug 29 2011    SOAPsh.1p.gz
-rw-r--r--   1 root         2428 Aug 29 2011    XMLRPCsh.1p.gz
-rw-r--r--   1 root         5112 Apr  5 2012    alien.1p.gz 
-rw-r--r--   1 root         3130 Oct 26 2012    apt-show-versions.1p.gz
-rw-r--r--   1 root         4011 Tue 15:21:13   asn1parse.1ssl.gz
-rw-r--r--   1 root         2847 Tue 15:21:13   c_rehash.1ssl.gz
-rw-r--r--   1 root         9796 Tue 15:21:13   ca.1ssl.gz
-rw-r--r--   1 root         6410 Tue 15:21:13   ciphers.1ssl.gz
-rw-r--r--   1 root         8419 Tue 15:21:13   cms.1ssl.gz
-rw-r--r--   1 root         6394 Jun 26 2012    cpanm.1p.gz
-rw-r--r--   1 root         2631 Tue 15:21:13   crl.1ssl.gz
-rw-r--r--   1 root         2636 Tue 15:21:13   crl2pkcs7.1ssl.gz
-rw-r--r--   1 root         2272 Jun 19 2014    dbilogstrip.1p.gz
-rw-r--r--   1 root         3255 Jun 19 2014    dbiprof.1p.gz

此外,各个目录被分开,因为在使用cat目录的系统中,文件名(通常)会重复。

最后 - 进行拆分以保持目录大小(相对)较小并提高性能。

答案2

在这一点上,我想说主要原因是向后兼容性——目录分割从一开始就存在,在V4(这是 UNIX 的第四个版本,而不是 SVR4)。当时可能有很多原因:避免处理单个目录中的许多文件,将手册页视为书籍的一部分......

相关内容