The Linux Command Line provides a perfect connector between my well-thumbed copy of "Learning the Unix Operating System" and more esoteric works like "Unix Power Tools," both from O'Reilly Books. You can find many books on programming, but lay users interested in just mastering the command line are often stuck browsing miles of forums, trying to piece together code samples that may contain mistakes or be ineffective for solving the problem at hand. Linux man pages are always available, but can be a bit cryptic for beginners. There's nothing like hands-on practice, so most people end up failing fast and often creating more problems than they solve. Don't get us wrong, this is a big part of learning to love Linux. If it ain't broke, you can still try to improve it, right? Being a tinkerer isn't a requirement for using Linux, but it helps. All the same, many intrepid adventurers find it hard to launch without some kind of map. The Linux Command Line book fills this spot admirably.
Schotts makes it clear early on that the book is to be read cover-to-cover rather than browsed like a typical reference title. The first few chapters cover very basic material like understanding what a command line and shell actually do, and how to get around under the hood in Linux. Each chapter introduces a few new commands, putting them into context by providing exercises and challenges that demonstrate the power of each command. Within the first 10 chapters, Schotts has introduced most of the components of shell programming, building up to introducing a simple shell script that will be improved on throughout the book. The focus of The Linux Command Line isn't on system administration, but there is some time given to understanding how to configure a Linux system. For users who want more control than can be had in GUI menus, this helps make you feel more connected to the software underpinning your desktop experience. Using the same formula of introducing a few commands in each chapter, Schotts addresses common use cases like installing software, using storage media, and networking.
If you're not interested in programming, the last 15-20% of The Linux Command Line may be wasted on you, but things are laid out in such a way that you've learned and used all the essential components of shell script programming within the first half of the book. Schotts provides a simple example of a script for reporting system information, but there are obviously a wealth of scripts out around the web, including on Schotts' own site. The gift to readers of The Linux Command Line is that scripts will no longer be inscrutable. Most of the critical elements of file management, editing, and flow control are explained in very simple terms that can be understood by non-programmers. Whether or not you invest the time to tackle the scripting techniques covered later in the book, The Linux Command Line gives you an awareness of the things you can accomplish using the shell that can't be easily done elsewhere. Simple issues we all face, like cleaning up your MP3 filenames, sorting and organizing stored photos, or backing up important information, all become tasks you can accomplish using the command line. The Linux Command Line is a perfect companion to more remedial guides to Linux that touch on the command only briefly, and also a terrific bridge to deeper technical programming books. Highly recommended.