People who come into contact with the Unix system are often told, "If you have
trouble, see so-and-so, he's a guru", or "Bob there is a real Unix hacker."
To explore these and other questions, here is a draft of the "The Unix
Hierarchy":
NAME |
DESCRIPTION AND FEATURES |
Beginner |
- insecure with the concept of a terminal
- has yet to learn the basics of vi
- has not figured out how to get a directory
- still has trouble with typing RETURN after each line of input
|
Novice |
- knows that "ls" will produce a directory
- uses the editor, but calls it "vye"
- has heard of "C" but never used it
- has had a bad experience with rm
- is wondering how to read mail
- is wondering why the person next door seems to like Unix so very much
|
User |
- uses vi and nroff, but inexpertly
- has heard of regular expressions but never seen one
- has figured out that "-" precedes options
- has attempted to write a C program, but decided to stick with Pascal
- is wondering how to move a directory
- thinks that dbx is a brand of stereo component
- knows how to read mail and is wondering how to read the news
|
Knowledgeable User |
- uses nroff with no trouble, and is beginning to learn tbl and eqn
- uses grep to search for fixed strings
- has figured out that mv(1) will move directories
- has learned that "learn" doesn't help
- somebody has shown him how to write C programs
- once used sed but checked the file afterwards
- watched somebody use dbx once
- tried "make" but used spaces instead of tabs
|
Expert |
- uses sed when necessary
- uses macros in vi, uses ex when necessary
- posts news at every possible opportunity
- is still wondering how to successfully reply to mail
- writes csh scripts occasionally
- writes C programs using vi and compiles with make
- has figured out what && and || are for
- uses fgrep because somebody said it was faster
|
Hacker |
- uses sed and awk with comfort
- uses undocumented features of vi
- writes C code with "cat >" and compiles with "!cc"
- uses adb because he doesn't trust source debuggers
- figured out how environment variables are propagated
- writes his own nroff macros to supplement the standard ones
- writes Bourne shell scripts
- installs bug fixes from the net
- uses egrep because he timed it
|
Guru |
- uses m4 and lex with comfort
- writes assembler code with "cat >"
- uses adb on the kernel while the system is loaded
- customizes Unix utilities by patching the source
- reads device driver source with breakfast
- uses "ed" because "ex" is a Berkeleyism
- can answer any Unix question after a little thought
- uses make for anything that requires two or more commands
- has learned how to breach security but no longer needs to try
- is putting James Woods/Henry Spencer egrep into his next Unix release
|
Wizard |
- writes device drivers with "cat >"
- fixes bugs by patching the binaries
- posts his changes to Unix utilities to the net, and they work
- can tell what question you are about to ask, and answers it
- writes his own troff macro packages
- is on a first-name basis with Dennis, Bill, and Ken
|
The text above is taken from a (very old) file that had a signature with
the name "John Gilmore" (jgilmore@lll.crg.arpa) in it. I don't know if he
is the author. I found the text in some other places without giving an
author name, so it's probably ok to put it on the web.