Linux whatis Command Tutorial for Beginners (5 Examples)

Man pages are one of the most useful resources when it comes to understanding command line utilities. A man page, however, contains a lot of details about the command. There may be times when you'd want to quickly know - may be in a small line or so - what a command line tool does. Well, you'll be glad to know there exists a command that's specifically built for this purpose.

In this tutorial, we will discuss the basics of the whatis command using some easy to understand examples. But before we do that, it's worth mentioning that all examples here have been tested on an Ubuntu 18.04 LTS machine.

Linux whatis command

The whatis command in Linux lets you display one line manual page descriptions. Following is its syntax:

whatis  [-dlv?V]  [-r|-w]  [-s  list]  [-m  system[,...]] [-M path] [-L
       locale] [-C file] name ...

And here's how the tool's man page explains it:

       Each manual page has a short description available within  it.   whatis
       searches  the  manual  page names and displays the manual page descrip?
       tions of any name matched.

       name may contain wildcards (-w) or be a regular expression (-r).  Using
       these  options, it may be necessary to quote the name or escape (\) the
       special characters to stop the shell from interpreting them.

Following are some Q&A styled examples that should give you a better idea on how the whatis command works.

Q1. How to use the whatis command?

Basic usage is pretty simple. Just pass a tool name as input, and whatis will search and display a one line description for it.

Here's an example:

whatis ls

The following output was produced by the aforementioned command:

ls (1)               - list directory contents

Q2. How to get information for more than one commands?

This is also pretty easy - just pass the tool names as input to whatis. Following is an example:

whatis ls cp rm mv

And here's the output produced by this command:

ls (1)               - list directory contents
cp (1)               - copy files and directories
rm (1)               - remove files or directories
mv (1)               - move (rename) files

So you can see the whatis command handles multiple input easily.

Q3. Can we use wildcards with whatis?

Yes, it's possible to use wildcards with the whatis command. The -w command line option enables this feature.

Here's an example;

whatis -w 'who*'

And following is the output:

who (1)              - show who is logged on
whoami (1)           - print effective userid

Q4. How to make whatis produce debugging information?

The -d option makes the whatis command produce debugging information in output. Needless to say, this option is mainly for developers.

Here's an example:

whatis -d ls

And following is the output produced by this command:

From the config file /etc/manpath.config:

