One of the really cool things about Mac OS X, the thing that scientists and engineers absolutely love, is that this OS is based on FreeBSD, a UNIX operating system. One can easily get to those UNIX internals and exploit the enormous capability and culture of UNIX. However, this capability can give newbies pause. For those who've always wanted to learn UNIX and the command line, this book is a fabulous place to start.
Learning UNIX is like learning to fly. You can have a lot of fun in a sailplane or Cessna 172 without working at the highest level in air-to-air combat in an F-22 Raptor. Similarly, there are many, many things a beginner in UNIX can do on the command line, if done with guidance and care. It's just a question of having the right tutorial guide that meets the specific needs of Mac users.
This book, "Take Control of The Mac Command Line with Terminal" by Joe Kissell is it. There aren't too many UNIX authors who have the UNIX skills, Mac knowledge and writing skills to put a book like this together. So if you've been wanting to learn UNIX and the Mac command line, this is absolutely the best book I have ever seen on the subject.
Here's what's covered. If you don't understand some of these terms, don't let that hold you back.
- The differences between Unix, a command line, a shell, and Terminal
- Exactly how commands, arguments, and flags work
- The basics of Terminal's interface and how to customize it
- How to navigate a Mac's file system
- Basic file management: creating files, copying files, opening files, etc.
- The types of command-line programs
- PATHs and profiles
- How to create and run scripts to automate repetitive tasks
- Checking which programs are running and what system resources they're consuming
- How to quit programs that won't to quit normally
- Enabling the command line to interact with the Finder
- Controlling another Mac via its command line using ssh
- Understanding and change an item's permissions, owner, and group
- Running commands as the root user using sudo
I really liked the focus of this book. Mr. Kissell knows exactly what you need to know, as a Mac user. He didn't get lost in UNIX geekdom, try to show off, go down quirky paths like opening a port in Bash, or detract from the single minded goal of teaching the user what she needs to know about UNIX basics. Some authors pad their books that way, and it's distracting. (But does increase the page count.) This is the advantage of an eBook.
Also, important notes with valuable clarifications are highlighted in pale yellow. This not only helps focus the reader on key concepts, but also breaks up the look and feel of the text, making it more approachable and readable.
The author, even though he keeps things simple for the newbie also has occasional tidbits that some more experienced users will find useful. For example, it's shown on page 27 how to right-click the user name in System Preferences -> Accounts to bring up some UNIX information that people familiar with Linux curse about when they can't find it in Mac OS X.
I found just one small nit. On page 30 the author talks about how to interpret the Unix 'ls' file listing. But he doesn't explain the "@" and "+" symbols sometimes found at the end of those lines. That would be a helpful addition.
There is no index, but the table of contents is extensive and, unlike most TOCs, is so well done, it can replace the index.
As a UNIX nut case myself, I have great respect for a product like this. To take a newbie through the UNIX command line in a Mac context with great focus, clarity and pedagogical skill is a work of art. The layout and production values of the book are also terrific. I give it my highest recommendation.
As an aside, if the reader wants to go to the next level in this process, here are two books to follow up with. Using the aircraft analogy, these books will get you from Cessnas to a T-38.
"Mac OS X for Unix Geeks," O'Reilly, 2008, Brian Jepson, et al.
"Mac OS X UNIX Toolbox," Wiley, 2009, Christopher Negus, et al.