因此,man git init
在 Ubuntu 14.04 系统上输入 bash 提示符的效果似乎与 相同man git-init
,只是我不太确定如何操作。
(ie )man
的页面似乎不允许这种构造,除非是手册的 a ,但手册页似乎来自部分。man
man man
git
section
1
这是支持的未记录用法吗man
?我是否误解了 的文档man
?是否还有其他魔法正在发生?有人愿意解释一下吗?
答案1
的某些实现man
(包括 Ubuntu 使用的实现)将搜索词中的空格替换为连字符,并尝试查找该名称下的手册页。所以man git init
寻找与 相同的东西man git-init
。同样,man run parts
andman ntfs 3g
工作(如果您的系统上有run-parts
and )。ntfs-3g
不过,它只对单词对执行此操作,因此man git annex sync
不起作用(尽管man git-annex sync
可以,因为这又是一个单词对)。
事实上,当您请求两个手册页(例如,man git bash
查看 git 和 bash 手册页)时,man
实际上首先尝试查找git-bash
手册页。如果使用 启用它,您可以在调试输出中看到这一点-d
。
这个 man 功能称为“子页面”,您可以阅读man-db 中实现子页面的源代码(谢谢,斯蒂芬·基特)。正在搜索man(1)
联机帮助页对于“子页面”还将引导您在选项下找到此行为的描述--no-subpages
:
--no-subpages
By default, man will try to interpret pairs of manual page
names given on the command line as equivalent to a single
manual page name containing a hyphen or an underscore. This
supports the common pattern of programs that implement a
number of subcommands, allowing them to provide manual pages
for each that can be accessed using similar syntax as would be
used to invoke the subcommands themselves. For example:
$ man -aw git diff
/usr/share/man/man1/git-diff.1.gz
To disable this behaviour, use the --no-subpages option.
$ man -aw --no-subpages git diff
/usr/share/man/man1/git.1.gz
/usr/share/man/man3/Git.3pm.gz
/usr/share/man/man1/diff.1.gz