I used to dislike reviewing books because authors always expect a five-star rating for their work. As a book author myself, I understand the sentiment. I do think, however, that honesty is the best policy without being belligerent or condescending when delivering negative opinions. That said, William Shotts has done a great job with The Linux Command Line: A Complete Introduction, 2nd Edition from No Starch Press. It's a good book. In fact, it's a very good book.
I guess with that first paragraph, you could stop there and go and buy yourself a copy, but then you'd miss my snappy dialog and sparkling wit along the way. And you certainly don't want to miss any of that.
At 458 pages, it's not the largest book on the shelf. It's a fairly lean book by technology realm standards. Don't get me wrong, though; no one is going to read this book cover to cover. Well, I guess you could read it from cover to cover if you're very bored from being trapped at home during this quarantine. I prefer to use it as a reference. If I have a problem or a question that I can't resolve, I turn to the index and find what I need. Yes, I know about the internet, but I don't have to muddle through dozens of bad results and dead-end links with this book in my hands.
Author: William Shotts
Price: $39.99/$26.30 on Amazon
Length: 458 pages
Rating: 4.5 Stars with 123 Reviews (Amazon)
The author organized the book into four main parts:
PART I: Learning the Shell
This part covers filesystem navigation, files, directories, commands, redirection, permissions, processes, and keyboard shortcuts. This first 100 pages is where new sysadmins need to spend their time learning and reviewing. This is where you learn to interact with Linux and get to know it. This section describes how to handle most of what a sysadmin does from a mechanical point-of-view. In other words, this is your day-to-day section. Learn it.
PART II: Configuration and the Environment
Shotts walks you through exploring your environment, which includes environment variables, startup scripts, and editing those files and variables. Also included here is a so-called gentle introduction to the vi editor. The vi editor is historically the editor on *nix systems. You should learn it to gain credibility in *nix circles. Any sysadmin worth their salary knows vi. Sure, you can venture out to others such as emacs or various graphical editors, but vi is or should be, your "Go To" command-line editor. Finally, the author teaches you how to customize your shell prompt. You can get pretty fancy, and some people love to create cool shell prompts. Personally, I stick with the default one.
PART III: Common Tasks and Essential Tools
This section of the book is for you when you're ready to tackle more advanced topics such as storage, networking, backups, package management, regular expressions (ugh), text processing, printing (haha), and compiling programs. These are the things that intermediate and senior-level sysadmins know. You need to know this material before your career can advance beyond junior-level or novice. This material is where interview questions are found. Know this material before you seriously call yourself a Linux administrator.
PART IV: Writing Shell Scripts
The author dedicated more than 100 pages to this section and deservedly so. Shell scripting is what separates wannabe Linux administrators from real Linux administrators. It's no longer about knowing some trivia or typing commands at a prompt, but now it's about making the system work for you. Shell scripting is an advanced skill that you need to acquire, and that's why Shotts used so many pages for it.
Scripting helps automate mundane tasks. Unless you love manually performing every task on your system, you'll need to learn shell scripting. The tasks that can be automated, should be automated. Be sure to document your scripts so that you remember what they're for and also so that you don't remove them during housekeeping events.
My overall rating for this book is a solid 4.5 out of 5 stars. The book has the appropriate depth and breadth to get a new administrator up and running without a lot of "in the weeds" discussion. This book is all about practical knowledge because it's written by a practicing system administrator, which is vital in learning the essentials. A book written by a practicing professional is much better than those written by a novice or someone who just thought writing a book was a good idea.
Shotts knows his stuff, and he also knows how to teach it to others. I'm very happy with this book as a reference. I mostly use it for PART IV: Writing Shell Scripts. For some reason, there are bits about loops and variables that I can just never remember. My recommendation is to buy the book. I purchased both the electronic and the paperback versions of it.
Linux system administration is not something you can learn on your own. Either you need a teacher, or you need a good book. This is that book. I've been a Linux sysadmin for more than 20 years, and I keep it at my desk. I also kept the first edition at my desk before this one was published. Before that, I had the classic O'Reilly Essential System Administration book by AEleen Frisch.
Trust me when I tell you that keeping your favorite books at your side is not a sign of weakness but of strength. No one knows everything, although some believe that they do. For me, The Linux Command Line is my constant companion because I know my limitations and am not afraid to look up something I don't know.
[ Want to learn more about shell scripting? Check out this free download: A sysadmin's guide to Bash scripting. ]