Programming and Scripting Languages
Unix Shell
C / C++
Unix Shell Programming

If you're going to admin a Unix box, at home or professionally, you will need to know shell scripting.  No way around it.  However, once you know it, you will miss it on other types of systems!  The Unix shell is a powerful programming language and interactive environment combined.

The classic book:
Unix Shell Programming
Check it out on Amazon here

The best way to discover shell features is...
Read the man page.  Really.  Spend some time reading the output of man sh from beginning to end (later, read the man pages for bash and ksh , which are supersets of sh.)  You may not understand everything you see, but you may recall later that you saw a feature you wanted there, and of course you can always go back for another look.  You will also start getting the hang of the syntax, the various options, and what some of those funky (but ubiquitous) reserved variables like $@ and @# are for.   Also... play with the shell (interactively and in scripts), and plagiarise existing shellscripts shamelessly :)  System scripts like those in /etc/init.d are particularly instructive.

Unix Shell Patterns

Some HOWTOs for avoiding common problems

Some of my Shell Script utilities

The C and C++ Programming Languages

If you're going to run a Unix box, you should know C.  Some C++ won't hurt either, and if you are going to program professionally it is probably a requirement.

J. Blustein's C Programming Language Resources

The C Programming Language, Second Edition

Own this book

The C++ Programming Language, Third Edition

The Perl scripting language

All the best bits of shell programming wrapped up in a single language, but that's just a tiny tip of the iceberg.  A powerful, ubiquitous and cross-platform scripting language.

All about Perl

Programming Perl


More than just a programming language, Java is its own operating system, security framework and graphics engine.  It looks rather like C, but does much more (and operates at a higher level, with strongly enforced Object Orientation.)

Java / J2EE is widely used as the basis for powerful, efficient and secure web-based applications, as well as commandline tools and backend processing.

Java applications can generally run on multiple types of hardware, and under different operating systems, without modification or recompilation.

Java has long replaced C as a first programming language in a number of teaching venues.

All about Java (officially anyway)

Sun Java 2 Enterprise Edition (J2EE)

Jarkarta Struts

Java Swing and Alternatives


An interpreted scripting language like Perl and the Unix shell.  Highly popular and widely used.

All about Python