`man git init` 如何获得正确的手册页?

`man git init` 如何获得正确的手册页?

因此,man git init在 Ubuntu 14.04 系统上输入 bash 提示符的效果似乎与 相同man git-init,只是我不太确定如何操作。

(ie )man的页面似乎不允许这种构造,除非是手册的 a ,但手册页似乎来自部分。manman mangitsection1

这是支持的未记录用法吗man?我是否误解了 的文档man?是否还有其他魔法正在发生?有人愿意解释一下吗?

答案1

的某些实现man(包括 Ubuntu 使用的实现)将搜索词中的空格替换为连字符,并尝试查找该名称下的手册页。所以man git init寻找与 相同的东西man git-init。同样,man run partsandman ntfs 3g工作(如果您的系统上有run-partsand )。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

相关内容