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 manpathpath 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 manpathpath directory /usr/sbin is in the config file
adding /usr/share/man to manpathpath directory /usr/bin is in the config file
/usr/share/man is already in the manpathpath directory /sbin is in the config file
/usr/share/man is already in the manpathpath directory /bin is in the config file
/usr/share/man is already in the manpathpath directory /usr/games is in the config file
/usr/share/man is already in the manpathpath 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 manpathpath directory /snap/bin is not in the config file
and doesn't have ../man, man, ../share/man, or share/man subdirectoriesadding 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 contentsls (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.