25

I'm writing a man page for a program that I am packaging. How can I display the manpage file that I created, to check if it's all right? Is there a way to pass my file directly to the man command instead of having it search the installed manpages by name?

I tried doing things like man myprog.1 and man < myprog.1 but in both cases I got an error saying that the man page could not be found.

hugomg
  • 5,747
  • 4
  • 39
  • 54

4 Answers4

37

man has an option to read a local file: -l

-l, --local-file

Activate `local' mode. Format and display local manual files instead of searching through the system's manual collection. Each manual page argument will be interpreted as an nroff source file in the correct format. No cat file is produced.

If '-' is listed as one of the arguments, input will be taken from stdin. When this option is not used, and man fails to find the page required, before displaying the error message, it attempts to act as if this option was supplied, using the name as a filename and looking for an exact match.

So you can preview your work in progress with:

man -l /path/to/manfile.1

jasonwryan
  • 73,126
22

The 'old school' way, for systems that pre-date the -l option, is

nroff -man filename | more -s
Flup
  • 8,145
17

I've used simply

man ./path/to/man.1

You need to include a slash in the path, otherwise it searches the system directories. Works on the Linux and OS X systems I have (the latter doesn't have -l).

$ cd /tmp
$ cp /usr/share/man/man1/ls.1 .
$ man ls.1
No manual entry for ls.1
$ man ./ls.1     # works
ilkkachu
  • 138,973
2

On Solaris, the -M switch to man will override the search-path for manpages:-

man -M path/to/man myprog

Your manpage file must reside in an appropriate subdirectory corresponding to the section and mark-up language, eg: path/to/man/man1/myprog.1 for an nroff-manpage in section 1.

crw
  • 187