Book Review: The Linux Command Line by William E. Shotts, Jr.
One of the most difficult tasks in writing for the new Linux user is trying to figure out how much to place on their plate. Linux from the command-line offers so much it is often presented in a way that overwhelms the user and they choke. This book does an excellent job at presenting the right amount of content without drowning the reader. This is the best introduction to the command-line I have read. The limitations of the book are more about limited space than about the author, presentation or content.
In the Introduction of the book you will find these words, “This book is for new Linux users who have migrated from other platforms. “ The book is specifically targeted to those who are trying to develop skills at the command-line. The level of experience needed for this book is basic and it will take you in the direction of the intermediate user, but not quire get you there. That said, this book will give you a great entry point to the command-line. It does not go into the detail that an intermediate user will need but it does create a rapid path to the beginner level of the command-line, just like it says. The book works equally as well for the beginner who is on a desktop machine and the beginner who is on a server.
Outline of the Book
The outline is simple and logical for the new Linux user. There are four major sections; Learning the Shell, Configuration and the Environment, Common Tasks and Essential Tools and Writing Shell Scripts. Each of the sections has chapters that are logically designed. For example, in Part 3: Common Tasks and Essential Tools you find chapters on package management, storage media, networking, etc. These chapters help the new Linux user to find answers they will certainly be needing based on logical solutions in categories. The Table of Contents is also an aid in locating answers as there is a “brief” contents and a “detailed” contents so that the reader can go directly to what they are looking for.
Positive Aspects of the Book
There is a lot to like about this book. As mentioned above the structure of the book will make a lot of sense to the reader once they start working through it and it will be a reference tool for the new Linux user.
1. Just Enough Information
Take Chapter 6 on Redirection as an example. The chapter starts with a summary followed by a list of eight commands and a short definition of each of the commands, pointing you toward where you will be going in the chapter. Redirection for the new Linux user will be a strange new power they will discover. The author provides simple, straightforward solutions in how to use redirection. Here is a sample:
ls -l /usr/bin > ls-output.txt
In the sample, the user creates a “long” listing of the contents of /usr/bin and redirects it to a new file. A simple command that any user with any permissions can run on any Linux distro and it will work. Perfect, not too much and not too little for the new user to connect with to understand redirection. Now of course there are other examples in the 10 pages devoted to redirection each showing a different feature of redirection.
2. Detail for Certain Tasks
Occasionally you will find the author spending more detail on topics he thinks will be of a greater advantage to the reader. For example, in Chapter 8: Advanced Keyboard Tricks, the author spends three pages detailing how to get more out of the history command. Using the history command can aid the new user in recovering commands that they have used but have forgotten the details of how they used the command previously. The author provides several charts detailing the options as well as several paragraphs walking the user through the process.
3. Making the Sometimes Complex Simple
This book is an introduction to the command-line, OK, so how are you going to handle the topic of anchors with regular expressions in Chapter 19? Well, the author wisely provides the basics with three simple examples with explanation. Anchor at the front, the end and both. No need to overwhelm new users with complex examples when you can make it simple.
grep -h '^zip' dirlist*.txt
grep -h 'zip$' dirlist*.txt
grep -h '^zip$' dirlist*.txt
Using regular expressions is a real challenge for the new user. I have to give credit to the author for taking on the challenge because it would be easy to leave this chapter out but at the same time the user would be missing a major piece to the command-line puzzle. There are topics in this chapter that the reader will need to go over several times in order to understand however. The fact is, no matter how simple you try to make some topics, they can only be reduced so far.
Limitations of the Book
Having worked for many years with people learning the command-line I know that reading and doing are quite different. The book supplies the reader with excellent examples for the basic commands and options that each command has. However, one aspect that could really help the new Linux user would be exercises or labs that detail the learning process. Users, especially new users, need to have their hands on the keyboard to learn. It just will not happen any other way and there are no shortcuts.
When the reader completes this book they will be able to perform simple bash shell scripting. The reader will be highly challenged to be doing much shell scripting. It is just a reality, if you want to do shell scripting you will need many more examples. I recognize that space and content force a limited amount of time for shell scripting, it is just that this topic is the culmination of all of the other topics and it would be more helpful for readers to have more examples in this section especially. In addition, the examples for the scripting are on the top end for the beginner level, some beginners will not be able to comprehend what is happening in the examples.
People looking for more details on options for commands will be disappointed, but just remember that is not what it was designed to provide and space does not allow everything a reader will want.
The limitations of the book are a slight frustration as the benefits of the book far outpace the limitations. The first three sections; Learning the Shell, Configuration and the Environment, and Common Tasks and Essential Tools will be eaten up readily by those who purchase this book. The final section Writing Shell Scripts can be a reference for ideas but the limitations for most will not make this section near as useful as the rest.
This book is worth the money for the serious user who wants to learn about the Linux command-line and is willing to put in the time to make it happen. There really is no other book on the market that does it as well as this book for the new Linux user.