How to search Linux man pages (e.g. with grep)

14.2k Views Asked by At

I'm looking for information on the -X option of curl. However, the documentation is quite lengthy and I have to scroll down for quite a long time to get to this option. Instead, I'd like to do something like

man curl | grep -X

to get the line containing "-X". (I would also do this in conjunction with the option -A 10 to get the 10 lines after the match). However, if I try this I get

grep: option requires an argument -- 'X'
Usage: grep [OPTION]... PATTERN [FILE]...
Try 'grep --help' for more information.

Any ideas on how to use grep together with man, or more generally on how to search man pages for specific lines?

3

There are 3 best solutions below

3
On BEST ANSWER

You have to tell grep that -X is not an option, but the pattern to look for:

man curl | grep -- '-X'

-- indicates the end of options. Without it, grep thinks that -X is an option.

Alternatively, you can use -e to indicate that what follows is a pattern:

man curl | grep -e '-X'

If you want to see the complete man page but skip directly to the first occurrence of -X, you can use a command line option to less:

man curl | less +/-X

Typing N repeatedly then takes you to the following occurrences.

1
On

man will implicitly open in less if you have it installed. So maybe you could read man page for less.

less actually supports search on it's own. Just press / and write what you wanna search and enter. Use n to skip to next occurrence and N for previous.

0
On

On most Linux systems, the default pager used by man is less.

If that is the case, you can search in a manpage using the / (slash) key followed by a query (here -X) and finally hit ENTER. It will highlight all cases of -X. It is of course possible that the first "hit" is not the one you want. In that case you can hit N to go to the Next hit and so browse through the entire document. In case you have jumped too far, you can use Shift+N to jump back to the previous hit.

This is not really an answer to the question how to handle this with grep, but it is simply a way to efficiently search in man.

You can read the manpage of less (man less) for further tricks on how to effectively use less to improve your experience with manpages.