したがって、man git init
Ubuntu 14.04システムでbashプロンプトに入力すると同じ効果があるようですman git-init
。どうなるかはよくわかりません。
(つまり、man
ページがマニュアルでない限り、この設定は許可されていないようですが、マニュアルページはそのセクションから出ているようです。man
man man
git
section
1
これは文書化されていない使用法をサポートしていますかman
?私は文書を誤解しましたman
か?もう一つの魔法が起きているのでしょうか?誰でも説明できますか?
答え1
Ubuntuで使用される実装を含む一部の実装man
では、クエリのスペースをハイフンに置き換えて、その名前の下にマニュアルページを見つけようとします。だからman git init
こんなものを探していますman git-init
。同様man run parts
にman ntfs 3g
動作します(システムにおよび存在する場合run-parts
)。ntfs-3g
しかし、これは単語のペアに対してのみ行われるのでman git annex sync
機能しません(ただし、man git-annex sync
これは単語のペアであるため機能しますが)。
実際に2つのマニュアルページを要求した場合(例: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