Shell Scripting Recipes: A Problem-Solution Approach Paperback – Aug 24 2006
Customers Who Bought This Item Also Bought
No Kindle device required. Download one of the Free Kindle apps to start reading Kindle books on your smartphone, tablet, and computer.
Getting the download link through email is temporarily not available. Please check back later.
To get the free app, enter your mobile phone number.
About the Author
Chris F.A. Johnson was introduced to Unix in 1990, and learned shell scripting because there was no C compiler on the system. His first major project was a menu-driven, user-extensible database system with report generator. Johnson constantly writes scripts to automate system administration tasks, and his recent shell projects have included a member database, menuing system, and POP3 mail filtering and retrieval. When not pushing shell scripting to the limit, Johnson teaches chess and composes cryptic crosswords.
Most Helpful Customer Reviews on Amazon.com (beta)
After coding in languages like Perl and then Ruby, the distinction has become increasingly blurred. Many of my "scripts" have proven far, far more useful than anything I've written in a "proper" programming language! They back up my servers, they keep me informed of problems, they've saved me a minute here, a minute there, for perhaps ten years now! So what, really, is the distinction?
I think, to some extent, a shell script is ultimately just limited by a lack of any libraries of code. It lends itself well to simple tasks, but if you do anything even moderately complex, you have to stop and switch to Perl or Ruby. But now Mr. Johnson has written a book that more or less creates a library in your shell script. And the tasks he writes about are so incredibly common, and his recipes so well organized, that you can just flip to a chapter like "Backing Up the Drive" or "Good Housekeeping," and find a dozen solutions to questions you're guaranteed to run into when writing your shell scripts. This book also does an excellent job of showing examples that rely on as few external programs as possible - making them perfectly portable.
This is the most useful book on shell scripting out there, and I wish I could have picked it up ten years ago. If I had, it would still be on my shelf today.
I remember my first forays into shell scripting. I didn't want to learn Perl (then the clearly dominant scripting language), and worked hard to learn shell, awk, and sed so that I could do the things I needed to do and automate as much as possible. It paid off, and even impressed a few die hard Perl fans. Less code to do simple tasks, faster to write, and always present. While I don't do nearly as much shell scripting as I used to, I still enjoy seeing someone do neat things in /bin/sh, ksh, or bash.
Chris Johnson's book is in the traditional line of a reference book, much like the O'Reilly cookbook series or, more accurately, the old tome, UNIX Power Tools. It's got a couple of non-recipe chapters, and the rest of it is a lot of fun, useful shell scripting.
Chapter 1 is an invaluable reference to large portions of the POSIX shell language. Johnson covers things like built in commands and program flow, special variables, and variable expansion. He also clearly covers the differences between the Bourne shell and the POSIX shell where they differ. If you're worried, using Bash will almost always work with the examples, I think.
At this point it's easy to think, "I can call out to external commands for a good chunk of the functions he develops." You can, but Johnson makes a compelling argument that shows the impact of a fraction of a second can add up quickly in loops. At this point, you're either agreeing with him and seeing the joy of a direct language like shell or you soon will.
Chapter 20 is a small set of recipes but they serve a different function, namely helping you manage all of these new shell scripts and functions. You can copy, instantiate new shell scripts more easily (by automating the redundant bits), or package them up with simple scripts. Handy tools, and a decent approach.
The recipes run the gamut from the simple to the uncommon, but they all illustrate how do accomplish useful tasks in a shell script. They include file conversion (DOS, UNIX, and Mac), string handling bits, filename management, complex date calculations, screen control capabilities, and even HTML processing. Some of my favorite recipes include the Postscript generation tools (!) and the database management tools. While some people have done these in shell scripts, I've usually seen them done using sloppy or confusing approaches. Johnson's code is clear, direct, and applicable.
That's probably the biggest strength to the book, Johnson's clear writing and examples. Some programming and scripting books try and show you neat tools to accomplish a task, but they don't do a good job of showing you how to translate it to your specific task. In Shell Scripting Recipes, Johnson chooses his code carefully, articulates how it works, and continually builds on a theme. If you pick a few scripts and study them, you'll see tips and tools you can use in your own shell scripts. He also has nicely abstracted scripts that let you recycle his functions in your own scripts with ease.
Overall I quite like Shell Scripting Recipes, I think that while it's easy to think less of the Bourne shell as a language, Johnson has done a good job of writing a concise set of examples, usable code, and in a format that is continually useful and clear. If you've been thinking about improving your shell prowess, this is the book for you.
The book was written for those who have had some Unix/Linux experience under their belt and now want to explore some of the power of the shell itself. Seasoned BASH shell users know that one of the most powerful aspects of the system is the ability to create applications that perform necessary tasks or functions just by using shell scripting. This book would be ideal for anyone who wants to get more out of their system that just using the GUI-interface that has become so common.
Most of all, it covers a lot of problems that occur everyday and that we sometime spend hours looking for a solution for. Things such as removing excess linefeeds from a file, reformatting text, retrieving data automatically and other related tasks -- things that shell scripting excels at providing a mechanism to solve.
Not for the beginner, but a must-have for the experienced Unix (particularly BASH shell) user.
While the book is really written for the technically oriented reader, even the very basics that most users should already know are still covered. The format is more typical of what computer technicians want - this is the item to be discussed, this is how it works, this is an example, move on to the next one. When I am looking for answers this is the format I prefer and I found this book extremely useful. It will be on my bookshelf as one of the first to grab when I want to do scripting in Linux. Advanced and powerful, a real resource for the power user of the Bourne shell, Shell Scripting Recipes is highly recommended.
Chapter List: The POSIX Shell and Command-Line Utilities; Playing With Files - Viewing, Manipulating, And Editing Text Files; String Briefs; What's In A Word?; Scripting By Numbers; Loose Names Sink Scripts - Bringing Sanity To Filenames; Treading A Righteous PATH; The Dating Game; Good Housekeeping - Monitoring And Tidying Up File Systems; POP Goes The E-Mail; PostScript - More Than An Afterthought; Screenplay - The screen-funcs Library; Backing Up The Drive; Aging, Archiving, And Deleting Files; Covering All Your Databases; Home On The Web; Taking Care Of Business; Random Acts Of Scripting; A Smorgasbord Of Scripts; Script Development Management; Internet Scripting Resources; Index
Johnson has written a book that is perfect for the person who has studied the basics and now wants to start applying their knowledge. The book is one page after another of scripts written to solve specific issues and scenarios that can be solved using scripting techniques. Each problem has the format of description, "How It Works", "Usage", "The Script", and any "Notes" that might apply to this situation. The vast majority of problems are covered in two or less pages, so the scripts and examples are very tight and concise. The scripts were tested by the author using bash, pdksh, KornShell 93, and ash. If this is the type and flavor of shell scripting you use, they you'll be able to use the scripts without too many fears of finding problems. If the author knows another technique to make the script applicable to more types of shell environments, those will be noted in the Notes for the particular problem.
I really liked the focused nature of the material and writing. This is the type of book that will either solve a specific problem you have or will give you ideas on automating/simplifying something that you've lived with for far too long. And with repeated perusals, you may find gems you overlooked the first time that now address a current need. Definitely the type of book that deserves to be on your bookshelf with dog-eared pages throughout.
Look for similar items by category
- Books > Computers & Technology > Programming > Java
- Books > Computers & Technology > Programming > Languages & Tools
- Books > Computers & Technology > Programming > Software Design, Testing & Engineering > Software Development
- Books > Computers & Technology > Web Development > Programming
- Books > Qualifying Textbooks - Fall 2007 > Computers & Internet