Review: Learning Unix for Mac OS X (book)
Mac OS X’s Unix base seems to receive rather strange treatment from Apple and the press. Although it’s very powerful, it tends to be loudly ignored in favor of the candy-like Aqua interface; since it’s text-based, it’s not thought of as especially user-friendly. Combine that with the fact that many Macintosh users simply aren’t familiar with a command-line interface (or, worse, are taught to fear it!), and you end up with a lot of users missing out on some of the best features of OS X.
For Whom the Book Tolls
The first step in writing any instruction book is asking, what is my target audience? To whom is this book going to appeal? What kind of user? What will he/she want to know? What resources will he/she already have?
It seems as if Dave Taylor and Jerry Peek came up with an answer like this: the book is written for someone in an office environment, with access to a system administrator, who doesn’t really need to use Unix for anything that can’t easily be done from Aqua, and who wants only to use Unix, not to understand it.
Especially in early chapters, the book is peppered with phrases like “The details are more than we can cover in an introductory book.” In many places, only a few options for a particular Unix program are offered, the others silently ignored. The authors often “suggest that beginners get help from experienced users…” or “ask your system administrator for advice first…” There is a reference to “a very powerful command history syntax [that is] built into tcsh that allows you to recall a previous command by number,” but it is never elaborated on.
At this point, I expect to be told that I’m missing the point of the book. At a short 139 pages, of course there are topics that can’t be covered. This isn’t Unix Power Tools. Learning Unix for Mac OS X is written for beginners, who can buy another, more advanced book when they feel ready.
All true…but the typical Mac user does not have a system administrator to get help from when he needs it: Macs are found most often in homes or small businesses, where they are chosen because they don’t need a guru to maintain them. Also, Mac users have easy access to the attractive Aqua interface, where they can point and click their way through almost any task. If such a user is going to put aside that ease of use to type in memorized semi-cryptic commands at a command line, there’s going to have to be some serious advantage to doing so. A series of different options for listing the contents of a directory, or a half-page table of commands for moving about in and deleting words from a text file…well, that’s not going to cut it. The people who pick up this book, for the most part, will be looking for the fabled power built into Unix. They will be looking for things Unix can do better than Aqua, or that Aqua cannot do at all. This book is simply far too basic to satisfy.
The comment I made earlier, that Learning Unix for Mac OS X isn’t written for someone who wants to understand Unix, is not one I make lightly. But to me, the title of the book implies that at the end you will understand; understanding is the goal of learning, or it should be. This book teaches you how to get by in Unix, that’s all. (But then, how well do you think Muddling Through in Unix for Mac OS X would sell?)
What this book does teach you is more along the lines of, “How do I get to a directory and open a document?,” “How do I move or copy a file?,” “How do I edit a file?,” and the like. Yes, it’s essential to know these things if you are going to work in Unix at all. But at the end of the day, you’re not likely to fire up the Terminal just for the joy of editing a file in vi.
The book does teach a few tools available in Unix, such as wildcards, piping, and grep, that aren’t part of Aqua, but often they aren’t taught in such a way that their advantages over Aqua’s offerings are made clear. The grep command, particularly when combined with piping, is so useful that years ago, I would copy files from my Mac onto a Unix machine just to use that command on them. Learning Unix for Mac OS X, however, fails to give any idea of the power or usefulness of grep. Its examples consist of displaying lines of a file that contain a particular word, and listing files in a directory which were modified in a certain month. The first is not something which it’s easy to imagine being useful without a context, and the second is something which is easily (and better) accomplished within Aqua, by sorting files by modification date.
Peek’s and Taylor’s idea of “giving an example,” in most cases, is to show you something you can type at the command line—that’s it. That is exactly what I’m looking for in, for example, Unix in a Nutshell, an excellent book that lists Unix commands and programs with their options and syntax. But in an introductory book for first-time users, an example should include a real-world scenario which the reader might encounter, where it would be desirable to use the command being shown. That is the sort of example that can lead to understanding. While such examples are sometimes used, their occurrence is all too rare.
The best chapters of this book are the two that cover the Internet and Unix-based Internet programs such as Lynx (a text-only Web browser), Pine (an e-mail program), and ncftp (a (relatively) user-friendly FTP program). These sections are well-written and easy for a new Unix user to follow. Usenet news and IRC (both of which seem much more seldom used with the advent of Web-based bulletin boards and the likes of AIM and ICQ) are discussed as well. Even the talk program, which lets one Unix user chat with another on a simple split screen, is given a page.
…for Mac OS X
I was surprised by how little of Learning Unix for Mac OS X was OS X-specific. Since Unix is fairly new to Macs (or should that be vice-versa), and there are so many versions of Unix out there on so many platforms, it’s easy to imagine being worried about going to a bookstore and picking up a general introduction to Unix and expecting its contents to apply to OS X. It turns out that everything I know from working with Unix outside of OS X applies on OS X as well. On the other hand, most of the Mac OS X-specific information that needs to be provided in this book is there.
In addition to basic information about configuring and using the Terminal, printing issues that Mac users are likely to encounter are discussed quite well and at some length. The AppleTalk-aware atprint program, for printing to AppleTalk printers, is described, as is the process of configuring lpt (another print program) specifically for use on OS X. The enscript program, necessary for printing to postscript printers, is also explained.
A useful aside in a section about creating text files explains a problem with end-of-line markers that can make a text file created on a Mac look funny in Unix, or vice-versa. The programs m2u and u2m, which can fix this problem, are presented, and mention of tr is made, for more general translation of one character to another.
File permissions are discussed at some length, which will be especially useful for readers who are more accustomed to OS 9’s way of handling things. Unfortunately, mention is not made of how to change file permissions from within Aqua. Permissions-related issues that are likely to be encountered in Aqua—such as not being able to move, rename, or delete certain folders—are not addressed directly.
The only major OS X related omission, though, is the lack of instructions for activating the root account. The sudo command, which can temporarily give you full control over your system, is mentioned several times in the text of the book, but it does not appear in the book’s index, nor do “root user”, “NetInfo Manager”, or “su.” The NetInfo database gets an entry, but it only discusses printing. There is also an entry for “superuser,” which uselessly directs the reader to a page indicating what the default prompt is for the superuser, followed by a warning that you can accidentally damage your system if logged in as such.
Learning Unix for Mac OS X teaches some of the basic essentials of working in Unix, without going into sufficient detail to show why you might actually want to do so. It seems like brevity was a goal for this book, not a side-effect of its introductory nature. An introductory book should be chock full of situation-based examples, and should provide enough complexity to show the reader the usefulness of the system and to prompt some understanding of how it works. Readers interested in Unix would be better served by a book with more depth, and readers not interested in Unix will find little here to change their minds.