Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How does man find git's subcommand manpages?

On my linux system, I can do "man git log" (note the space), and this will show me the manpage for git-log(1) (with a dash), as expected.

On my MacOSX machine, "man git log" only shows the manual page for git(1).

How does the linux man know that the two arguments "git" and "log" should be combined to find the "git-log" manpage? How would I get the same result in OSX?

like image 940
John de Largentaye Avatar asked Sep 23 '15 18:09

John de Largentaye


1 Answers

This is a feature of the particular implementation of man used on many Linux systems. Referring to the documentation (for man), it is mentioned in the description of the --no-subpages option:

--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.

Other implementations of man can do different things. For instance (not well documented, but there if you study it), a quick check for man git status on OSX El Capitan shows it tries to find a manual page for status. However, man git-status gives a manual page.

like image 193
Thomas Dickey Avatar answered Nov 14 '22 10:11

Thomas Dickey