[ rfc791.ORG : Unix Help ]

[ C Shell | Filesystem | Manual | Processes & Signals | Regular Expressions | vi | X Window System ]
Ken Thompson, original inventor of Unix (front), and Dennis Ritchie, inventor of the C programming language, designing the original Unix operating system at Bell Labs on a PDP-11
One of the first things I discovered in my quest to better understand the workings of the Internet was that a huge percentage of the Internet was run by unix machines. Unix, an operating system just like MacOS or Windows, was originally designed on an old mainframe computer that took up an entire wall. It has pretty much become public domain, and literally millions of people all over the world have added things to it and refined things in it, and unix as a result had come to be very stable and reliable, and thus perfect for Internet servers that need to be running all the time. It's also designed by the technically inclined for the technically inclined for the most part, which means life for programmers like me is easier under unix. There are new flavors of unix available today (like Linux) that are more geared toward the less technical user, but the learning curve is still way steeper (a steeper learning curve means faster learning, right?) in Windows or MacOS for new users. If you just want to read email, write letters, browse the web, and get up and running quickly, unix is not for you (although all these things are possible using unix). If you want to design web and Internet based services, design network troubleshooting utilities, if you just miss that command-line interface, if you're concerned about network security, or if the amount of bloated and slow software in commercial operating systems bother you, unix is worth learning.
If you've got a spare (386 or higher, or maybe an old mac or sparcSTATION) computer lying around that you'd like to play around with unix on, my personal reccomendation would be netbsd, which is availiable for free and runs on just about anything, and pretty much has the lowest common denominator of the unix command set, so pretty much everything you learn on a netbsd system can be used on any other unix system. I wouldn't reccomend Linux, as it's hard to tell what's de-facto standard in a Linux distribution, and what's something they just added because it might attract the user base.
I'm designing this set of pages as a way to get across what I've learned in the past eight years to the new users out there. Since the evolution of unix has forked several times (several vendors throughout unix history have released their own flavors of unix), I'll be focusing on things here that are common to as many flavors of unix as possible. Thus, I'll be mostly covering the command line interface, although I will briefly mention the graphical user interface most unix systems are equipped with, the X Window System, because it's design is very clever.
Also, when I get some time, I'll seperate the history of unix out into its own page where I'll talk about the people who influenced the development of unix into what it is today.
It could be said that the two most important programs to know in the Unix operating system are a shell and an editor. Most configuration of programs under Unix is done in text files (which you edit with an editor). The most popular editor for Unix is `vi' (not because it's easy to use, but because it's been around since the dawn of time and it's availiable on every Unix system since). Check out our vi reference.
The shell on the other hand is the program you'll interact with the most. The shell is the first process that runs after you log into a unix system. The shell is the program that interprets the commands you type and runs the necessary programs on your behalf. The shell also interprets shell scripts, which can be quite like DOS batch files - A file containing a series of commands to run in sequence. Shell scripts can also have more powerful constructs commonly found in other programming languages like if..then, while, for loops, etc. Unix is designed so that any part can be drop-in replaced easily, so there are several shells usually availiable: My personal reccomendation to anybody is csh, because it is available on almost any Unix system ever, but still has a reasonable amount of power. Check out our C Shell page, which also has information that's relevant in other shells.

Armed with what you've learned about shells and editors, the next logical phase of learning Unix would be reading the manual and trying things. So, you'll need a set of commands to look up in the manual and try. Here's a pretty good list: have fun!