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." Often, they are baffled by these appelations, and do not pursue the matter further.
What is a "Unix Hacker?" How does he differ from a "Guru"?
To answer these and other questions, here is a draft of the "Unix User Hierarchy":
| Name | 
Description and Features | 
| Beginner | 
- insecure with the concept of a terminal
 
- has yet to learn the basics of 
ed 
- has not yet figured out how to get a directory listing
 
- literally types 
<RETURN> for carriage return and is then confused when an error message which says syntax error: newline or ; unexpected occurs 
- thinks Unix are people who guard harems
 
- thinks "C" is a Bell Labs Acronym for "COBOL"
 
 
 | 
| novice | 
- knows that 
ls will produce a directory listing 
- still has trouble with typing carriage returns after each line of input
 
- still has the erase character set to 
# 
- has heard of the visual editor, but calls it "vye"
 
- has heard of the C programming language, but has never used it
 
- has had his first bad experience with 
rm 
- is wondering how to read his mail
 
- is wondering why the person next to him seems to like Unix so very much
 
 
 | 
| user | 
- uses 
vi and nroff, but inexpertly 
- has heard of regular-expr's but has never seen one
 
- has figured out that 
- prcedes options 
- has attempted to write a C program and has decided to stick with Pascal
 
- is wondering how to move a directory
 
- has never heard of 
sdb 
- thinks "emacs" is a trademark for McDonald's quarter pounder with the works
 
- knows how to read his mail and is wondering how to read the news
 
- uses 
^ for shell pipes 
- holds the Unix manual upside-down
 
 
 | 
| 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 will move directories 
- has learned that 
learn doesn't help 
- somebody has shown him how to write C programs
 
- once used 
sed to do some text substitution 
- has seen 
sdb but does not use it himself 
- thinks that 
make is only for wimps 
- writes scripts for Bourne shell
 
- can't understand the Unix manual, but at least knows which section to look in
 
 
 | 
| expert | 
- uses 
sed when necessary 
- uses macros in 
vi, uses ex when necessary 
- posts to news at every possible opportunity
 
- writes 
ksh scripts occasionally 
- writes C programs using 
vi and compiles with cc 
- has figured out what 
&& and || are for 
- thinks that human history started with 
!h 
- occasionally looks in the Unix manual for help
 
 
 | 
| hacker | 
- uses 
sed and awk with comfort 
- uses undocumented features of 
vi 
- writes C code with 
cat > and compiles with r cc 
- uses 
adb because he doesn't trust source debuggers 
- can answer questions about the user environment
 
- writes his own 
nroff macros to supplement the standard ones 
- knows how to install bug fixes
 
- writes Unix manual entries for new commands
 
- reads the source code instead of the manual
 
- attempts to breach system security
 
 
 | 
| Guru | 
- uses 
m4 and lex with comfort 
- writes assembly code with 
cat > 
- uses 
adb on the kernel while the system is loaded 
- customizes utilities by patching the source
 
- reads device driver source with his breakfast
 
- can answer any Unix question after a little thought
 
- uses 
make for anything that requires two or more distinct commands to achieve 
- has learned how to breach security but no longer needs to try
 
- can write 8 lines of Korn shell what it would require 600 lines of C code
 
 
 | 
| WIZARD | 
- writes Unix device drivers as shell scripts using 
cat > 
- fixes bugs by patching the binaries
 
- can answer any question before you ask
 
- writes his own 
troff macro packages 
- dreams in vivid C
 
- has a Unix OS flowchart tatooed on his chest
 
- modifies running Unix kernel from the console switches
 
- has ported Unix to run on a friend's Sinclair 1000
 
- is on a first-name basis with Dennis, Brian, Ken, and Bill
 
 
 |