apropos, whatis and makewhatis
This month's column looks at three very useful and related commands, apropos, whatis and makewhatis. To understand why these commands are so valuable, it helps to grasp the underlying philosophy that continues to guide evolving versions of Unix, including Linux. That philosophy remains one of creating small, portable, specialized programs that perform one task well, and that can receive input from, and redirect output to, other programs.
This philosophy has created a proliferation of small, powerful, but extremely limited programs. Just do a directory listing of /usr/bin, and you'll see what I mean. And that's not all of them. You could sit down and run every one of them to see what they do. Or you could begin reading the hundreds of man pages available describing these commands. No matter which method you use to learn the commands, in the end, you'd still probably forget most of them due to the sheer volume. So how do you know which of the hundreds of programs available can do the job for you? Or which of the commands will be best suited to your particular needs? apropos and whatis come to the rescue.
Apropos, as defined by the dictionary, means “apt; relevant; suited to the occasion, though not strictly belonging to the subject under consideration.” These definitions, particularly the last one, are totally apropos. apropos will list programs with a one line synopsis of each program based on a keyword search. whatis is similar, but even more constrained; i.e., the actual command is given as the argument, rather than a keyword, so there is less output.
Before we look at how apropos can help us, we need to ensure that the database apropos uses exists and is up-to-date. Enter makewhatis. This command creates the whatis database files used by both apropos and whatis. They are located in each ../man directory and catalog the manual files in each of the individual cat? and man? subdirectories.
To create the whatis database files, you need to invoke makewhatis as the root user. Non-privileged users normally do not have write permission in the ../man directories to create the whatis database files. A second clue to the nature of makewhatis is its location. makewhatis is usually found in the /usr/sbin subdirectory, indicating its classification as a system administration program. Ordinarily only root's PATH environment variable contains the sbin directories. makewhatis may be invoked by root's crontab file and run on a recurring basis, and you may wish to include it if it isn't already there. But that is beyond the scope of this article. If you can log in only as a non-privileged user, or are sure your whatis database files exist, you may want to skip ahead to the next section. If you begin to see <keyword>: nothing appropriate, you'll need to have your system administrator run makewhatis.
Running makewhatis for the first time will take several minutes, so be patient (go have a cup of coffee). Run by itself, makewhatis will create the whatis database file in /usr/man. To ensure that all the man locations are cataloged, use the -w switch. This will read the file /etc/man.config and use the man paths it specifies. Or you may add paths following the -w switch and they will be used as well. If you are want to know which paths will be cataloged, type man --path, and you will see where /etc/man.config believes your manuals are. If you have other paths, they should be added to your man.config file.
Another makewhatis option is -c. This switch, when used alone, will catalog only the ../man/cat entries listed in man.config. Other cat subdirectories may be added following the -c switch, and they will also be cataloged.
You may, however, want only to update the whatis databases with newly added commands. Use the -u switch to update the database files. This switch reads the time of the whatis database file and adds those manual pages created or updated since.
If you want to know what makewhatis is doing, add the -v switch, and you will see each man directory entered and each command as it is added to the list. Each switch used with makewhatis should be separated by a space and preceded by a hyphen; the switches cannot be combined. makewhatis does have one weakness: if your system does not have sufficient RAM and virtual memory, makewhatis will fail. If you get an error message—and you are running makewhatis as root—add more swap space and try again.
Fast/Flexible Linux OS Recovery
On Demand Now
In this live one-hour webinar, learn how to enhance your existing backup strategies for complete disaster recovery preparedness using Storix System Backup Administrator (SBAdmin), a highly flexible full-system recovery solution for UNIX and Linux systems.
Join Linux Journal's Shawn Powers and David Huffman, President/CEO, Storix, Inc.
Free to Linux Journal readers.Register Now!
- Download "Linux Management with Red Hat Satellite: Measuring Business Impact and ROI"
- Petros Koutoupis' RapidDisk
- ServersCheck's Thermal Imaging Camera Sensor
- The Italian Army Switches to LibreOffice
- Linux Mint 18
- Oracle vs. Google: Round 2
- The FBI and the Mozilla Foundation Lock Horns over Known Security Hole
- Privacy and the New Math
- Varnish Software's Varnish Massive Storage Engine
Until recently, IBM’s Power Platform was looked upon as being the system that hosted IBM’s flavor of UNIX and proprietary operating system called IBM i. These servers often are found in medium-size businesses running ERP, CRM and financials for on-premise customers. By enabling the Power platform to run the Linux OS, IBM now has positioned Power to be the platform of choice for those already running Linux that are facing scalability issues, especially customers looking at analytics, big data or cloud computing.
￼Running Linux on IBM’s Power hardware offers some obvious benefits, including improved processing speed and memory bandwidth, inherent security, and simpler deployment and management. But if you look beyond the impressive architecture, you’ll also find an open ecosystem that has given rise to a strong, innovative community, as well as an inventory of system and network management applications that really help leverage the benefits offered by running Linux on Power.Get the Guide