Ubuntu: How do I search for `!` (exclamation mark) in a manual page?


I want to get the explanation for ! option (which means exclude) in find command in the man find.

And then I press / and shift + 1 , a Non-match popped out, instead of ! So my question is how to search for ! in a manpage?



The default man pager is less. If you look at less's help (press h while in it), you'll see:

                          SEARCHING      /pattern          *  Search forward for (N-th) matching line.    ?pattern          *  Search backward for (N-th) matching line.    n                 *  Repeat previous search (for N-th occurrence).    N                 *  Repeat previous search in reverse direction.    ESC-n             *  Repeat previous search, spanning files.    ESC-N             *  Repeat previous search, reverse dir. & spanning files.    ESC-u                Undo (toggle) search highlighting.    &pattern          *  Display only matching lines          ---------------------------------------------------          A search pattern may be preceded by one or more of:          ^N or !  Search for NON-matching lines.  

Or in man less:

/pattern        Search forward in the file for the N-th line containing the pat‐        tern.  N defaults to 1.  The pattern is a regular expression, as        recognized  by  the  regular expression library supplied by your        system.  The search starts at the first line displayed (but  see        the -a and -j options, which change this).          Certain  characters  are  special if entered at the beginning of        the pattern; they modify the type of search rather  than  become        part of the pattern:          ^N or !               Search for lines which do NOT match the pattern.  

So, a pattern of just ! is an empty pattern (which matches anything) negated - so nothing will match it.

You'll have to escape the significance of ! at the start of a pattern, by either using a backslash (\!), or otherwise making it not the first character of the regex (/[!], for example).

The other way is to use grep:

$ man find | grep !         with  `-', or the argument `(' or `!'.  That argument and any following         ! expr True  if  expr  is false.  This character will also usually need                Same as ! expr, but not POSIX compliant.         The POSIX standard specifies parentheses `(', `)', negation `!' and the         find /sbin /usr/sbin -executable \! -readable -print         find . -perm -444 -perm /222 ! -perm /111         find . -perm -a+r -perm /a+w ! -perm /a+x         -perm  /222 or -perm /a+w) but are not executable for anybody ( ! -perm         /111 and ! -perm /a+x respectively).         find . -name .snapshot -prune -o \( \! -name *~ -print0 \)|  


You need to type \ before you type !, so that it will not be interpreted as a negation regular expression in search.


Another way to do this:

man --html=firefox find  

After the manpage opens in firefox, press CTRL + F to search for any character.

Note:If u also have question or solution just comment us below or mail us on toontricks1994@gmail.com
Next Post »