April 22, 2012, 11:35 AM — Having used Unix for nearly 30 years and taught it for more than 10, I am all too familiar with the glaze that comes over new users' eyes when they are introduced to the all-powerful Unix command line. Many, in fact, find it quite difficult to understand why the command line is needed at all on modern operating systems. Others take weeks to appreciate concepts like pipes and redirection. And still others, who manage to get past these two learning obstacles, have trouble distinguishing commands that work with file descriptions (i.e., metadata) from those that work with file content. It's as if they've entered a new world in which all of the rules are new and nothing that they've done before is of any use in navigating this new OS terrain.
The problem with most introductions to Unix is that they cover too much too quickly. Even just the most important 20 or 30 commands, crisply covered in a table with examples, can be overwhelming. Until the key Unix concepts begin to gel in a new users' minds, nothing's going to sink in very deeply. Example commands look like gibberish and the syntactical descriptions that top man pages resemble hieroglyphics. There is a better way.
The Linux Command Line: A Complete Introduction is the better way. Instead of overwhelming Unix neophytes with a brand new way of thinking, it gets off the ground with some very basic operations. Open a terminal window, it says, type some random characters, and watch the system respond with "command not found". Let that sink in. The basic lesson taught in this interaction goes a long way. Neophytes see that the shell is trying to interpret whatever they've just typed and, when it has exhausted its resources, it says the equivalent of "I give up" in the characteristically Unix way -- "command not found".