Linux man command

Updated: 11/06/2021 by Computer Hope
man command

On Linux and other Unix-like operating systems, man is the interface used to view the system's reference manuals.

Description

man is the system's manual viewer; it can be used to display manual pages, scroll up and down, search for occurrences of specific text, and other useful functions.

Each argument given to man is normally the name of a program, utility or function. The manual page associated with each of these arguments is then found and displayed. A section number, if provided, will direct man to look only in that section of the manual. The default action is to search in all of the available sections, following a pre-defined order and to show only the first page found, even if page exists in several sections.

Syntax

man [-C file] [-d] [-D] [--warnings[=warnings]] [-R encoding] [-L locale] 
    [-m system[,...]] [-M path] [-S list] [-e extension] [-i|-I] 
    [--regex|--wildcard] [--names-only] [-a] [-u] [--no-subpages] [-P pager] 
    [-r prompt] [-7] [-E encoding] [--no-hyphenation] [--no-justification] 
    [-p string] [-t] [-T[device]] [-H[browser]] [-X[dpi]] [-Z] 
    [[section] page ...] ...
man -k [apropos options] regexp ...
man -K [-w|-W] [-S list] [-i|-I] [--regex] [section] term ...
man -f [whatis options] page ...
man -l [-C file] [-d] [-D] [--warnings[=warnings]] [-R encoding] 
    [-L locale] [-P pager] [-r prompt] [-7] [-E encoding] [-p string] [-t] 
    [-T[device]] [-H[browser]] [-X[dpi]] [-Z] file ...
man -w|-W [-C file] [-d] [-D] page ...
man -c [-C file] [-d] [-D] page ...
man [-hV]

General options

-h, --help Print a help message and exit.
-V, --version Display version information and exit.
-C file,
--config-file=file
Use configuration file file rather than the default of ~/.manpath.
-d, --debug Print debugging information.
-D, --default This option, when used, is normally specified as the first option; it resets man's behaviour to its default. Its use is to reset those options that may have been set in $MANOPT. Any options that follow -D will have their usual effect.
--warnings[=warnings] Enable warnings from the groff text formatter. This may be used to perform sanity checks on the source text of manual pages. The warnings is a comma-separated list of warning names; if it is not supplied, the default is "mac". See the "Warnings" node in the groff info page for a list of available warning names.

Options: Main modes of operation

-f, --whatis Equivalent to the whatis command; displays a short description from the manual page, if available.
-k, --apropos Equivalent to the apropos command; Search the short manual page descriptions for keywords and display any matches.
-K,
--global-apropos
Search for text in all manual pages. This option is a brute-force search, and is likely to take some time; if you can, you should specify a section to reduce the number of pages that need to be searched. Search terms may be simple strings (the default), or regular expressions if the --regex option is used.
-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 a dash ('-') 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 file name and looking for an exact match.
-w, --where,
--location
Don't actually display the manual pages; instead print the location(s) of the source nroff files that would be formatted.
-W, --where-cat,
--location-cat
Don't actually display the manual pages, but do print the location(s) of the cat files that would be displayed. If -w and -W are both specified, print both, separated by a space.
-c, --catman This option is not for general use and should only be used by the catman program.
-R encoding,
--recode=encoding
Instead of formatting the manual page in the usual way, output its source converted to the specified encoding. If you already know the encoding of the source file, you can also use manconv directly. However, this option allows you to convert several manual pages to a single encoding without having to explicitly state the encoding of each, provided that they were already installed in a structure similar to a manual page hierarchy.

Options: finding manual pages

-L locale, --locale=locale man will normally determine your current locale by a call to the C function setlocale which checks the values of various environment variables, possibly including $LC_MESSAGES and $LANG. To temporarily override the determined value, use this option to supply a locale string directly to man. Note that it will not take effect until the search for pages actually begins. Output such as the help message will always be displayed in the initially determined locale.
-m system[,...],
--systems=system[,...]
If this system has access to other operating system's manual pages, they can be accessed using this option. To search for a manual page from (for example) the "NewOS" manual page collection, use the option -m NewOS.

The system specified can be a combination of comma delimited operating system names. To include a search of the native operating system's manual pages, include the system name man in the argument string. This option will override the $SYSTEM environment variable.
-M path, --manpath=path Specify an alternate manpath to use. This option overrides the $MANPATH environment variable and causes option -m to be ignored.

