First, a little history about UNIX. Brian Kernighan was the first computer researcher to use the term UNICS, meaning Uniplexed Information and Computing System, in 1969. This term somewhat aptly described the multitasking operating system Dennis Ritchie and Ken Thompson developed for the DEC PDP-7 machine at Bell Labs to run a solar system simulation game called Space Travel. This UNICS also had a simple command interpreter and file system. The name stuck after a slight change to the present day UNIX in 1970. With more support from Bell Labs in the early 70's, UNIX grew to include a simple text editor and typesetter, a programming language (C), and several utilities/tools such as pipes. System V UNIX was first commercially released in 1983 by AT&T, while a somewhat different flavor had been developed at Berkeley since 1974. Known at BSD (Berkeley Software Distribution), it was widely distributed and became the foundation for some operating systems like SunOS and Solaris.
While there are/have been efforts to standardize UNIX, there are several distributions or flavors of the operating system. The variant most important to us is Linux, developed initially by Linus Torvalds, in 1991, and designed to run primarily on IBM compatible PC's. Linux also distinguishes itself because it has always been free (except for user's manuals or CD installations). As we'll discover, Linux has many of the same features as UNIX, and will almost be indistinguishable, for our purposes.
The overall Unix philosophy has been to develop a relatively small, flexible operating system. The operating system consists of drivers operating the hardware (which we won't worry about) called a kernel, a command interpreter called a shell, a file system used to store or display information, and a set of compact utility programs called commands with which the user interacts with the shell. Typically, a shell command is converted to simple system calls, like enabling a keyboard, interpreting a keystroke, preparing a printer, and so on, so that one could think of the shell and kernel as a bridge between the user and hardware (see figure 1).
Finally, UNIX is unique in that it was always designed to be used in shared environments. This means that several people share the system resources, like disk space, processing time, and so on. More crucially, this means that you can share information, and observe the same file with someone else simultaneously. This is also risky too, so UNIX has a few built-in safeguards.
We will spend most of our time using commands. This somewhat intimidating feature of UNIX is a direct result of its flexibility, but distinguishes it sharply from other popular operating systems you would see in home computers, like Windows 95/98, Windows 3.1, and MacOS. However, Windows 98 still allows one to use DOS, the pre Microsoft IBM operating system popular in the 80's, which has many striking similarities to UNIX (in addition to annoying, subtle differences). The most difficult thing about UNIX (or DOS) is that there are no/few pictures, no/few pull down menus, so it has the reputation of being not user-friendly. (While the shell concept is still very much alive in UNIX, there are now many XWindows or OpenWin applications and even desk-tops which are menu- or icon-driven). Because there is no guarantee that you will encounter such UNIX environments, and because the version of Linux we are using really isn't very windows oriented, we'll stick to learning the meat and potatoes, the UNIX shell commands.