Difference between revisions of "Man page"

From ArchWiki
Jump to: navigation, search
m (Using Local Man Pages: rm yaourt)
(Add workaround for LESS_TERMCAP environment variables affecting the env command output.)
Line 143: Line 143:
 
export LESS_TERMCAP_ue=$(printf "\e[0m")
 
export LESS_TERMCAP_ue=$(printf "\e[0m")
 
export LESS_TERMCAP_us=$(printf "\e[0;36m")
 
export LESS_TERMCAP_us=$(printf "\e[0;36m")
 +
</pre>
 +
 +
A side-effect of this is that the env command will show variables in different colors. A workaround is to also add the following:
 +
<pre>
 +
alias env="env | grep -v ^LESS_TERMCAP_"
 
</pre>
 
</pre>
  

Revision as of 12:15, 5 April 2010

Summary help replacing me
Information on man pages, along with recommendations on how to improve their usage
Language

Template:I18n entry

Man pages (abbreviation for "manual pages") are the extensive documentation that comes preinstalled with almost all substantial UNIX-like operating systems, including Arch Linux. The command used to display them is Template:Codeline.

In spite of their scope, man pages are designed to be self-contained documents, consequentially limiting themselves to referring to other man pages when discussing related subjects. This is in sharp contrast with the hyperlink-aware info files, GNU's attempt at replacing the traditional man page format.

Accessing Man Pages

To read a man page, simply enter:

$ man page_name

Manuals are sorted into several sections:

  1. General commands
  2. System calls (functions provided by the kernel)
  3. Library calls (C library functions)
  4. Special files (usually found in /dev) and drivers
  5. File formats and conventions
  6. Games
  7. Miscellaneous (including conventions)
  8. System administration commands (usually requiring root privileges) and daemons

Man pages are usually referred to by their name, followed by their section number in parentheses. Often there are multiple man pages of the same name, such as man(1) and man(7). In this case, give man the section number followed by the name of the man page, for example:

$ man 5 passwd

to read the man page on Template:Codeline, rather than the Template:Codeline utility.

Very brief descriptions of programs can be read out of man pages without displaying the whole page using the Template:Codeline command. For example, for a brief description of ls, type:

$ whatis ls

and Template:Codeline will output "list directory contents."

Format

Man pages all follow a fairly standard format, which helps in navigating them. Some sections which are often present include:

  • NAME - The name of the command and a one-line statement of its purpose.
  • SYNOPSIS - A list of the options and arguments a command takes or the parameters the function takes and its header file.
  • DESCRIPTION - A more in depth description of a command or function's purpose and workings.
  • EXAMPLES - Common examples, usually ranging from the simple to the relatively complex.
  • OPTIONS - Descriptions of each of the options a command takes and what they do.
  • EXIT STATUS - The meanings of different exit codes.
  • FILES - Files related to a command or function.
  • BUGS - Problems with the command or function that are pending repair. Also known as KNOWN BUGS.
  • SEE ALSO - A list of related commands or functions.
  • AUTHOR, HISTORY, COPYRIGHT, LICENSE, WARRANTY - Information about the program, its past, its terms of use, and its creator.

Searching manuals

Whilst the Template:Codeline utility allows users to display man pages, a problem arises when one knows not the exact name of the desired manual page in the first place! Fortunately, the Template:Codeline or Template:Codeline options can be used to search the manual page descriptions for instances of a given keyword. For example, to search for man pages related to "password":

$ man -k password

or:

$ man --apropos password

This is equivalent to calling the Template:Codeline command:

$ apropos password

The given keyword is interpreted as a regular expression by default.

Colored man pages

For some users, color-enabled man pages allow for a clearer presentation and easier digestion of the content. Given that users new to Linux are prone to spend a considerable amount of time familiarizing themselves with basic userspace tools, setting up a comfortable environment is a necessity to most.

There are two prevalent methods for achieving colored man pages: using Template:Codeline, or opting for Template:Codeline. The former is simpler to configure, at the expense of the advanced functionality that is native to Template:Codeline.

First method: using 'most'

Install Template:Package Official using pacman:

# pacman -S most

This is similar to Template:Codeline and Template:Codeline, yet allows rendering colored text in an easier way.

Edit Template:Filename, uncomment the pager definition and change it to:

DEFINE     pager     most -s

Test the new setup by typing:

$ man whatever_man_page

Modifying the color values requires editing Template:Filename (creating the file if it is not present) or editing Template:Filename for system-wide changes. Example Template:Filename:

% Color settings
color normal lightgray black
color status yellow blue
color underline yellow black
color overstrike brightblue black

Another example showing keybindings similar to Template:Codeline (jump to line is set to 'J'):

% less-like keybindings
unsetkey "^K"
unsetkey "g"
unsetkey "G"
unsetkey ":"

setkey next_file ":n"
setkey find_file ":e"
setkey next_file ":p"
setkey toggle_options ":o"
setkey toggle_case ":c"
setkey delete_file ":d"
setkey exit ":q"

setkey bob "g"
setkey eob "G"
setkey down "e"
setkey down "E"
setkey down "j"
setkey down "^N"
setkey up "y"
setkey up "^Y"
setkey up "k"
setkey up "^P"
setkey up "^K"
setkey page_down "f"
setkey page_down "^F"
setkey page_up "b"
setkey page_up "^B"
setkey other_window "z"
setkey other_window "w"
setkey search_backward "?"
setkey bob "p"
setkey goto_mark "'"
setkey find_file "E"
setkey edit "v"

Second method: using 'less'

Source: nion's blog - less colors for man pages

Alternatively, getting an approximate coloured result in manual pages with Template:Codeline is also a possibility. This method has the advantage that Template:Codeline has a bigger feature set than Template:Codeline, and that might be the preference for advanced users.

Add the following to a shell configuration file. For Bash it would be Template:Filename:

export LESS_TERMCAP_mb=$(printf "\e[1;37m")
export LESS_TERMCAP_md=$(printf "\e[1;37m")
export LESS_TERMCAP_me=$(printf "\e[0m")
export LESS_TERMCAP_se=$(printf "\e[0m")
export LESS_TERMCAP_so=$(printf "\e[1;47;30m")
export LESS_TERMCAP_ue=$(printf "\e[0m")
export LESS_TERMCAP_us=$(printf "\e[0;36m")

A side-effect of this is that the env command will show variables in different colors. A workaround is to also add the following:

alias env="env | grep -v ^LESS_TERMCAP_"

To customize the colors, see Wikipedia:ANSI escape code for reference.

Reading man pages with a browser

Instead of the standard interface, using browsers such as lynx and Firefox to view man pages allows users to reap info pages' main benefit: hyperlinked text.

Using Local Man Pages

First, install Template:Package AUR using an AUR helper of your choice. Package name:

man2html

Now, convert a man page:

$ man bash | man2html -compress -cgiurl man$section/$title.$section$subsection.html > ~/man/bash.html

Another use for Template:Codeline is exporting to raw, printer-friendly text:

$ man bash | man2html -bare > ~/bash.txt

Man also has the ability to do this on its own:

$ man -H bash

This will read your BROWSER environment variable to determine the browser. You can override this by passing the binary to the -H option.

Using Online Man Pages

There are several online databases of man pages, many of them listed on Wikipedia:Man_page#Repositories_of_manual_pages, including: