The whatis command is used to fetch a one-line description of the specified command from the manual pages.
The search query (command) you will use as an argument to get the description will be looked up in the index database maintained by the “maindb” program.
|Description||Whatis (One-Line Command Defination)|
|Root or Sudo Privileges||Yes (for database update)|
|Host System and Architecture||Ubuntu 22.10 (x64)|
|OS Compatibility||Ubuntu, Manjaro, Fedora, etc.|
|Discussed Tools in this Article|
Syntax of the Whatis Command
The whatis command takes two arguments: one is the option, and the other is the keyword.
$ whatis [OPTION] [KEYWORD]
You can specify multiple keywords to get a description by using a space as a separator.
Whatis: returns all commands as “nothing appropriate”
While using the whatis command, if it returns all the commands’ output as “nothing appropriate“, then execute the following command to regenerate the database indexes with sudo.
$ sudo mandb
After the database indexes are generated again, check the description of any command.
Fetching Single or Multiple Commands Description
Specify the tool or command name as an argument to get the one line description from the manual page.
$ whatis pwd pwd (1) - print name of current/working directory
The above pwd command is used as an argument to get the description.
If you want to fetch multiple command descriptions, like Nano and Vim, then specify each of them with a space as a separator.
$ whatis nano vim nano (1) - Nano's ANOther editor, inspired by Pico vim (1) - Vi IMproved, a programmer's text editor
Also Read: Beginners Guide for Which Command in Linux
Displaying the Command Debugging Information
Use the “
-d” or “
--debug” flag and specify the command to get the descriptive debugging information that includes the compilation paths, find search path, warning, name, section, id, mtime, and many more.
$ whatis -d nano 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'.
The above command will give you comprehensive debugging information for the nano command (replace with your command).
Displaying the Command Verbose Information
Use the “
-v” or “
--verbose” flag to get the specified command’s verbose information.
$ whatis -v nano nano (1) - Nano's ANOther editor, inspired by Pico
Interpreting Each Keyword as a Regex
-r” or “
--regex” flag will interpret each name as a regular expression by searching for the match of the specified name rigorously on any part of the manual page.
$ whatis -r "^na" NAN (3) - floating-point constants name_to_handle_at (2) - obtain handle for a pathname and open file via a handle namei (1) - follow a pathname until a terminal point is found namespace.conf (5) - the namespace configuration file namespaces (7) - overview of Linux namespaces nan (3) - return 'Not a Number' nanf (3) - return 'Not a Number' nanl (3) - return 'Not a Number' nano (1) - Nano's ANOther editor, inspired by Pico nanorc (5) - GNU nano's configuration file
The above command will return all the results that start with the “na” keyword.
Interpreting Each Keyword as a Pattern Containing Shell Style Wild Cards
Use the “
-w” or “
--wildcard” to interpret each keyword as a pattern containing shell style wildcards.
It will check each keyword for a match from the entire manual page, making the search slower to return the results.
$ whatis -w nano nano (1) - Nano's ANOther editor, inspired by Pico
Do Not Trim the Output to the Terminal Width
If you reduce your terminal width, the description will be trimmed with “…” as shown.
$ whatis -f nano nano (1) - Nano's ANOther editor, i...
To avoid truncating the output to the terminal width, use the “
-l” or “
--long” flag with your argument.
$ whatis -l nano nano (1) - Nano's ANOther editor, inspired by Pico
Searching the Keyword in the Specified Section
The manual page is divided into multiple sections; if you want to search your keyword on a specific list of sections, use the “
-s” or “
--section” or “
--sections” flag and specify each list with a comma (“,“) as a separator.
$ whatis -s 1 nano nano (1) - Nano's ANOther editor, inspired by Pico
If the keyword is not found in the specified list of sections, it will throw a “nothing appropriate” error.
$ whatis -s 3 nano nano: nothing appropriate.
Browsing Through a Different Collection of Colon-Delimited Manual Page Hierarchies
By default, whatis uses the “$MANPATH” environment variable unless the value is empty or unset; in that case, it will determine the appropriate manpath based on your “$PATH” environment variable.
To override this option, use a different set of colon-delimited manual page hierarchies to search.
$ whatis nano -M --manpath=/lib/man-db/mandb nano: nothing appropriate.
Temporarily Overriding the Determined Value
Use the “
-L” or “
--locale” flag to define the locale for this search.
$ whatis nano -L locale nano (1) - Nano's ANOther editor, inspired by Pico
Also Read: What is Exit Status Code ($?) in Linux
Exit Status of Whatis Command?
The exit status might come into use when you use the whatis in your shell script to control the follow of your script.
The whatis command has four exit statuses, followed by:
- 0 – Program successfully executed.
- 1 – Usage, syntax, or configuration file error.
- 2 – Operational error.
- 16 – Nothing matched the specified criteria.
That’s the end.
If you have questions related to this topic, feel free to ask them in the comment section.
Join The Conversation
Users are always welcome to leave comments about the articles, whether they are questions, comments, constructive criticism, old information, or notices of typos. Please keep in mind that all comments are moderated according to our comment policy.