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


52

因此,似乎man git init在Ubuntu 14.04系统上输入bash提示符与相同man git-init,只是我不太确定该怎么做。

man换页man(即man man)似乎并没有允许这种结构,除非gitsection手动的,但该男子页似乎来自部分1

这是不受支持的用法man吗?我误解了的文档man吗?还有其他魔术吗?有人在乎解释吗?


似乎git-init可能只是它的包装git init
Jeff Schaller

Answers:


71

的某些实现(man包括Ubuntu所使用的实现)将其搜索词中的空格替换为连字符,并尝试在该名称下查找手册页。因此man git init寻找与相同的事物man git-init。同样,man run partsman ntfs 3g工作(如果你有run-partsntfs-3g您的系统上)。

但是,它仅对单词对执行此操作,因此man git annex sync不起作用(尽管man git-annex sync可以,因为这又是单词对)。

实际上,当您需要两个手册页(例如,man git bash同时查看git和bash手册页)时,man实际上首先会尝试查找一个手册git-bash页。如果使用启用它,则可以在调试输出中看到它-d

该man功能称为“子页面”,您可以阅读在man-db中实现子页面源代码(感谢Stephen Kitt)。在手册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

这似乎在CentOS 6.6上不起作用。仅是Ubuntu吗?
通配符

1
@Wildcard哪一部分似乎不起作用?只要CentOS使用man-db(还有其他man实现),并且未禁用子页面(例如with --no-subpages),它就应该起作用。我正在使用Debian,所以它肯定不仅仅是Ubuntu。
derobert

2
重要的是,这对于的特定实现是唯一的man。这绝不是普遍的或特别的普遍性。
chepner '16
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.