`man git init`正しいマニュアルページを取得するには?

`man git init`正しいマニュアルページを取得するには?

したがって、man git initUbuntu 14.04システムでbashプロンプトに入力すると同じ効果があるようですman git-init。どうなるかはよくわかりません。

(つまり、manページがマニュアルでない限り、この設定は許可されていないようですが、マニュアルページはそのセクションから出ているようです。manman mangitsection1

これは文書化されていない使用法をサポートしていますかman?私は文書を誤解しましたmanか?もう一つの魔法が起きているのでしょうか?誰でも説明できますか?

答え1

Ubuntuで使用される実装を含む一部の実装manでは、クエリのスペースをハイフンに置き換えて、その名前の下にマニュアルページを見つけようとします。だからman git initこんなものを探していますman git-init。同様man run partsman ntfs 3g動作します(システムにおよび存在する場合run-parts)。ntfs-3g

しかし、これは単語のペアに対してのみ行われるのでman git annex sync機能しません(ただし、man git-annex syncこれは単語のペアであるため機能しますが)。

実際に2つのマニュアルページを要求した場合(例:man git bashgitや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

関連情報