From the command line for GNU man
:
man --pager="less -p ^ENVIRONMENT" man
or for BSD man
:
man -P 'less -p ^ENVIRONMENT' man
will jump to the “ENVIRONMENT” heading of the man page for man
.
Here is a handy function:
mans () { # Bash
local pages string
if [[ -n $2 ]]
then
pages=(${@:2})
string="$1"
else
pages=$1
fi
# GNU man
man ${2:+--pager="less -p \"$string\" -G"} ${pages[@]}
# BSD man
# man ${2:+-P "less -p \"$string\" -G"} ${pages[@]}
}
Examples:
Use normally:
mans bash
Go to the “DESCRIPTION” heading:
mans ^DESCRIPTION bash
Go to the “DESCRIPTION” heading of each man page in succession (press q
and Enter
to go to the next one):
mans ^DESCRIPTION bash ksh zsh
Go to the “Parameter Expansion” sub-heading (you can search for any string using regular expressions):
mans '^ *Parameter Expansion' bash
Search for the most recent regex you’ve used in Less:
mans '' bash
The match that you searched for won’t be highlighted. If you’d prefer it to be, just remove the -G
from the options to less
.
This function makes no attempt to handle the other arguments and options that man
supports.