Been learning the UNIX Shell, which uses a command-line interface (from a terminal) .. something I've wanted to do ever since we upgraded to the Virtual Private Server last year. (Linux is a variant of UNIX.)
The Shell is simply a program that allows users (like me) to interact with the operating system (sometimes termed the 'kernel'). It can be conceived of as a 'layer' sitting between you and the operating system .. hence the term » shell.
On my laptop I have installed a copy of Ubuntu Linux that I use to learn the shell (practice). Before jumping into learning the Shell, I figured this was a good time to upgrade my 'installation' of Ubuntu .. to the latest release (» v9.04, 'Jaunty Jackalope').
So I downloaded » this virtual machine (1.1 gig, using uTorrent). Had trouble getting it connected to the Internet, but that was due to my own inexperience with VMware, and not due to any short-comings of Ubuntu.
Anyway, I am really digging learning the Shell, cuz it's something I can use right away. For example, yesterday I upgraded the blogging software we use here at Radified (Movable Type) to the latest version (» 4.26). Something that used to take hours to accomplish was done in minutes .. (using a series of Shell commands). Beautiful.
••• today's entry continues here below •••
"The UNIX shell is a powerful programming language in its own right. It can do more than most people realise. The reason people get so excited about Perl is they usually learn it before the Shell language. But actually, Perl is a conceptual evolution from the Shell language with none of the conceptual integrity (which doesn't make it not useful, but not worth learning for its own sake).
The shell language processes strings, by running a few simple substitution rules in order - which means that in terms of internal simplicity, it's actually quite like Scheme. Learning how to use the shell language well is a process similar to learning Scheme. Because it has only a few facilities, learning it is mostly about getting used to the creative application of a few general problem-solving principles that serve you in good stead everywhere.
Now, learning the commands does matter in a practical sense for being familiar with UNIX, but that has nothing to do with learning the shell. It's a much better tool than that and more powerful, too."
Besides Nigel (Thanks, Nigel), Magoo (Linux guru from Arizona) has been helping me here » UNIX Shell scripting. Hard to describe, but you can actually feel the power that knowledge of (how to use) the Shell provides access to (.. sorta like when running a reactor). Very cool.
A few final notes:
- All this stuff I use is freely downloadable (Linux, Ubuntu, CentOS, virtual machines, VMware, Bash, guides, Movable Type, Perl, Scheme, uTorrent, PuTTY, WinSCP, etc.) .. which is especially nice during times like these (when the economy suketh).
- UNIX has been around since 1969. (Think Woodstock.)
- Linux is a variant of UNIX (that is free and can be run on a PC).
- The Macintosh operating system is based on UNIX.
- You can get a decent feel for both UNIX and the UNIX Shell » HERE (where the first dozen videos are freely downloadable).
- There's a cool feeling you get using Linux. Hard to describe, but I'd say » clean, elegant, responsive.
- I use PuTTY launched from a WinSCP session to connect to the shell on the Rad server.
- The Rad VPS server is physically located downtown Chicago and uses CentOS (Linux).
- Scripts that uses the Shell as an interpreter are called Shell scripts .. and learning how to use/write them represents the next step in our daring quest to learn the UNIX Shell.
UPDATE (July, 2009) - Here's a follow-up .. titled » Learning the Unix Shell (bash) .. written after I'd nearly completed my study of the Unix shell,