17

Is there a way to search man pages case-insensitively? Using the '/' search feature matches exact case.

  • 5
    There is no such thing like “search in man page”. Actually it is search in the pager which displays the man page. Depends on the man implementation you use and the pager you prefer, but I have export MANPAGER='less -I'. – manatwork Nov 15 '13 at 15:58
  • @manatwork's point is that -I means --IGNORE-CASE, even if the pattern contains uppercase letters, see man less. – terdon Nov 15 '13 at 16:19
17

When no other pager is specified, man uses less to display man pages.

The other answers that involve changing the pager command line are correct, but you can also type -i while less is running. From the less man page:

- Followed by one of the command line option letters (see OPTIONS below), this will change the setting of that option and print a message describing the new setting.

So typing -i while in less changes the setting in the same way that specifying it on the command line would. I got the hint that this would work from How do you do a case insensitive search using a pattern modifier using less, then found the explanation in the man page.

13

Only if you use caps, not if you just use lower case letters. For example, run man bash and try:

  • /invoc <== case insensitive
  • /Invoc <== case sensitive
  • /INVOC <== case sensitive

As @manatwork poited out in the comments, you can also control this behavior by adding export MANPAGER='less -I' to your ~/.profile. The MANPAGER variable defines which program is used with the man command. The -Imeans (from man less):

   -I or --IGNORE-CASE
          Like -i, but searches ignore case even if the  pattern  contains
          uppercase letters.

Other relevant options are (this one is usually on by default):

   -i or --ignore-case
          Causes searches to ignore case; that is, uppercase and lowercase
          are  considered identical.  This option is ignored if any upper‐
          case letters appear in the search pattern; in other words, if  a
          pattern  contains  uppercase  letters, then that search does not
          ignore case.

So, if you export MANPAGER="less -I"; man bash, you should be able to search for /iNvOc in a case-insensitive way.

  • +1 Do you happen to know how one can force case sensitivity on an all-lowercase search pattern? – Joseph R. Nov 15 '13 at 15:54
  • @JosephR. man bash | grep -C 5 invoc but that's cheating. – terdon Nov 15 '13 at 15:55
  • Yeah, not exactly the answer I was looking for. This may be worth another question on its own... – Joseph R. Nov 15 '13 at 15:58
  • 1
    @JosephR. apparently, you can compile less to use PCREs which might do the trick. – terdon Nov 15 '13 at 16:01
  • The case-insensitive-for-lower-case only appears to be true if "-i" is specified on the command line. Without it, all searches are case sensitive. – FazJaxton Nov 16 '13 at 16:22

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.