I own a lot of O'Reilly books. You know, the ones with the animals on the cover. So many, that one sunny day I sat down to count: 119. I'll admit that some of them I only own for one or two paragraphs that were useful (Essential CVS is one example of an unusually bad O'Reilly offering); I even read whole chapters of others. But the one volume of these dozens of colour-coded tomes that I keep coming back to is Learning the bash Shell by Cameron Newham. Here's the review I posted to a book seller's site:
The GNU/Linux bash shell is a clunky marvel. Novices recoil at first contact; "how do I click my way out of this 70s-era greenscreen abomination?" Casual Linux admins -- and I fall into this it-was-set-up-a-year-ago-and-still-works-fine-so-don't-futz-with-it category -- are reasonably adept at piping, redirection, and tab-completion. The full-bore Linux geekorati are only a couple of Emacs meta-ctrl-popbottle keystrokes from involuntary carpal retirement.
Learning the bash Shell is really intended for the second of these groups: the not-everyday Linux enthusiast. The experts will have already glommed every tip and trick, and, despite the disingenuous "Learning" in the title, the book's too steep a road for folks still struggling to install their first RPM.
O'Reilly is known for its content-dense publications, and this book has a higher fact-per-unit-volume ratio than any other of that publisher's titles that I could name. Like many a tech trade tome, its chapters should be read as you need them, not straight through from copyright to colophon ("Typeset with ITC Garamond, you say. Fascinating!"). I go ahead and store it right next to the server. A quick peek will tell me everything I need to know, and little I don't care to learn, about test/ switches, string substitution operators, special-case environment variables, file descriptor redirection, Emacs control commands, process substitution, and those darned umask settings (each an example of something I use often, yet the details of which I can never recall). And once you've got the book open, you'll find it just leads you further and further down the bash rabbit hole.
In short, this is one of the best tech books I've ever encountered, for any OS, for any topic. If you're of the aforementioned casual Linuxfolk, or transcending your way to the guru plane, you must add it to your library.
Yes, it's unabashedly glowing, but the book is awfully useful.