on 24 January 2015
I've told myself to get a book about bash so many times in the past that my Goodread`s Want to Read shelf was getting boringly monothematic. Last month I planned to get my hands on bash Cookbook but a comment on Amazon convinced me to dedicate my time to this title instead. To make it short, I'm not exactly enthusiast: some (just some!) parts were interesting; others (most!) were overly detailed and accompanied with complicated examples, a pain to get through.
This is a book that clearly targets beginners, people with close to no experience with Linux and the bash shell. If you work on a daily basis with the penguin, you better move along.
Ok so, let's imagine I recently moved from Windows to Linux and I want to explore what the bash shell offers me. What do I get off these 300 pages? Well, the book is divided in 3 parts:
Very basic shell features.
Basic shell scripting.
Basic shell features.
The first part, which covers the first three chapters, tells you about basic commands, such as "ls" and all the arguments it swallows. Unless you have never opened the terminal before, you might want to skip these pages.
Next the authors introduce some basic shell scripting, starting from variable naming to arrays and flow control. This was, by far, the most interesting part of the whole book in my opinion, but still, the author has covered only the very basics. What I've found particularly annoying was the choice to list all the possible options available just to find out, later, that the book wasn't about system programming so that they would have not been explained.
Finally, we leave the magic world of scripting and get introduced to other basic features, such as jobs: background foreground, handling signals.
Throughout the book the authors use an example that gets improved as they introduce new concepts. This gets early out of control in my opinion: it's overly hard to follow, mainly for a beginner. A very annoying thing of this example is the fact that the authors names variables, functions and files using Alice in Wonderland: Alice, the Hatter, ... for real?
Other examples are found in the book. They are short ad hoc code snippets found next to some command just explained. I've often ended up either using man or googling to find more.
I don't really suggest the title, neither to those new to the bash shell, nor to those that are merely interested in scripting. This book covers a little of both, but doesn't really give any value.
Linux Shell Scripting Cookbook
As usual, you can find more reviews on my personal blog: http://books.lostinmalloc.com. Feel free to pass by and share your thoughts!
on 27 October 1999
This book provides a useful text on the capabilities of the Bash shell for Linux / Unix. The concept of the Unix shell is very much bigger than just the command prompt that it may resemble if you are a "recovering" DOS user. Understanding of the role and capabilities of the shell is an essential prerequisite for effectively harnessing the power of Linux/ Unix and certainly justifies a book to itself. The Bash shell is a particularly powerful and modern shell program which has the advantage of being freely distributable as part of the GNU project, and as such is probably the most widely used shell program in the Linux world. As such if you have no prior loyalties to another flavour shell - I suggest you learn this one. The book will certainly help you achieve this .
on 5 June 2002
Traditional shell scripts are horrible. They are not nice languages with orthogonal instruction sets: they have grown organically, and inconsistently. Quotes, double-quotes, and escaped characters are often needed to slip something past one parsing layer to get it to another one.
Chapter one starts off describing what a terminal session actually is, so this is aimed at real beginners.
If you are a beginner, and you are able to chose your scripting language for your job, you might want to look at some of the more recent languages, such as 'python'. They are more regular, and easier to learn and maintain.
Anyway, back to the book. There are things you shouldn't do in a book that may be uses as an introduction and a reference. You should not give examples of code with bugs in, that you explain in the following chapter (ta-daa, aren't I clever?!). You should not give tables of functions or commands unless you list all the commands. If there is an exception to a rule, then you should at least mention it even if you haven't covered that case yet, or, better still, re-arrange the book so the exceptions are explicable. You must resist the urge to surprise the reader: this is shell scripts, and the reader will probably have had their fill of surprises. Last of all, and a personal one this, lay off the Lewis Carroll, please?
You need to be ultra-careful about quotes. When "@" appears in the text, does this mean a string of one character or three? Can you see whether the quotes are in heavy type?
You need to be really careful to distinguish what is 'in' the shell, and what commands and variables are outside it. Pattern matching is a key part of the shell, so regexps ought to be explained in some detail. The simple demo scripts should not have 'ed' and 'sed' commands stuck in without saying where they came from.And why not mention the debug flag before chapter 9?
There are some dubious comments about programming style. Is it really bad to use the 'break' statement in a loop? Is '<command1> && <command2>' really an obscure and unnecessary way of doing command2 if command1 fails? - I find it neat and compact.
This is a pity, because there are some good bits. The flow diagram on p178 and the attendant text about how command lines are processed is good (well, right up to the "-and it's not the whole story!", but you get the idea). But, for completeness, I reckon if there is something I want to look up about the bash shell, I am going to use my old Korn shell book rather than this book.