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 answers

3
Benjamin W. 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
gjask 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
willeM_ Van Onsem 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.