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
|