Updates
Latest Tweet
What's New?
Check out for latest innovation, a computer based training video collection
Like this Page
Beginning Unix (Programmer to Programmer) Review by avid programmer
Try another book
Here are a bunch of problems I discovered with this book(I had to omit half of them because of amazon's 1000 word limit for reviews):
1) Links (p.63)
There are some contradictory statements in this section. I found a website that does a good job of explaining hard links v. soft links, and it uses diagrams. Why didn't the authors use diagrams?
2) Deleting Files (p.73)
The authors say the rm command(remove) has a -f option that will remove a file without prompting for confirmation, e.g.
rm -f filename
However, when I use the rm command *without using the -f option*, it removes files without prompting for confirmation anyway. So, I'm left wondering what the -f option does. I have to use rm -i to make rm prompt me for confirmation before removing the file. The authors mention that you can create aliases for commands, which essentially means you can rename a command. So you can do this:
$ alias rm = "rm -i"
Thereafter, when you issue the rm command, unix will interpret rm to mean rm -i, and then the rm command will prompt you for confirmation before removing a file. Did the authors do that on their system? And is that why they say using rm -f is necessary to skip the confirmation message before removing a file? Who knows?
3) apropos (p. 110)
The authors say the command:
apropos keyword
can be used to find files with the specified keyword in their name. That doesn't work for me. I looked around on the internet, and I can't find any UNIX tutorials that say apropos will return file names with the specified keyword in them. In fact, after some more digging, I discovered that the apropos command is equivalent to man -k, and man -k searches the man pages for *descriptions* containing the specified keyword--it does not search filenames for the keyword, so the example in the book won't work.
4) Advanced Tools (chap. 8)
The authors decided to introduce regular expressions, which I know pretty well. Personally, I don't think regular expressions should be included in a beginning text on anything--although they are well worth learning for any computer language. So I was interested to see how the authors would tackle the subject. To my surprise, I found the author's introduction to patterns quite good--except for one little thing. They don't show you how to use the patterns with a unix command. The author's start out the section by telling you to type in an overly long amount of example text into a testfile. Then they say: "The results shown in each case represent output from your testfile if the example search were run on it". However, they don't tell you how to run an example search on the testfile. All they do is show you a pattern and what matches it would produce-- if you ran a search on the testfile. I don't think some(most?) beginners will be able to figure out how to perform a search on the testfile. The authors could have very simply combined all their example patterns with a simple vi search command(vi is a unix text editor). In vi, the '/' plus a specified pattern will search the file for the pattern and move the cursor to the matching word. That way a beginner could actually use one of the example patterns to search the testfile and see for themselves what it does.
5) grep p.160
Nowhere in the description of grep do the authors tell you what the command actually outputs. All they tell you is that grep is one of the most useful commands in UNIX. Great! What does it do? If you consult the man pages, i.e. man grep, you will learn that grep prints *the entire line* in a file if the line contains something that matches the pattern. I lost all respect for the author's ability to teach unix after that omission.
6) find (p.161)
The authors say if you issue the following commmand:
find /etc -name passwd
That command does nothing in Mac OS X. In Mac OS X, there is no ouput and no errors--even though there's a file called passwd in the /etc directory. Back to the man pages. This time the man pages weren't helpful in figuring out how the find command works. This is the worst section of the book so far.
I've only just finished chapter 8, but I feel like I should post this review now, so anyone considering this book will know what to expect.
I think these authors are too long removed from beginner status, and therefore they don't know how to speak to beginners. Unfortunately, this book contains contradictions and incomplete or confusing descriptions, and some things are just plain wrong. In addition, as I read the book I found myself repeatedly saying to myself, "Why didn't the authors simply say it like this?".
I was really excited about this book because I just started using an intel iMac with Mac OS X 10.4.7, and I wanted to learn some basic Unix. This book points out when other versions of Unix may have different commands or effects, and the authors specifically address Mac OS X differences throughout the text. However, nothing in the book explained some of the discrepancies I experienced when I tried some of the commands in Mac OS X. Did the descriptions contain mistakes or did the authors omit something? Or are things just different on Mac OS X? All three--as I found out.
I recently spotted the book Unix Visual QuickStart Guide(3rd edition) on the shelves of my local bookstore, and after reading some random sections, I wish I had purchased that book instead.