Table of Contents
Today, when we need information about Unix, we use an Internet search engine to search for blog posts, StackOverflow answers, or video tutorials.
However, Unix and all its derivatives come with a whole body of documentation available directly from the operating system, usually in the form of installable packages.
That documentation is authoritative, comes from the developers or maintainers of software, and is available with no need to access the Internet.
This article lists authoritative sources of Unix, GNU/Linux, and Debian documentation, and how to use them.
Manual Pages (Manpages, Man)
Unix on-line reference manuals, or man pages for short, are the staple of Unix documentation.
They are the oldest and still default form of Unix documentation that appeared already in the first edition of Unix Programmer's Manual in 1971.
Manpages are not text or HTML. They are written in the roff format, which auto-adjust itself to the display device at time of rendering.
To install support for man pages (if not already present on the system), run:
sudo apt install man-db manpages manpages-dev less
Manpages separate their content into sections (categories). Sections not only organize content, but also allow for the same term to exist in different categories.
The main sections in GNU/Linux version of
|3||Library functions, covering in particular the C standard library|
|4||Special files (usually devices, those found in /dev) and drivers|
|5||File formats and conventions|
|6||Games and screensavers|
|8||System administration commands and daemons|
These main categories can have subsections. For example, manpages for the Perl programming language
are in the section
3perl instead of
When the section of man page is important, it is specified in parentheses after the name, such as
To open a man page, simply invoke
man [SECTION] TERM. For example, run
man man to open a manpage of
SECTION is optional and defaults to the first section in which the requested manpage is found.
TERM is the manpage to look up, such as
man 1 crontab, and
man 5 crontab.
man program, like many programs, uses standard vi-like keys for navigating through pages. The following keyboard shortcuts are the most important:
k– scroll one line down or up
b– scroll one page down or up
Space– scroll one page down
g – jump to top of page
G – jump to bottom of page
/ – search for a string from current location onwards
? – search for a string from current location backwards
n – jump to next occurrence of searched term
N – jump to previous occurrence of searched term
h – open builtin help for
q – quit
If you are unsure about the name of the command you want to look up, use the following three tools:
apropos– search the manual page names and descriptions, e.g.
whatis– display one-line manual page descriptions, e.g.
whereis– locate the binary, source, and manual page files for a command, e.g.
In addition to that, there is a convention that manpages have a “SEE ALSO” section near the end, listing other related commands. They are a good source of cross-referenced links.
Info Pages (Info)
Info is a simple, multi-page, hypertext documentation system. Its pages are written in the Texinfo format.
info, including a possibly more user-friendly browser called
sudo apt install info pinfo
Opening Info Pages
To open an info page, type
pinfo TERM or
pinfo crontab info crontab
Man and info pages are generally written like a reference. As such, they may contain insufficient introductory text or practical examples. Newcomers who find manpages too complicated or lacking examples have three separate, new-age supplements available:
They provide practical examples in man-like format, and tldr exists as a Debian package:
apt install tldr.
Running those programs connects to the Internet and provides short, examples-oriented help for commands and topics asked.
On Debian GNU, there is a policy that every Debian package should place its documentation in directory
All packages have this directory, because at a minimum the changelog files will be there.
Those directories are extremely useful – they are usually filled with READMEs, examples, or other supporting documentation written either by the original software authors or its Debian maintainers.
When Debian package maintainers add their own README, it is in file
README.Debian. The READMEs and examples usually provide all other introductory information that is not found in the more reference-oriented man pages.
When documentation files are over 4kB in size, they are automatically gzipped by the packaging tools to save space. That’s why sometimes you will find
.gz files in there for no apparent reason.
Some tools can recognize
.gz files and work with them directly. When that is not the case, you can always run
gunzip to decompress them in-place.
Note that some packages come with extensive documentation. In such cases, to keep content properly separated, the package maintainers may choose to extract documentation into a dedicated package named *-doc,
bash-doc, and similar.
A quick search can tell how many *-doc packages exist in the Debian repositories at a given time:
apt search --names-only -- '-doc' | grep ^[a-z] | wc -l 4149
Software packages may have various useful, documentation-oriented metadata associated with them.
Metadata for Debian packages can be seen with
apt-cache show PACKAGE or (in shorter form of output) with
apt show PACKAGE.
Particularly useful fields are
Maintainer (the name and email of Debian package maintainer),
Homepage (software’s original/non-Debian homepage), and
The description field often gives a good summary of package’s purpose and any crucial specifics.
In addition to that, there are three commands which may be useful in the context of documentation or meta-information:
dpkg -S FILE– reports the name of package to which FILE belongs
dpkg -L PACKAGE– lists all files installed by PACKAGE
dpkg -l [PACKAGE]– shows current state of PACKAGE or all packages
Another somewhat documentation-oriented feature is TAB completion available in most shells.
Typing the beginning of a word and pressing
TAB will either auto-complete the word (in case of a unique match) or print possible choices for narrowing it down.
That can be used as a tool to find suitable commands or files.
For example, typing
a[TAB][TAB] will display all commands starting with “a”.
Additionally, if extended completion is installed, it will not only search for commands and files on disk, but it will also be command-aware. It will allow choosing and auto-completing the command’s options and suitable arguments.
Note that with command-aware completion
cd [TAB] will only show directories (because only directories can be cd-ed into), and typing
tar zxf [TAB] will only display files ending with “.gz” (because the option “z” already implied gzip). This can be undesirable for users who expect filename completion to always show all possible matches.
Internet Relay Chat (IRC)
Internet Relay Chat (IRC) is a text-based chat system for instant messaging. It is designed for group communication in so-called channels, and also allows one-on-one communication via private messages, and file sharing.
IRC was de-facto standard for Internet chat in the 90s and 2000s, hosting millions of users on various IRC networks. It has since lost the majority of its non-technical user base to trifling commercial platforms, first to the likes of Mirabilis ICQ and AOL Messenger, and later to social media and new protocols like XMPP , Matrix , etc.
IRC is accessed via IRC clients, such as graphical HexChat or mIRC , or textual ircII and irssi . But there is a large number of IRC clients available, which can be seen in the comparison of Internet Relay Chat clients .
Request for Comments (RFCs)
Requests for Comments (RFCs) were instigated by Steve Crocker in 1969 during his work for ARPANET . They were first used to record unofficial notes on ARPANET’s development, but have since become the official publication channel for the Internet Engineering Task Force (IETF), the Internet Architecture Board (IAB), and the global community of computer network researchers.
As the Wikipedia page says, “RFCs are authored by individuals or groups of engineers and computer scientists in the form of memorandums describing methods, behaviors, research, or innovations applicable to the working of the Internet and Internet-connected systems. They are submitted either for peer review or to convey new concepts, information, or, occasionally, engineering humor”.
The IETF adopts some of the proposals published as RFCs as Internet Standards. These standard document Internet specifications, communications protocols, procedures, and events; they are shaping the Internet’s inner workings, but are not widely known outside the community.
Wikipedia maintains a List of RFCs
, but they are also available as Debian packages named
doc-rfc-*. They can be installed all at once with
apt install doc-rfc-*, and all the installed RFCs will be found in directory
HOWTOs, Guides, FAQs
Unix and Linux HOWTOs describe specific steps needed to achieve a certain goal. These goals are sometimes very specific, such as configuring a particular hardware device, and sometimes very broad, such as how to administer a network for an ISP.
Frequently Asked Questions (FAQs) are an Internet tradition originating from the technical limitations of early mailing lists from NASA in the early 1980s. As users tended to repeatedly post questions to the mailing list instead of searching the archives, repeating the “right” answers became tedious and was against netiquette .
So the acronym and concept of FAQs was developed between 1982 and 1985 to group frequently asked questions and corresponding answers. The format was then picked up by other mailing lists, Usenet newsgroups, and Internet in general. FAQs started serving as sort of grab-bags of introductory or clarifying questions and answers on particular topics, regardless of whether the questions were actually frequently asked.
Due to the emergence of wikis and blogs, HOWTOs and FAQs have come out of general use, but they remain significant. One place that collected and grouped such materials is the Linux Documentation Project , which started publishing its content in 1992-1993 via FTP and the venerable SunSITE.unc.edu . Its homepage is now TLDP.org .
Linux Kernel Documentation
Linux kernel documentation is an enormous documentation effort with its home page available at https://www.kernel.org/doc/ .
Documentation included directly in the Linux kernel tree can be browsed at e.g. https://github.com/torvalds/linux/tree/master/Documentation .
Imagine you find yourself working at a computer at 00:30 AM on a given day.
After long work hours, to rest and chuckle you run
But to your amazement, instead of a manpage, or a message explaining that one isn’t available, you see:
$ man xbill gimme gimme gimme
Do you know what happened?
Read about this man easter egg .
Automatic LinksThe following links appear in the article:
1. ARPANET - https://en.wikipedia.org/wiki/ARPANET
2. Comparison of Internet Relay Chat Clients - https://en.wikipedia.org/wiki/Comparison_of_Internet_Relay_Chat_clients
3. Frequently Asked Questions (FAQs) - https://en.wikipedia.org/wiki/FAQ
4. FTP - https://en.wikipedia.org/wiki/File_Transfer_Protocol
5. GNU - https://en.wikipedia.org/wiki/GNU
6. GNU Info - https://en.wikipedia.org/wiki/GNU_Info
7. Man Easter Egg - https://en.wikipedia.org/wiki/Gimme!_Gimme!_Gimme!_(A_Man_After_Midnight)#Unix/Linux_Easter_egg
8. HexChat - https://en.wikipedia.org/wiki/HexChat
9. SunSITE.unc.edu - https://en.wikipedia.org/wiki/Ibiblio
10. Internet Relay Chat (IRC) - https://en.wikipedia.org/wiki/Internet_Relay_Chat
11. IrcII - https://en.wikipedia.org/wiki/IrcII
12. Irssi - https://en.wikipedia.org/wiki/Irssi
13. Libera Chat - https://en.wikipedia.org/wiki/Libera_Chat
14. Linux Documentation Project - https://en.wikipedia.org/wiki/Linux_Documentation_Project
15. List of RFCs - https://en.wikipedia.org/wiki/List_of_RFCs
16. MIRC - https://en.wikipedia.org/wiki/MIRC
17. Man Pages - https://en.wikipedia.org/wiki/Man_page
18. Matrix - https://en.wikipedia.org/wiki/Matrix_(protocol)
19. Netiquette - https://en.wikipedia.org/wiki/Netiquette
20. Open and Free Technology Community (OFTC) - https://en.wikipedia.org/wiki/Open_and_Free_Technology_Community
21. Perl Programming Language - https://en.wikipedia.org/wiki/Perl
22. Requests for Comments (RFCs) - https://en.wikipedia.org/wiki/Request_for_Comments
23. Roff - https://en.wikipedia.org/wiki/Roff_(software)
24. Steve Crocker - https://en.wikipedia.org/wiki/Steve_Crocker
25. Texinfo - https://en.wikipedia.org/wiki/Texinfo
26. XMPP - https://en.wikipedia.org/wiki/XMPP
28. TLDP.org - https://tldp.org/
32. First Edition of Unix Programmer's Manual - https://www.tuhs.org/Archive/Distributions/Research/Dennis_v1/1stEdman.html