Mandatory mandir `/usr/man'.
Mandatory mandir `/usr/share/man'.
Mandatory mandir `/usr/local/share/man'.
Path `/bin' mapped to mandir `/usr/share/man'.
Path `/usr/bin' mapped to mandir `/usr/share/man'.
Path `/sbin' mapped to mandir `/usr/share/man'.
Path `/usr/sbin' mapped to mandir `/usr/share/man'.
Path `/usr/local/bin' mapped to mandir `/usr/local/man'.
Path `/usr/local/bin' mapped to mandir `/usr/local/share/man'.
Path `/usr/local/sbin' mapped to mandir `/usr/local/man'.
Path `/usr/local/sbin' mapped to mandir `/usr/local/share/man'.
Path `/usr/X11R6/bin' mapped to mandir `/usr/X11R6/man'.
Path `/usr/bin/X11' mapped to mandir `/usr/X11R6/man'.
Path `/usr/games' mapped to mandir `/usr/share/man'.
Path `/opt/bin' mapped to mandir `/opt/man'.
Path `/opt/sbin' mapped to mandir `/opt/man'.
Global mandir `/usr/man', catdir `/var/cache/man/fsstnd'.
Global mandir `/usr/share/man', catdir `/var/cache/man'.
Global mandir `/usr/local/man', catdir `/var/cache/man/oldlocal'.
Global mandir `/usr/local/share/man', catdir `/var/cache/man/local'.
Global mandir `/usr/X11R6/man', catdir `/var/cache/man/X11R6'.
Global mandir `/opt/man', catdir `/var/cache/man/opt'.
Added section `1'.
Added section `n'.
Added section `l'.
Added section `8'.
Added section `3'.
Added section `2'.
Added section `3posix'.
Added section `3pm'.
Added section `3perl'.
Added section `3am'.
Added section `5'.
Added section `4'.
Added section `9'.
Added section `6'.
Added section `7'.
`/usr/man'    `'    `1'
`/usr/share/man'    `'    `1'
`/usr/local/share/man'    `'    `1'
`/bin'    `/usr/share/man'    `0'
`/usr/bin'    `/usr/share/man'    `0'
`/sbin'    `/usr/share/man'    `0'
`/usr/sbin'    `/usr/share/man'    `0'
`/usr/local/bin'    `/usr/local/man'    `0'
`/usr/local/bin'    `/usr/local/share/man'    `0'
`/usr/local/sbin'    `/usr/local/man'    `0'
`/usr/local/sbin'    `/usr/local/share/man'    `0'
`/usr/X11R6/bin'    `/usr/X11R6/man'    `0'
`/usr/bin/X11'    `/usr/X11R6/man'    `0'
`/usr/games'    `/usr/share/man'    `0'
`/opt/bin'    `/opt/man'    `0'
`/opt/sbin'    `/opt/man'    `0'
`/usr/man'    `/var/cache/man/fsstnd'    `-1'
`/usr/share/man'    `/var/cache/man'    `-1'
`/usr/local/man'    `/var/cache/man/oldlocal'    `-1'
`/usr/local/share/man'    `/var/cache/man/local'    `-1'
`/usr/X11R6/man'    `/var/cache/man/X11R6'    `-1'
`/opt/man'    `/var/cache/man/opt'    `-1'
`1'    `'    `-5'
`n'    `'    `-5'
`l'    `'    `-5'
`8'    `'    `-5'
`3'    `'    `-5'
`2'    `'    `-5'
`3posix'    `'    `-5'
`3pm'    `'    `-5'
`3perl'    `'    `-5'
`3am'    `'    `-5'
`5'    `'    `-5'
`4'    `'    `-5'
`9'    `'    `-5'
`6'    `'    `-5'
`7'    `'    `-5'

path directory /usr/local/sbin is in the config file
adding /usr/local/man to manpath
adding /usr/local/share/man to manpath

path directory /usr/local/bin is in the config file
/usr/local/man is already in the manpath
/usr/local/share/man is already in the manpath

path directory /usr/sbin is in the config file
adding /usr/share/man to manpath

path directory /usr/bin is in the config file
/usr/share/man is already in the manpath

path directory /sbin is in the config file
/usr/share/man is already in the manpath

path directory /bin is in the config file
/usr/share/man is already in the manpath

path directory /usr/games is in the config file
/usr/share/man is already in the manpath

path directory /usr/local/games is not in the config file
but does have a ../man, man, ../share/man, or share/man subdirectory
/usr/local/man is already in the manpath

path directory /snap/bin is not in the config file
and doesn't have ../man, man, ../share/man, or share/man subdirectories

adding mandatory man directories

warning: /usr/man: No such file or directory
/usr/share/man is already in the manpath
/usr/local/share/man is already in the manpath
add_nls_manpaths(): processing /usr/local/man:/usr/local/share/man:/usr/share/man
checking for locale en_IN
adding /usr/local/man to manpathlist
adding /usr/local/share/man to manpathlist
adding /usr/share/man to manpathlist
adding /usr/local/man to manpathlist
adding /usr/local/share/man to manpathlist
adding /usr/share/man to manpathlist
Removing duplicate manpath entry /usr/local/share/man (1) -> /usr/local/man (0)
Removing duplicate manpath entry /usr/local/man (2) -> /usr/local/man (0)
Removing duplicate manpath entry /usr/local/share/man (2) -> /usr/local/man (0)
Removing duplicate manpath entry /usr/share/man (2) -> /usr/share/man (1)
final search path = /usr/local/man:/usr/share/man
path=/usr/local/man
warning: can't read the fallback whatis text database /usr/local/man/whatis
path=/usr/share/man
name:      ls
sec. ext:  1
section:   1
comp. ext: gz
id:        A
mtime:     1516268629.000000000
pointer:   -
filter:    -
whatis:    list directory contents

ls (1)               - list directory contents
hashtable_free: 1 entries, 1 (100%) unique

Q5. How whatis performs its searches?

Here's a relevant excerpt from the man page:

       index databases are used during the search,  and  are  updated  by  the
       mandb  program.   Depending  on your installation, this may be run by a
       periodic cron job, or may need to be  run  manually  after  new  manual
       pages  have  been installed.  To produce an old style text whatis data?
       base from the relative index database, issue the command:

       whatis -M manpath -w '*' | sort > manpath/whatis

       where manpath is a manual page hierarchy such as /usr/man.

Conclusion

If you are too much into the Linux command line tools, or your daily work involves dealing with man pages, the whatis command may be a helpful tool for you. We've already discussed some whatis command line options here. For more info, head to the tool's man page.

Share this page:

Suggested articles

0 Comment(s)

Add comment