by: Matt Simerson
Sunday 19 May 24

Unix User Hierarchy

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

* 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 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"

* 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

* uses vi and nroff, but inexpertly
* has heard of regular-expr's but has never seen one
* has figured out that - precedes 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

* 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

* 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
* 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

* 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

* 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 tattooed 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