A path specified as a manpath must be the root of a manual page hierarchy structured into sections as described in the man-db manual (under "The manual page system"). To view manual pages outside such hierarchies, see the -l option.
-S list, -s list, --sections=list The list is a colon- or comma-separated list of `order specific' manual sections to search. This option overrides the $MANSECT environment variable. (The -s spelling is for compatibility with System V.)
-e sub-extension,
--extension=sub-extension
Some systems incorporate large packages of manual pages, such as those that accompany the Tcl package, into the main manual page hierarchy. To get around the problem of having two manual pages with the same name such as exit, the Tcl pages were usually all assigned to section l (lowercase L). However, it is now possible to put the pages in the correct section, and to assign a specific "extension" to them, in this case, exit(3tcl). Under normal operation, man displays exit in preference to exit(3tcl). To negotiate this situation and to avoid having to know which section the page you require resides in, it is now possible to give man a sub-extension string indicating the package of the page. Using the above example, supplying the option -e tcl to man will restrict the search to pages having an extension of *tcl.
-i, --ignore-case Ignore case when searching for manual pages. This option is the default.
-I, --match-case Search for manual pages case-sensitively.
--regex Show all pages with any part of either their names or their descriptions matching each page argument as a regular expression, as with apropos. Since there is usually no reasonable way to pick a "best" page when searching for a regular expression, this option implies -a.
--wildcard Show all pages with any part of either their names or their descriptions matching each page argument using shell-style wildcards, as with apropos --wildcard. The page argument must match the entire name or description, or match on word boundaries in the description. Since there is usually no reasonable way to pick a "best" page when searching for a wildcard, this option implies -a.
--names-only If the --regex or --wildcard option is used, match only page names, not page descriptions, as with whatis. Otherwise, this option has no effect.
-a, --all By default, man will exit after displaying the most suitable manual page it finds. Using this option forces man to display all the manual pages with names that match the search criteria.
-u, --update This option causes man to perform an inode-level consistency check on its database caches to ensure that they are an accurate representation of the filesystem. It will only have a useful effect if man is installed with the setuid bit set.
--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, the command:

man -aw git diff
displays the manual page:

/usr/share/man/man1/git-diff.1.gz
To disable this behaviour, use the --no-subpages option.

For example:

man -aw --no-subpages git diff
will instead show the manual pages for both git and diff:

/usr/share/man/man1/git.1.gz /usr/share/man/man3/Git.3pm.gz /usr/share/man/man1/diff.1.gz

Options: Controlling formatted output

-P pager, --pager=pager Specify which output pager to use. By default, man uses pager -s. This option overrides the $MANPAGER environment variable, which in turn overrides the $PAGER environment variable. It is not used in conjunction with -f or -k.

The value may be a simple command name or a command with arguments, and may use shell quoting (backslashes, single quotes, or double quotes). It may not use pipes to connect multiple commands; if you need that, use a wrapper script, which may take the file to display either as an argument or on standard input.
-r prompt,
--prompt=prompt
If a recent version of less is used as the pager, man attempts to set its prompt and some sensible options. The default prompt looks like:
Manual page name(sec) line x
...where name denotes the manual page name, sec denotes the section it was found under and x the current line number. This is achieved using the $LESS environment variable.

Supplying -r with a string overrides this default. The string may contain the text $MAN_PN which is expanded to the name of the current manual page and its section name surrounded by "(" and ")". The string used to produce the default could be expressed as

\ Manual\ page\ \$MAN_PN\ ?ltline\ %lt?L/%L.:byte\ %bB?s/%s..?\ (END):?pB\ %pB\\%..(press h for help or q to quit)
It is broken into three lines here for the sake of readability only. For its meaning see the manual for less.

The prompt string is first evaluated by the shell. All double quotes, back-quotes and backslashes in the prompt must be escaped by a preceding backslash. The prompt string may end in an escaped $ which may be followed by further options for less. By default, man sets the -ix8 options.

To override man's prompt string processing completely, use the $MANLESS environment variable described below.
-7, --ascii

When viewing a pure ASCII manual page on a 7-bit terminal or terminal emulator, some characters may not display correctly when using the latin1 device description with GNU nroff. This option allows pure ASCII manual pages to be displayed in ASCII with the latin1 device. It will not translate any latin1 text. The following table shows the translations performed: some parts of it may only be displayed properly when using GNU nroff's latin1 device.

description octal latin1 ASCII
continuation hyphen 255 -
bullet (middle dot) 267 · o
acute accent 264 ´ '
multiplication sign 327 × x
This table is included in the man manpage. If these characters are viewed inside your terminal and the latin1 column displays correctly, your terminal may be set up for latin1 characters and this option is not necessary. If the latin1 and ASCII columns are identical, then either you are viewing the man manual page using this option or man did not format this page using the latin1 device description for some reason. If the latin1 column is missing or corrupt, you may need to view manual pages with this option specified.

This option is ignored when using options -t, -H, -T, or -Z and may be useless for versions of nroff other than GNU's.
-E encoding,
--encoding=encoding
Generate output for a character encoding other than the default. For backward compatibility, encoding may be an nroff device such as ascii, latin1, or utf8 as well as a true character encoding such as UTF-8.
--no-hyphenation,
--nh
Normally, nroff will automatically hyphenate text at line breaks even in words that do not contain hyphens, if it is necessary to do so to lay out words on a line without excessive spacing. This option disables automatic hyphenation, so words will only be hyphenated if they already contain hyphens.

If you are writing a manual page and want to prevent nroff from hyphenating a word at an inappropriate point, do not use this option, but consult the nroff documentation instead; for instance, you can put "\%" inside a word to indicate that it may be hyphenated at that point, or put "\%" at the start of a word to prevent it from being hyphenated.
--no-justification, --nj Normally, nroff will automatically justify text to both margins. This option disables full justification, leaving justified only to the left margin, sometimes called "ragged-right" text.

If you are writing a manual page and want to prevent nroff from justifying certain paragraphs, do not use this option, but consult the nroff documentation instead; for instance, you can use the ".na", ".nf", ".fi", and ".ad" requests to temporarily disable adjusting and filling.
-p string,
--preprocessor=string
Specify the sequence of preprocessors to run before nroff or troff/groff. Not all installations will have a full set of preprocessors. Some of the preprocessors and the letters used to designate them are: eqn (e), grap (g), pic (p), tbl (t), vgrind (v), refer (r). This option overrides the $MANROFFSEQ environment variable. zsoelim is always run as the very first preprocessor.
-t, --troff Use groff -mandoc to format the manual page to standard output. This option is not required in conjunction with -H, -T, or -Z.
-T[device],
--troff-device[=device]
This option is used to change groff (or possibly troff's) output to be suitable for a device other than the default. It implies -t. Examples include dvi, latin1, ps, utf8, X75 and X100.
-H[browser],
--html[=browser]
This option will cause groff to produce HTML output, and will display that output in a web browser. The choice of browser is determined by the optional browser argument if one is provided, by the $BROWSER environment variable, or by a compile-time default if that is unset (usually lynx). This option implies -t, and will only work with GNU troff.
-X[dpi],
--gxditview[=dpi]
This option displays the output of groff in a graphical window using the gxditview program. The dpi (dots per inch) may be 75, 75-12, 100, or 100-12, defaulting to 75; the -12 variants use a 12-point base font. This option implies -T with the X75, X75-12, X100, or X100-12 device, respectively.
-Z, --ditroff groff will run troff and then use an appropriate post-processor to produce output suitable for the chosen device. If groff -mandoc is groff, this option is passed to groff and will suppress the use of a post-processor. It implies -t.

Section numbers

The section numbers of the manual are listed below. While reading documentation, if you see a command name followed by a number in parentheses, the number refers to one of these sections. For example, man is the documentation of man found in section number 1. Some commands may have documentation in more than one section, so the numbers after the command name may direct you to the correct section to find a specific type of information.

The section numbers, and the topics they cover, are as follows:

section # topic
1 Executable programs or shell commands
2 System calls (functions provided by the kernel)
3 Library calls (functions within program libraries)
4 Special files (usually found in /dev)
5 File formats and conventions eg /etc/passwd
6 Games
7 Miscellaneous (including macro packages and conventions), e.g., man, groff
8 System administration commands (usually only for root)
9 Kernel routines [Non standard]

Exit status

When it terminates, man will return one of the following exit status:

0 Returned upon successful program execution.
1 Returned if there was a usage, syntax, or configuration file error.
2 Returned if there was an operational error.
3 Returned if a child process returned a non-zero exit status.
16 Returned if one or more of the pages, files, or keywords searched for did not exist or was not matched.

Environment

man makes use of the following environment variables:

MANPATH If $MANPATH is set, its value is used as the path to search for manual pages.
MANROFFOPT The contents of $MANROFFOPT are added to the command line every time man invokes the formatter (nroff, troff, or groff).
MANROFFSEQ If $MANROFFSEQ is set, its value is used to determine the set of preprocessors to pass through each manual page. The default preprocessor list is system-dependent.
MANSECT If $MANSECT is set, its value is a colon-delimited list of sections and it is used to determine which manual sections to search and in what order.
MANPAGER, PAGER If $MANPAGER or $PAGER is set ($MANPAGER is used in preference), its value is used as the name of the program used to display the manual page. By default, pager -s is used.

The value may be a simple command name or a command with arguments, and may use shell quoting (backslashes, single quotes, or double quotes). It may not use pipes to connect multiple commands; if you need that, use a wrapper script, which may take the file to display either as an argument or on standard input.
MANLESS If $MANLESS is set, man will not perform any of its usual processing to set up a prompt string for the less pager. Instead, the value of $MANLESS will be copied verbatim into $LESS. For example, if you want to set the prompt string unconditionally to "my prompt string", set $MANLESS to ‘-Psmy prompt string’.
BROWSER If $BROWSER is set, its value is a colon-delimited list of commands, each of which in turn is used to try to start a web browser for man --html. In each command, %s is replaced by a file name containing the HTML output from groff, %% is replaced by a single percent sign (%), and %c is replaced by a colon (:).
SYSTEM If $SYSTEM is set, it will have the same effect as if it had been specified as the argument to the -m option.
MANOPT If $MANOPT is set, it will be parsed prior to man's command line and is expected to be in a similar format. As all of the other man specific environment variables can be expressed as command line options, and are thus candidates for being included in $MANOPT it is expected that they will become obsolete. Note: all spaces that should be interpreted as part of an option's argument must be escaped (preceded with a backslash).
MANWIDTH If $MANWIDTH is set, its value is used as the line length for which manual pages should be formatted. If it is not set, manual pages will be formatted with a line length appropriate to the current terminal (using an ioctl if available, the value of $COLUMNS, or falling back to 80 characters if neither is available). cat pages will only be saved when the default formatting can be used, that is when the terminal line length is between 66 and 80 characters.
MAN_KEEP_FORMATTING Normally, when output is not being directed to a terminal (such as to a file or a pipe), formatting characters are discarded to make it easier to read the result without special tools. However, if $MAN_KEEP_FORMATTING is set to any non-empty value, these formatting characters are retained. This may be useful for wrappers around man that can interpret formatting characters.
MAN_KEEP_STDERR Normally, when output is being directed to a terminal (usually to a pager), any error output from the command used to produce formatted versions of manual pages is discarded to avoid interfering with the pager's display. Programs such as groff often produce relatively minor error messages about typographical problems such as poor alignment, which are unsightly and generally confusing when displayed along with the manual page. However, you might want to see them anyway, so if $MAN_KEEP_STDERR is set to any non-empty value, error output will be displayed as usual.
LANG, LC_MESSAGES Depending on system and implementation, either or both of $LANG and $LC_MESSAGES will be interrogated for the current message locale. man will display its messages in that locale (if available).

Files

The following files are used by man:

/etc/manpath.config The man-db configuration file.
/usr/share/man A global manual page hierarchy.
/usr/share/man/index.(bt|db|dir|pag) A traditional global index database cache.
/var/cache/man/index.(bt|db|dir|pag) An FHS compliant global index database cache.

Examples

man man

View the manual page for the man command.

man --nh --nj man

View the manual page for man, with no hyphenated words or justified lines.

apropos — Search the manual pages for a keyword or regular expression.
info — Read Info documents.
whatis — Display short manual page descriptions.