It doesn’t matter how much of an expert you think you are, there will still be times when you’ll need to look up some bit of information. With Linux, Unix, and Unix-like operating systems, there are several options for that.
Understanding Manual Pages
Manual pages, or man pages for short, have been built into Unix-like operating systems since almost forever. To use a man page, just enter man
, followed by the name of the command, configuration file, or system component for which you seek information. For example, you could find out how to use the ls
command like this:
man ls
Most of the time, the man
command will open a man page in the less
pager. (Some Unix implementations might use the more
pager instead, but I haven’t found any recent ones that do.) Either way, you’ll be able to scroll through the man page or perform key word searches within the page to find the information that you seek.
The man pages are divided into sections that each correspond to a different category. On most Unix-like and Linux systems, there are eight main categories, more commonly referred to as sections, which are as follows:
Section number
|
Purpose
|
1
|
This section contains information about commands that can be used by any unprivileged user.
|
2
|
This section contains information about system calls, which are mainly of interest to software developers.
|
3
|
In this section, you’ll find information about library functions, which will also mainly be of interest to software developers.
|
4
|
If you’ve ever wanted to find information about the device files in the /dev/ directory, this is the place to look. This section also contains information about device drivers.
|
5
|
Here you’ll find information about the various configuration and system files on your system.
|
6
|
This is for information about games and screensavers. There’s normally not much here.
|
7
|
This is for information about miscellaneous things that don’t fit neatly into any of the other categories.
|
8
|
This is for information about administrative commands and system daemons.
|
Table 1.1: Describing the man page sections
You’ll see the subdirectories that contain these man page files in the /usr/share/man/
directory. You also might see some subdirectories with names like man0p
, man5p
, or man8x
. These subdirectories contain certain special-purpose man pages, which will differ on different Linux distros.
A lot of times, you won’t need to think about these sections, because the man
command will pull up the proper man page for you. Other times, you will need to pay attention to these sections, because many key words for which you’ll search can be found in multiple sections. For example, here on the Fedora workstation that I’m using to write this, there are two man pages for printf
. There are two ways to find them. First, you can use the man -aw
command, like this:
[donnie@fedora ~]$ man -aw printf
/usr/share/man/man1/printf.1.gz
/usr/share/man/man3/printf.3.gz
[donnie@fedora ~]$
You can also use the whatis
command, like this:
[donnie@fedora ~]$ whatis printf
printf (1) - format and print data
printf (3) - formatted output conversion
[donnie@fedora ~]$
Note that whatis
is a synonym for man -f
. You’ll get the same results with either command, but my own preference is to use whatis
.
So, we have a printf
man page in Section 1, which means that we have a normal user command that’s called printf
. We also see a printf
man page in Section 3, which means that there’s a library function that’s called printf
. If you enter man printf
, you’ll see the man page from Section 1. You’ll see that in the first line of the man page, which will look like this:
PRINTF(1) User Commands PRINTF(1)
If you instead want to see the man page from Section 3, you’ll need to specify that in your command, like this:
man 3 printf
To broaden your search for all man pages that contain printf
in either the title or the description of the man page, even if it’s embedded into another text string, use either apropos
or man -k
, like this:
[donnie@fedora ~]$ apropos printf
asprintf (3) - print to allocated string
BIO_printf (3ossl) - formatted output to a BIO
BIO_snprintf (3ossl) - formatted output to a BIO
BIO_vprintf (3ossl) - formatted output to a BIO
BIO_vsnprintf (3ossl) - formatted output to a BIO
curl_mprintf (3) - formatted output conversion
dprintf (3) - formatted output conversion
tpm2_print (1) - Prints TPM data structures
fprintf (3) - formatted output conversion
fwprintf (3) - formatted wide-character output conversion
printf (1) - format and print data
printf (3) - formatted output conversion
. . .
[donnie@fedora ~]$
Again, either command will give you the same output, but my own preference has always been to use apropos
.
Most of the time, your Linux system does a good job of keeping the man page index updated. Once in a while though, you’ll need to do it manually, like this:
[donnie@fedora ~]$ sudo mandb
[sudo] password for donnie:
Purging old database entries in /usr/share/man...
Processing manual pages under /usr/share/man...
Purging old database entries in /usr/share/man/ca...
Processing manual pages under /usr/share/man/ca...
. . .
. . .
Processing manual pages under /usr/local/share/man...
0 man subdirectories contained newer manual pages.
0 manual pages were added.
0 stray cats were added.
0 old database entries were purged.
[donnie@fedora ~]$
Okay, that about does it for the man page system. Let’s talk about the info system.
Understanding Info Pages
The info page system is newer, and was invented by Richard M. Stallman as part of the GNU Project. The unique part about it is that each info page contains hyperlinks that can lead you to additional pages of information. For example, to obtain information about the info system, enter info info
. This info page contains a menu, which looks something like this:
* Menu:
* Stand-alone Info:: What is Info?
* Invoking Info:: Options you can pass on the command line.
* Cursor Commands:: Commands which move the cursor within a node.
. . .
., . .
* Variables:: How to change the default behavior of Info.
* Colors and Styles:: Customize the colors used by Info.
* Custom Key Bindings:: How to define your own key-to-command bindings.
* Index:: Global index.
Each underlined item you see is a hyperlink to another page. With your cursor keys, move the cursor to the hyperlink that you want to see, and hit the Enter key. To see an info page for a specific command, such as ls,
just do this:
info ls
If you need help with navigating through the info pages, just hit the H
key to bring up a navigation menu.
And, that’s about it for the info pages. Let’s talk about on-line documentation.
Getting to Know the Linux Documentation Project
The Linux Documentation Project has been around since almost forever, and is an invaluable resource. The best part about it is the Guides section, where you’ll find free-of-charge, full-length books about Linux and bash
that you can download in a variety of formats. They’re all quite old, with the newest one having been last updated in 2014. For the Bash Guide for Beginners book and the Advanced Bash-Scripting book that you’ll find there, that doesn’t matter. The concepts in those two books are eternal, and haven’t really changed over the years. To see these books, go to https://tldp.org/guides.html.
Using Your Favorite Search Engine
If all else fails, just use your favorite search engine to find what you need to know about either scripting in general, or scripting on a particular operating system. You’ll find plenty of help, such as blog posts, YouTube videos, and official documentation. There are plenty of Linux-specific websites that offer help on various things, and it’s quite simple to find them.
Next, let’s talk about text editors.