
- 1.1) Who helped you put this list together?
- 1.2) When someone refers to 'rn(1)' or 'ctime(3)', what does the number in parentheses mean?
- 1.3) What does {some strange unix command name} stand for?
- 1.4) How does the gateway between "comp.unix.questions" and the "info-unix" mailing list work?
- 1.5) What are some useful Unix or C books?
- 1.6) What happened to the pronunciation list that used to be part of this document?
This document was one of the first collections of Frequently Asked Questions. It was originally compiled in July 1989.
I took over the maintenance of this list. Almost all of the work (and the credit) for generating this compilation was done by Steve Hayman.
We also owe a great deal of thanks to dozens of Usenet readers who submitted questions, answers, corrections and suggestions for this list. Special thanks go to Maarten Litmaath, Guy Harris and Jonathan Kamens, who have all made many especially valuable contributions.
Part 5 of this document (shells) was written almost entirely by Matthew Wicks [wicks@dcdmjw.fnal.gov].
Part 6 of this document (Unix flavours) was written almost entirely by Pierre (P.) Lewis [lew@bnr.ca].
Where possible the author of each question and the date it was last updated is given at the top. Unfortunately, I only started this practice recently, and much of the information is lost. I was also negligent in keeping track of who provided updates to questions. Sorry to those who have made valuable contributions, but did not receive the credit and recognition that they legitimately deserve.
I make this document available in *roff format (ms and mm macro packages). Andrew Cromarty has also converted it into Texinfo format.
The formatted versions are available for anonymous ftp from ftp.wg.omron.co.jp under pub/unix-faq/docs .
It looks like some sort of function call, but it isn't. These numbers refer to the section of the "Unix manual" where the appropriate documentation can be found. You could type "man 3 ctime" to look up the manual page for "ctime" in section 3 of the manual.
The traditional manual sections are:
- User-level commands
- System calls
- Library functions
- Devices and device drivers
- File formats
- Games
- Various miscellaneous stuff - macro packages etc.
- System maintenance and operation commands
Some Unix versions use non-numeric section names. For instance, Xenix uses "C" for commands and "S" for functions. Some newer versions of Unix require "man -s# title" instead of "man # title".
Each section has an introduction, which you can read with "man # intro" where # is the section number.
Sometimes the number is necessary to differentiate between a command and a library routine or system call of the same name. For instance, your system may have "time(1)", a manual page about the 'time' command for timing programs, and also "time(3)", a manual page about the 'time' subroutine for determining the current time. You can use "man 1 time" or "man 3 time" to specify which "time" man page you're interested in.
You'll often find other sections for local programs or even subsections of the sections above - Ultrix has sections 3m, 3n, 3x and 3yp among others.
awk = "Aho Weinberger and Kernighan"
This language was named by its authors, Al Aho, Peter Weinberger and Brian Kernighan.
grep = "Global Regular Expression Print"
grep comes from the ed command to print all lines matching a certain pattern
g/re/p
where "re" is a "regular expression".
fgrep = "Fixed GREP".
fgrep searches for fixed strings only. The "f" does not stand for "fast" - in fact, "fgrep foobar *.c" is usually slower than "egrep foobar *.c" (Yes, this is kind of surprising. Try it.)
Fgrep still has its uses though, and may be useful when searching a file for a larger number of strings than egrep can handle.
egrep = "Extended GREP"
egrep uses fancier regular expressions than grep. Many people use egrep all the time, since it has some more sophisticated internal algorithms than grep or fgrep, and is usually the fastest of the three programs.
cat = "CATenate"
catenate is an obscure word meaning "to connect in a series", which is what the "cat" command does to one or more files. Not to be confused with C/A/T, the Computer Aided Typesetter.
gecos = "General Electric Comprehensive Operating Supervisor"
When GE's large systems division was sold to Honeywell, Honeywell dropped the "E" from "GECOS".
Unix's password file has a "pw_gecos" field. The name is a real holdover from the early days. Dennis Ritchie has reported:
"Sometimes we sent printer output or batch jobs to the GCOS machine. The gcos field in the password file was a place to stash the information for the $IDENT card. Not elegant."nroff = "New ROFF"
troff = "Typesetter new ROFF"
These are descendants of "roff", which was a re-implementation of the Multics "runoff" program (a program that you'd use to "run off" a good copy of a document).
tee = T
From plumbing terminology for a T-shaped pipe splitter.
bss = "Block Started by Symbol"
Dennis Ritchie says:
Actually the acronym (in the sense we took it up; it may have other credible etymologies) is "Block Started by Symbol." It was a pseudo-op in FAP (Fortran Assembly [-er?] Program), an assembler for the IBM 704-709-7090-7094 machines. It defined its label and set aside space for a given number of words. There was another pseudo-op, BES, "Block Ended by Symbol" that did the same except that the label was defined by the last assigned word + 1. (On these machines Fortran arrays were stored backwards in storage and were 1-origin.)
The usage is reasonably appropriate, because just as with standard Unix loaders, the space assigned didn't have to be punched literally into the object deck but was represented by a count somewhere.
biff = "BIFF"
This command, which turns on asynchronous mail notification, was actually named after a dog at Berkeley.
I can confirm the origin of biff, if you're interested. Biff was Heidi Stettner's dog, back when Heidi (and I, and Bill Joy) were all grad students at U.C. Berkeley and the early versions of BSD were being developed. Biff was popular among the residents of Evans Hall, and was known for barking at the mailman, hence the name of the command.
Confirmation courtesy of Eric Cooper, Carnegie Mellon University
rc (as in ".cshrc" or "/etc/rc") = "RunCom"
"rc" derives from "runcom", from the MIT CTSS system, ca. 1965.
'There was a facility that would execute a bunch of commands stored in a file; it was called "runcom" for "run commands", and the file began to be called "a runcom.""rc" in Unix is a fossil from that usage.' Brian Kernighan & Dennis Ritchie, as told to Vicki Brown
"rc" is also the name of the shell from the new Plan 9 operating system.
Perl = "Practical Extraction and Report Language"Perl = "Pathologically Eclectic Rubbish Lister"
The Perl language is Larry Wall's highly popular freely-available completely portable text, process, and file manipulation tool that bridges the gap between shell and C programming (or between doing it on the command line and pulling your hair out). For further information, see the Usenet newsgroup comp.lang.perl.
Don Libes' book "Life with Unix" contains lots more of these tidbits.