Unix Power Tools

Errata for Unix Power Tools

Submit your own errata for this product.


The errata list is a list of errors and their corrections that were found after the product was released. If the error was corrected in a later version or reprint the date of the correction will be displayed in the column titled "Date Corrected".

The following errata were submitted by our customers and approved as valid errors by the author or editor.

Color Key: Serious Technical Mistake Minor Technical Mistake Language or formatting error Typo Question Note Update



Version Location Description Submitted By Date Submitted Date Corrected
Printed
Page xxxviii
first three lines (Acknowledgements

for third edition): "...the original authors. This includes Tim O'Reilly and Jerry Peek, among others previously mentioned, who contributed to past additions." NOW READS: "...the original authors. These include Tim O'Reilly and Jerry Peek, among others previously mentioned, who contributed to past editions."

Anonymous    Apr 01, 2004
Printed
Page xxx
2nd paragraph, last sentence

To get one of these programs, use our visit the web site: NOW READS: To get one of these programs, visit the web site:

Anonymous    Apr 01, 2004
Printed
Page xxxviii
first three lines (Acknowledgements

for third edition): "...the original authors. This includes Tim O'Reilly and Jerry Peek, among others previously mentioned, who contributed to past additions." NOW READS: "...the original authors. These include Tim O'Reilly and Jerry Peek, among others previously mentioned, who contributed to past editions."

Anonymous    Apr 01, 2004
Printed
Page xxx
2nd paragraph, last sentence

To get one of these programs, use our visit the web site: NOW READS: To get one of these programs, visit the web site:

Anonymous    Apr 01, 2004
Printed
Page 7
second bullet

In this sentence: A interactive command, running 'inside' a tty ,... I suggest that there be an xref link for the word 'tty'. It has not been defined yet, I think, and it's an important concept.

Note from the Author or Editor:
This should refer to article 2.7. That is, it should be changed to say: tty(2.7) Also, on page 1106 of the index, there's an entry in the second column for: tty, 7 this should point to page 37 (article 2.7) instead of to page 7.

Anonymous   
Printed
Page 11
next-to-last paragraph

In this sentence: "But there's a catch: the Mac uses a carriage return ASCII character 015 to mark the end of each line,while Unix uses a linefeed (ASCII 012)." The phrase "ASCII 015" should be in parentheses. (12 (and others?)) command-line examples; The Preface shows that this book uses both constant-width Italic and boldfaced constant-width Italic in examples. If I understand the convention, then the user input in the examples on this page (the filenames file.mac, file.unix, file1, file2, file3) should be boldfaced. There may be other cases of the same problem in articles taken directly from the second edition. I don't think we used boldfaced constant-width italic in UPT2. So I won't report every occurrence of this problem... but you might want to search for it.

Note from the Author or Editor:
There are actually two separate errata here: - adding parentheses on page 11 - fixing the font on pages 11 and 12 (and maybe other pages) I agree with both. They're a bit confusing but not urgent.

Anonymous   
Printed
Page 11
Second example

shelleyp*:1006:1006:Shelley Powers:/usr/home/shelleyp:/usr/local/bin/bash NOW READS: shelleyp:*:1006:1006:Shelley Powers:/usr/home/shelleyp:/usr/local/bin/bash

Anonymous    Apr 01, 2004
Printed
Page 11
Second example

shelleyp*:1006:1006:Shelley Powers:/usr/home/shelleyp:/usr/local/bin/bash NOW READS: shelleyp:*:1006:1006:Shelley Powers:/usr/home/shelleyp:/usr/local/bin/bash

Anonymous    Apr 01, 2004
Printed
Page 18
in text just below Table 1-1, in 'file, but are not actually...'

delete 'are' i.e., so it reads 'file, but not actually'

Anonymous   
Printed
Page 19
next-to-last paragraph

In the second sentence below: "There is one exception to these wildcarding rules. Wildcards never match /, which is both the name of the filesystem root (1.14 and the character used to separate directory names in a path (1.16). The only way to match on this character is to escape it using the backslash character ()." the backslash business seems like it may be wrong. I don't have a Unix system handy (I am using Windows right now), but I would suggest that the author check simple shells like ash to be sure that backslashes work absolutely everywhere.

Note from the Author or Editor:
The last two sentences of this paragraph are misleading and inaccurate. I suggest changing the paragraph to read: "Most wildcards do not match /, which is both the name of the filesystem root (1.14) and the character used to separate directory names in a path (1.16). For example, you can match all files starting with a digit in all subdirectories starting with "a" using the wildcard expression a*/[0-9]* ; you must include the /. There's one exception: the Z shell's recursive wildcard operators ** and *** will look into subdirectories and include as many / characters as needed to complete the expression." It might be worth adding an entry to table 27-3 on page 538 for the zsh ** and *** wildcard operators, then refer to that article 27.17 from here.

Anonymous   
Printed
Page 21
1st paragraph

"Most" is spelled "mfost" in "...because it starts with the mfost specific part.."

Note from the Author or Editor:
Page 21, para 1, sentence 3, change mfost to most

Anonymous    Jun 01, 2009
Printed
Page 26
End of article 1.17

The last paragraph refers to Figure 1-1 in the following sentence: So, as Figure 1.1 shows, there are a total of nine mode bits (three for each class) that set the basic access permissions. it should say: So, there are a total of nine mode bits (three for each class) that set the basic access permissions. (figure 1-1 is for something different, and the figures for permission bits were removed in the 3rd edition) *******************************************

Anonymous    Feb 01, 2007
Printed
Page 26
End of article 1.17

The last paragraph refers to Figure 1-1 in the following sentence: So, as Figure 1.1 shows, there are a total of nine mode bits (three for each class) that set the basic access permissions. it should say: So, there are a total of nine mode bits (three for each class) that set the basic access permissions. (figure 1-1 is for something different, and the figures for permission bits were removed in the 3rd edition) *******************************************

Anonymous    Feb 01, 2007
Printed
Page 28
4th paragraph

In this sentence: "Tcl is particularly prevelant within Linux systems, though it's use is widespread throughout all Unix systems." 1)"Prevelant" HAS BEEN CHANGED to "prevalent". 2)"it's" HAS BEEN CHANGED to "its"

Anonymous    Apr 01, 2004
Printed
Page 28
4th paragraph

In this sentence: "Tcl is particularly prevelant within Linux systems, though it's use is widespread throughout all Unix systems." 1)"Prevelant" HAS BEEN CHANGED to "prevalent". 2)"it's" HAS BEEN CHANGED to "its"

Anonymous    Apr 01, 2004
Printed
Page 28
First line

In the sentence "These three scripting languages seem so prevelant within the Unix world that I think of them as the Unix Scripting language triumvirate." either the word "Scripting" should start with a lowercase letter, or the phrase "Unix Scripting language triumvirate" should have all words initial-capped. are to an article that explains more about the concept or problem printed in gray." The text is gray. But the article number reference, like (1.23), isn't there. I thought this might be a problem in the PDF file, but the ch01.pdf file shows a link properly. Since the sentence above is an introductory sentence meant to show an in- sentence link, I've marked this as a (possible) serious problem.

Note from the Author or Editor:
Page 28, first para, first sentence, change to Unix Scripting Language Triumvirate. Second problem, cannot locate the reference in the page, so cannot give directions to fix.

Anonymous    Jun 01, 2009
Printed
Page 31
2nd paragraph

In this sentence: "Unix boxes are, by default, characters-based systems." I think that "characters-based" should be "character-based". At least, I've always seen it written that way.

Note from the Author or Editor:
The reader is correct. But the article could use other changes on the same page. Please make the following three changes: 1) The change the reader suggested. 2) In the same paragraph, add a cross-reference to article 1.4 after "GUI". That is, the second sentence of the second paragraph should start this way: "GUI (1.4) systems are added to facilitate..." (Note that UPT uses automatic cross-references that fill in the article number at formatting time. Please don't type the 1.4 in literally; use a cross-reference instead.) 3) The third paragraph uses the incorrect term "X Windows". It also lists a website that doesn't exist anymore. Please revise the third (last) paragraph on page 31 to read: "Though Darwin doesn't come with the X Window System, versions of X are available for Mac OS X."

Anonymous    Jun 01, 2009
Printed
Page 34
top of page, 1st line of example

% whereis more should be: % whereis cat

Note from the Author or Editor:
The reader is correct. Please make this change.

Anonymous    Jun 01, 2009
Printed
Page 38
The last line of article 2.8 mentions "the CD-ROM". The third

edition has no CD-ROM! A quick search through the book's files showed this same problem in other articles. Maybe this needs to be replaced with a globe icon or a mention of the source code on the Internet.

Note from the Author or Editor:
This is the same problem described in another error -- on page 389, where the book mentions "the disc". I suggest a global search for "disc", "CD-ROM", and "CD". Each of those will need its own fix. In this particular case, please change: "The GNU who, on the CD-ROM, has more features than some other versions." to: "Your version may have more options. To find out, type man who." Make the "man who" in constant-width font. If there's not enough room for that, you could remove the "..." on the line after the second set of three who | grep examples.

Anonymous    Jun 01, 2009
Printed
Page 84
In the last example, the blank line

(after the line starting with "alias setprompt") shouldn't be there. The blank line makes the C shell give an error about unmatched quotes. *******************************************

Anonymous    Feb 01, 2007
Printed
Page 84
In the last example, the blank line

(after the line starting with "alias setprompt") shouldn't be there. The blank line makes the C shell give an error about unmatched quotes. *******************************************

Anonymous    Feb 01, 2007
Printed
Page 88
Last sentence on the page: The angle-brackets around the quotes

should be removed. If a naive reader types this command, it could destroy files: echo <">$explan<"> I think those brackets are from the old days of writing the book source in troff. (It meant: "use straight quotes, not curly quotes, for this doublequote character.") You might want to search all of the book files for that sequence; it is probably wrong anywhere it's used.

Anonymous   
Printed
Page 106
4th paragraph

stystems should read: systems whitespce should read: whitespace *******************************************

Anonymous    Feb 01, 2007
Printed
Page 106
4th paragraph

stystems should read: systems whitespce should read: whitespace *******************************************

Anonymous    Feb 01, 2007
Printed
Page 121
I believe that this page is missing a globe icon for the dedent

script (which doesn't seem to be shown on this page, either; that may be another error).

Note from the Author or Editor:
In the middle of the page, in the margin next to the paragraph starting "Let's look at three examples of dedent", should be a globe icon with the word: dedent underneath.

Anonymous   
Printed
Page 141

Last paragraph reads: "If you have ssh (1.21), its X forwarding..." Maybe I just missed it in my quick scan through the book... but it seems like there must be a better cross-reference for ssh than article 1.21. Chapter 51 doesn't seem to introduce ssh and its features (like X forwarding); if there isn't an overview of ssh somewhere else, there should be.

Note from the Author or Editor:
I suggest changing this to: "If you have ssh (51.2), its X forwarding..." If there's another edition, it would be great to add an introductory ssh article that explains how to use ssh, redirect its input and output, suspend it with ~CTRL-Z, and so on. Some of this info is mentioned in parts of Chapter 51, but this is such an important program that an explicit intro would be good.

Anonymous   
Printed
Page 141

Footnote with "*", reads: "Most of the recent distributions of Unix default to the use of ssh as a secure replacement for the various r* command, (rsh, rcp, rlogin, et al.), so you may want to skip ahead to Chapter 5." That footnote has two typos. First, change "various r* command," to "various r* commands" (plural, and without the comma). Second, "skip ahead to Chapter 5" should probably be changed to "skip ahead to Chapter 51"... or maybe "skip back to Chapter 5"? Also, the footnote doesn't make complete sense. Just because Unix implementations replace r* commands with ssh, why should readers skip to another chapter? Giving the chapter title, or a brief description of the chapter, could help them understand.

Note from the Author or Editor:
The reader is correct, but this isn't an important problem. I suggest changing the footnote to read: "Most of the recent distributions of Unix default to the use of ssh as a secure replacement for the various r* commands (rsh, rcp, rlogin, et al.). Chapter 51 introduces ssh." Also, in the last paragraph on the page, beginning: "If you have ssh (1.21), ..." the xref should be to Chapter 51, probably article 51.2: "If you have ssh (51.2), ..."

Anonymous   
Printed
Page 154
article 9.1, last sentence ends

"take a peek at chapter Chapter 9." 'nuff said. ;-)

Anonymous    Jun 01, 2009
Printed
Page 184
Table 9-1, Line 1

The character for "Block special file" of the -type operator HAS BEEN CHANGED to B, instead of c.

Anonymous    Apr 01, 2004
Printed
Page 184
Table 9-1, Line 1

The character for "Block special file" of the -type operator HAS BEEN CHANGED to B, instead of c.

Anonymous    Apr 01, 2004
Printed
Page 214
The reference to Figure 10-1 is wrong. The actual Figure 10-1

seems to be missing! The book's first two editions had *two* related figures: the first for "cp -r" and the second for "tar". In the third edition, the "cp -r" article (10.12) seems to be referring to the "tar" figure, which is several pages later in article (10.13). This is a major error that will confuse readers; the "cp -r" figure is different than the "tar" figure, and the contrast between the two figures is important.

Note from the Author or Editor:
This error needs fixing, but I think there's no room to simply add the missing figure. I've sent detailed email to Marlowe and Mike L. to suggest reworking articles 10.12 and 10.13 until a new edition comes out. I'm not certain of the fix yet, but I wanted to confirm and submit this error report because the problem is serious. Here's my TENTATIVE solution to the problem, taken from the email message I just wrote. This should be confirmed with the technical editor: - First, replace Figure 10-1 with Figure 18-2 from the second edition. Move this (revised) Figure 10-1 into article 10.12 - Mention the "cp -d" option prominently at the start of article 10.12... and then say that's what (the revised) Figure 10-1 depicts. - Replace the first bullet under "Some gotchas:" (page 215) to explain what happens if you don't use "cp -d". Also tell people that if they don't have "cp -d", they can use "tar" instead (refer to article 10.13). - Finally, update article 10.13 to refer back to Figure 10-1 (which will now be in article 10.12).

Anonymous   
Printed
Page 226
The next-to-last paragraph and the last example in article 11.6

mention the "!" (exclamation point) script but imply that it's a standard part of Unix, like process substitution. It's a script that comes with this book, and the reader has to install the script before it will work. So I think it should have a cross-reference here.

Note from the Author or Editor:
Yes, it needs a globe icon in the margin with the name ! underneath the globe.

Anonymous   
Printed
Page 250
The first example in article 13.4 has a blank line in the

egrep output. It shouldn't.

Note from the Author or Editor:
The reader is correct. Please remove the blank line (between "AT&T Bell Labs" and "Symtel Labs of Chicago") from the example.

Anonymous    Jun 01, 2009
Printed
Page 253
At top of page

The book refers to rcsgrep, rcsegrep, and rcsfgrep, but it doesn't have a globe icon to point readers to the archive. So this needs a globe icon.

Anonymous   
Printed
Page 253
At top of page

The book refers to rcsgrep, rcsegrep, and rcsfgrep, but it doesn't have a globe icon to point readers to the archive. So this needs a globe icon.

Anonymous   
Printed
Page 261
In the first example the highlighting in the hgrep output doesn't

appear. There are probably a few other places in the book that use the same highlighting technique: one of the "diff" family (maybe sdiff?), the "less" command, and something else. This might be worth checking the whole book for.

Note from the Author or Editor:
The book uses Italics instead of highlighting, but it doesn't mention this. As the description says, there may be other places in the book with the same problem. (I don't think it's so serious, though, so I've reduced the classification from an "important" problem.) The best solution would be to show hgrep output as it's shown in the second edition, article 27.20, page 491. (Maybe you could use a figure instead of plain text.) But if that's too hard to do, please add a sentence something like the following at the end of the first paragraph: "(We've shown the highlighted strings in Italic text.)" and also make "Italic text" in Italics. If someone at O'Reilly could also flip through the second edition to see whether there are other places with this problem, it could save some confusion.

Anonymous   
Printed
Page 275
in the third complete paragraph is

"But stil,automated deletion commands make me really nervous,..." Change "stil" to "still".

Note from the Author or Editor:
The reader is correct. Please make this change.

Anonymous    Jun 01, 2009
Printed
Page 283
The globe icon lists a program

named "bzip", but the text doesn't describe it. ("gzip" has an icon on the previous page. Maybe that's what was meant to be here?) I'm guessing that "bzip" should be deleted.

Note from the Author or Editor:
The reader is correct. Please remove "bzip" from under the globe icon. (The globe icon should have only one line underneath it: "bzip2".)

Anonymous    Jun 01, 2009
Printed
Page 304
In the second line

"differences in word count between two files..." change "differences" to "difference". (There's only one difference between the two files.)

Note from the Author or Editor:
The reader is correct. Please make this change.

Anonymous    Jun 01, 2009
Printed
Page 310
Just got the book (3rd edition). You've probably already heard it

from somewhere, but I find that the ":wn" vi command (p. 310, 17.3) does not work on my system (Solaris 8 I believe).

Note from the Author or Editor:
The reader is correct, though I think the problem is limited to some versions of vi -- so I've changed this from a "serious" mistake to a "minor" mistake. On the second and third lines of page 310, please change the following sentence: "You can type :wn both to save..." so it begins as follows: "On many versions of vi, you can type :wn both to save..."

Anonymous    Jun 01, 2009
Printed
Page 331
Third entry in table 17-1

On the printed page, both the second and third entries are d'a (with a "closing single quote" or "acute accent"). The third entry should be d`a (with an "opening single quote" or a "grave accent").

Jerry Peek
O'Reilly Author 
Feb 11, 2010 
Printed
Page 332
6th line of first paragarph (not counting the table or the note)

The sentence: 4$ moves to the end of the third line below the current; 4 merely moves to the first nonblank character of the current line. should read: 4$ moves to the end of the third line below the current; 4^ merely moves to the first nonblank character of the current line. ie. the ^ (caret) in " 4^ merely moves ..." is missing.

Jerry Peek
O'Reilly Author 
Feb 11, 2010 
Printed
Page 379
4th paragraph starting with "As you can guess", first line

Change "demostration" to "demonstration" *******************************************

Anonymous    Feb 01, 2007
Printed
Page 379
4th paragraph starting with "As you can guess", first line

Change "demostration" to "demonstration" *******************************************

Anonymous    Feb 01, 2007
Printed
Page 389
end of third paragraph mentions "the disc". This is referring

to the CD-ROM, which the third edition doesn't have. I'd suggest a global search for "disc" (we spelled it with a "c" on the end, to distinguish it from a hard disk, which had a "k" on the end, I think). Replace these references with words about the book's web pages or etc.

Note from the Author or Editor:
This needs to be fixed on page 389. Please do check the rest of the book. I just sent email to Marlowe with more information.

Anonymous    Jun 01, 2009
Printed
Page 393
In the first line on page, change "lets" to "let".

and 2nd line of paragraph that begins with 'Another solution ....' change "heurestics" to "heuristics"

Note from the Author or Editor:
Page 393, change "lets" to let in first sentence, first para. Page 393, change heurestics to heuristics in para 5, sentence 2

Anonymous    Jun 01, 2009
Printed
Page 404
Fourth paragraph of section 21.11, last sentence

"To change all the files in the current directory to uppercase, try this..." should be: "To change all the files in the current directory to lowercase, try this..."

Anonymous   
Printed
Page 404
Fourth paragraph of section 21.11, last sentence

"To change all the files in the current directory to uppercase, try this..." should be: "To change all the files in the current directory to lowercase, try this..."

Anonymous    Jun 01, 2009
Printed
Page 422-429
All through the section

The obsolete syntax +POS1 -POS2 that's used throughout the chapter isn't supported by some versions of "sort" anymore. The chapter should be revised to use the -k option. Also, the chapter doesn't cover the effect of the locale on collation. For instance, in the "old way" (ASCII collation), upper- and lower-case letters sort separately. Now -- in en_US or ISO-8859-1, at least -- upper- and lower-case sort together. For example: Original file: Baby Apple baby apple Old sort order: Apple Baby apple baby New sort order: apple Apple baby Baby (BTW, I'm one of the book's authors [Jerry Peek].)

Anonymous   
Printed
Page 422-429
All through the section

The obsolete syntax +POS1 -POS2 that's used throughout the chapter isn't supported by some versions of "sort" anymore. The chapter should be revised to use the -k option. Also, the chapter doesn't cover the effect of the locale on collation. For instance, in the "old way" (ASCII collation), upper- and lower-case letters sort separately. Now -- in en_US or ISO-8859-1, at least -- upper- and lower-case sort together. For example: Original file: Baby Apple baby apple Old sort order: Apple Baby apple baby New sort order: apple Apple baby Baby (BTW, I'm one of the book's authors [Jerry Peek].)

Anonymous   
Printed
Page 427
Section 22.6, 2nd bullet, 2nd sentence

"...if the sort fields (22.2) you've selected match." should be: "...if the sort fields (22.2) you've selected don't match."

Anonymous   
Printed
Page 427
Section 22.6, 2nd bullet, 2nd sentence

"...if the sort fields (22.2) you've selected match." should be: "...if the sort fields (22.2) you've selected don't match."

Anonymous    Jun 01, 2009
Printed
Page 435
First sentence

"...Unix is a mutliprocessing system." should be: "...Unix is a multiprocessing system."

Anonymous   
Printed
Page 435
First sentence

"...Unix is a mutliprocessing system." should be: "...Unix is a multiprocessing system."

Anonymous    Jun 01, 2009
Printed
Page 435
First paragraph, last sentence: change "prevasive" to "pervasive".

Note from the Author or Editor:
The reader is correct. Please make this change.

Anonymous    Jun 01, 2009
Printed
Page 437
Section 23.2, 1st paragraph, last sentence

"This article tries to give you some background into, er, background processes." should be: "This article tries to give you some background on, er, background processes."

Anonymous   
Printed
Page 437
Section 23.2, 1st paragraph, last sentence

"This article tries to give you some background into, er, background processes." should be: "This article tries to give you some background on, er, background processes."

Anonymous    Jun 01, 2009
Printed
Page 437
6th line of 1st paragraph in Article 23.2: the word is

metaphors not metaphores

Note from the Author or Editor:
The reader is correct. Please make this change.

Anonymous    Jun 01, 2009
Printed
Page 438
4th line of 1st paragraph in Article 23.3: change "derviates"

to "derivatives"

Note from the Author or Editor:
The reader is correct. Please make this change.

Anonymous    Jun 01, 2009
Printed
Page 457
first paragraph

The options required to do this differ between BSD Unix and System V. Under BSD Unix, the command is ps -aux, which... NOW READS: The options required to do this differ between BSD and System V Unix. Under BSD, the command is ps aux, which... AND % ps -aux | head -5 NOW READS: % ps aux | head -5

Anonymous    Apr 01, 2005
Printed
Page 457
first paragraph

The options required to do this differ between BSD Unix and System V. Under BSD Unix, the command is ps -aux, which... NOW READS: The options required to do this differ between BSD and System V Unix. Under BSD, the command is ps aux, which... AND % ps -aux | head -5 NOW READS: % ps aux | head -5

Anonymous    Apr 01, 2005
Printed
Page 459
after 2nd paragraph

% ps -aux | grep chavez NOW READS: % ps aux | grep chavez

Anonymous    Apr 01, 2005
Printed
Page 459
after 2nd paragraph

% ps -aux | grep chavez NOW READS: % ps aux | grep chavez

Anonymous    Apr 01, 2005
Printed
Page 461
2nd line of 1st paragraph in BSD

remove one of the 'the' between concatenating and results

Note from the Author or Editor:
The reader is correct. Please make the change listed under "Detailed description of error".

Anonymous    Jun 01, 2009
Printed
Page 464
1st paragraph

ststistics should be statistics

Anonymous   
Printed
Page 464
1st paragraph

ststistics should be statistics

Anonymous    Jun 01, 2009
Printed
Page 467
2nd line of paragraph starting 'The other three ...'

change configuring to configure

Note from the Author or Editor:
Please make the change given under "Detailed description of error".

Anonymous    Jun 01, 2009
Printed
Page 476
last paragraph

With -i, cruncher lists ... should read With -i, killall lists ...

Note from the Author or Editor:
Make the change as described under "Detailed description of error"

Anonymous    Jun 01, 2009
Printed
Page 478
The third line on the page says that the book's shell programming chapters are Chapters 46 to 48.

Those chapter references NOW READ, respectivey: Chapters 35 to 37.

Anonymous    Apr 01, 2004
Printed
Page 478
The third line on the page says that the book's shell programming chapters are Chapters 46 to 48.

Those chapter references NOW READ, respectivey: Chapters 35 to 37.

Anonymous    Apr 01, 2004
Printed
Page 519
The five command lines in the middle of the page indicated to update the shell's path with

the commands ".," and "source,". The commas were errorsand those command names HAVE BEEN CHANGED to simply "." and "source".

Anonymous    Apr 01, 2004
Printed
Page 519
The five command lines in the middle of the page indicated to update the shell's path with

the commands ".," and "source,". The commas were errorsand those command names HAVE BEEN CHANGED to simply "." and "source".

Anonymous    Apr 01, 2004
Printed
Page 527
Table 27-1

In the second line of the table, the Explanation lists the three special characters $ (dollar), ' (single quote) and \ (backslash). The second character should be ` (backquote). In other words, change the ' in the second line to `. (If this isn't clear, look at the corresponding line of Table 8-1 from the book's second edition. It is correct.)

Note from the Author or Editor:
Please make the correction listed under "Detailed description of error."

Jerry Peek
O'Reilly Author 
May 22, 2009  Jun 01, 2009
Printed
Page 530
In Figure 27-1, the copyright sym-

bols should be single straight quotes. (See that same figure in the second edition.)

Anonymous   
Printed
Page 530
In Figure 27-1, the copyright sym-

bols should be single straight quotes. (See that same figure in the second edition.)

Anonymous   
Printed
Page 563
Article 28.15, last sentence.

The word 'doesn't' previously appeared between "workarounds" and "that." This HAS BEEN DELETED.

Anonymous    Apr 01, 2005
Printed
Page 563
Article 28.15, last sentence.

The word 'doesn't' previously appeared between "workarounds" and "that." This HAS BEEN DELETED.

Anonymous    Apr 01, 2005
Printed
Page 563
next to last line of section 28.15

remove the word, doesn't

Note from the Author or Editor:
The reader is not correct; this is not an error. However, the article could be made clearer (and maybe it was confusing the reader). Please change the last two sentences, which are currently: "If this happens, use xargs (28.17). If your system doesn't have xargs, there are other workarounds that should solve the problem." Replace them with these two sentences: "If this happens, use xargs or a related solution. See article 28.17." (NOTE: In case you aren't familiar with UPT formatting, the 28.17 should not be typed in literally. Instead, it should be a cross-reference that's automatically filled in with the proper article number as the page is formatted.)

Anonymous    Jun 01, 2009
Printed
Page 611
end of 3rd paragraph in "Emacs Editing Mode"

Current text: "and C-w deletes ("wipes") backward to the start of the line" Should read something like either "and C-w deletes up the previous white-space (delete "word")" or "and C-u deletes backward to the start of the line". It makes a difference if you have a command line with multiple words on it -- if you're at the end of "grep -i foo bar.txt", C-w will delete "bar.txt" while C-u will delete the whole thing.

Tim Chase  Sep 03, 2010 
Printed
Page 618
IN PRINT: Part 6: Scripting

NOW READS: Part IV: Scripting

Anonymous    Apr 01, 2005
Printed
Page 618
IN PRINT: Part 6: Scripting

NOW READS: Part IV: Scripting

Anonymous    Apr 01, 2005
Printed
Page 664
vgrep script of section 33.7, "Getting a List of Nonmatching Files"

One could make 2) superfluous by writing: grep -c -e "$pat" "$@" /dev/null | sed -n "s|:0$||p" | grep -v "/dev/null" in the *) branch. Now, as sole reason for the case statement remains the help message for too few parameters. I tested this on my Linux box (Kubuntu Edgy Eft) only. So there's pretty sure some drawback for this solution.

Note from the Author or Editor:
Actually, GNU grep now includes the option -L, --files-without-match, which does the same thing as the vgrep script. Also, GNU grep includes the options -H, --with-filename and -h, --no-filename which would let the vgrep script avoid the "case" statement altogether. This issue probably needs to be decided when/if the book has a fourth edition.

Anonymous   
Printed
Page 670-671
bottom of 670, top of 671

Here are some general notes about runsed and about sed in general. These should be mentioned either here or maybe in an earlier article like 32.2. One advantage of editing with runsed, vs. writing a script for a scriptable editors like ed and ex, is that there's no length limit to the file. If you want to edit a 3-terabyte text file, you can! (runsed assumes that the filesystem has enough free space, though. If it doesn't, you'll need to hack runsed to put its temporary file in another filesystem.) Also, here's a new checksed. It accepts command-line options like -u, which it passes to diff; this is handy if you want to use a "context diff", to control the number of lines of context you see, and so on. This checksed doesn't have the simplicity of the original version, so maybe it should be added as a supplemental version. #! /bin/sh # $Id: checksed,v 1.2 2004/03/13 17:34:18 jpeek Exp $ # # checksed - run 'sed -f sedscr' on a file and show diff of what it would do diffopts= script=sedscr # Loop through command-line arguments. # Print header before each file's results. # Then run sed and show the changes script would make. # Pipe the output of all commands to a pager (default: less). for arg do # Grab any options for "diff". BUG: Doesn't handle option # arguments like "-C 1". Option and argument can't have # space between. You can use long options, though, like # --context=2. case "$arg" in -*) diffopts="$diffopts $arg"; continue ;; esac echo "********** < = $arg > = sed output **********" sed -f $script "$arg" | diff $diffopts "$arg" - done | ${PAGER-less}

Anonymous   
Printed
Page 670-671
bottom of 670, top of 671

Here are some general notes about runsed and about sed in general. These should be mentioned either here or maybe in an earlier article like 32.2. One advantage of editing with runsed, vs. writing a script for a scriptable editors like ed and ex, is that there's no length limit to the file. If you want to edit a 3-terabyte text file, you can! (runsed assumes that the filesystem has enough free space, though. If it doesn't, you'll need to hack runsed to put its temporary file in another filesystem.) Also, here's a new checksed. It accepts command-line options like -u, which it passes to diff; this is handy if you want to use a "context diff", to control the number of lines of context you see, and so on. This checksed doesn't have the simplicity of the original version, so maybe it should be added as a supplemental version. #! /bin/sh # $Id: checksed,v 1.2 2004/03/13 17:34:18 jpeek Exp $ # # checksed - run 'sed -f sedscr' on a file and show diff of what it would do diffopts= script=sedscr # Loop through command-line arguments. # Print header before each file's results. # Then run sed and show the changes script would make. # Pipe the output of all commands to a pager (default: less). for arg do # Grab any options for "diff". BUG: Doesn't handle option # arguments like "-C 1". Option and argument can't have # space between. You can use long options, though, like # --context=2. case "$arg" in -*) diffopts="$diffopts $arg"; continue ;; esac echo "********** < = $arg > = sed output **********" sed -f $script "$arg" | diff $diffopts "$arg" - done | ${PAGER-less}

Anonymous   
Printed
Page 677
code example at top of page

On the 6th line of the sed script, an escaped slash(/) is missing inside the closing HTML tag. It should be: s/$/</h1>

Anonymous   
Printed
Page 677
code example at top of page

On the 6th line of the sed script, an escaped slash(/) is missing inside the closing HTML tag. It should be: s/$/</h1>

Anonymous    Jun 01, 2009
Printed
Page 677
first sed code

On the 4th line of the sed script, you have to add a slash(/) to terminate the "s" command. i.e. a slash is missing at the end of the 4th line of the sed script. (right after the <h1>)

Note from the Author or Editor:
The reader is correct. But there's another error that the reader didn't report. Please change the fourth line of the example as the reader said. That is, change the following line: <h1> to this: <h1>/ ALSO, the 6th line of the script is missing two characters. The best fix involves changing both lines 6 and 7. So, please do the following two things: 1) Replace lines 6 and 7, which are currently: s/$/<h1>\ / with the following two lines: s@$@</h1>\ @ 2) Also, change the last sentence of the article, which is currently: "The last command matches the end of line in the pattern space (not the embeddded newline) and adds a close h1 tag and a newline after it." to this instead (I hope it fits on the page!): "The last command matches end of line in the pattern space (not the embedded newline); it appends </h1> and a newline. We use @ as the delimiter, instead of /, to avoid conflicts with the / in </h1>." Both occurrences of </h1> should be in constant-width font. If that doesn't fit on the page, maybe I can revise it? Please contact me (jpeek@jpeek.com) or the technical editor (Mike Loukides? Andy Oram?) if needed.

Anonymous    Jun 01, 2009
Printed
Page 697
The first line of both examples on this page started with "+sed"

The "+" character in each line HAS BEEN REMOVED to make the lines start with "sed".

Anonymous    Apr 01, 2004
Printed
Page 697
The first line of both examples on this page started with "+sed"

The "+" character in each line HAS BEEN REMOVED to make the lines start with "sed".

Anonymous    Apr 01, 2004
Printed
Page 713
Code snippet at bottom of page, 1st and 2nd lines

1st line: "+case" should be "case" 2nd line: "vt100" should be "vt100)"

Anonymous   
Printed
Page 713
Code snippet at bottom of page, 1st and 2nd lines

1st line: "+case" should be "case" 2nd line: "vt100" should be "vt100)"

Anonymous    Jun 01, 2009
Printed
Page 713
below source code

+case "$TERM" in vt100 echo ..... => case "$TERM" in vt100) echo..... ")" missed.. (^________^)

Note from the Author or Editor:
The reader is correct: there are two errors here. However, the reader's solution isn't easy to understand. Please replace the first two lines of the first example, shown here: +case "$TERM" in vt100 echo 'ea[w' | tr 'eaw' '\033\001\027' ;; with the following two lines: case "$TERM" in vt100) echo 'ea[w' | tr 'eaw' '\033\001\027' ;; I'll say that another way: - On the first line of the example, remove the "+" at the start of the line. And, - On the second line of the example, add a closing parenthesis after "vt100". That is, change "vt100" to "vt100)". A third way to see this change is by looking at the first two lines of the example in article 44.05 on page 828 of the second edition. That example is correct.

Anonymous    Jun 01, 2009
Printed
Page 717
First code snippet, 1st line

"+if" should be "if" (732 Footnote text on page 733 is and 733 ) referenced on page 732

Anonymous   
Printed
Page 717
First code snippet, 1st line

"+if" should be "if" (732 Footnote text on page 733 is and 733 ) referenced on page 732

Anonymous    Jun 01, 2009
Printed
Page 751
2nd example

From author: If space allows, replace current code with the following: while read line ; do eval $line mail -s "$s" $u < $f done <<"EOF" u=donna f=file23 s='a memo' u=steve f=file34 s=report u=ellie f=file16 s='your files' EOF *If you are able to use this for the reprint, please add Stephen Samuel to the Acknowledgments.

Anonymous   
Printed
Page 751
2nd example

From author: If space allows, replace current code with the following: while read line ; do eval $line mail -s "$s" $u < $f done <<"EOF" u=donna f=file23 s='a memo' u=steve f=file34 s=report u=ellie f=file16 s='your files' EOF *If you are able to use this for the reprint, please add Stephen Samuel to the Acknowledgments.

Anonymous    Jun 01, 2009
Printed
Page 755
first paragraph

... can handle arbitrary numbers of file descriptiors should be ... can handle arbitrary numbers of file descriptors

Note from the Author or Editor:
Yes, this needs clarification. But the "Detailed description of error" doesn't clarify; the correction is the same as the original. Please make the following edit. Replace the following text: "3 through 9 (and bash and the other newer shells can handle arbitrary numbers of file descriptors, up to whatever ulimit -n happens to be set)." with the following text: "3 through 9. (Newer shells have higher limits. For instance, read the description of ulimit -n in the bash manual page.)" NOTE that, as in the printed book, "ulimit -n" should be in a fixed-width font. Also, "bash" should be in Italics.

Anonymous    Jun 01, 2009
Printed
Page 761
The first line of all three examples on this page started with "+#!".

The "+" character HAS BEEN REMOVED to make the lines start with "#!".

Anonymous    Apr 01, 2004
Printed
Page 761
The first line of all three examples on this page started with "+#!".

The "+" character HAS BEEN REMOVED to make the lines start with "#!".

Anonymous    Apr 01, 2004
Printed
Page 764
example below first paragraph

expr "$x" : '(.....)' "$x" will produce a syntax error. Should be: expr "$x" : '(.....)' | "$x"

Note from the Author or Editor:
Yes, this is an error. But the submitted solution isn't correct, either... possibly because the errata system removed the backslashes? Please ignore the reader's solution. Instead, modify the example by adding the two characters \| (backslash followed by vertical bar) between the two space characters before the final "$x". That is the only change needed. I'll try again to say that in another way, in case the errata system is eating the backslashes. Currently, in the printed third edition, the last example in article 36.21 has 31 characters (including the spaces; note that there are two spaces before the final "$x"). That last example is missing two characters, \|. The example should read: $ expr "$x" : '\(.....\)' \| "$x" Please CONFIRM THIS by looking at the SECOND EDITION, article 45.28, at the bottom of page 883. There you'll see the correct syntax.

Anonymous    Jun 01, 2009
Printed
Page 773
2nd example

The example script is referred to as 'edmaster' until the middle of this page, when it is suddenly referred to as 'edconfig'

Note from the Author or Editor:
Change the three occurrences of "edconfig" to "edmaster".

Anonymous    Jun 01, 2009
Printed
Page 774
Example

The last two lines of the example -- the "touch afile" and the output below it -- are misleading and incomplete. The simplest solution is to remove them. That will leave the following three-line example: $ (umask 666; echo hi > afile) $ ls -l afile ---------- 1 jpeek wheel 3 Aug 23 14:08 afile

Note from the Author or Editor:
Make the change I suggested under "Detailed description of error."

Jerry Peek
O'Reilly Author 
May 22, 2009  Jun 01, 2009
Printed
Page 779
The third line of the "A:" answer:

(<">$1<"> <">$2<">) NOW READS: "$1" "$2"

Anonymous    Apr 01, 2004
Printed
Page 779
The third line of the "A:" answer:

(<">$1<"> <">$2<">) NOW READS: "$1" "$2"

Anonymous    Apr 01, 2004
Printed
Page 780
Paragraph after example starting "% cat bin/okeeffe"

This sentence is incorrect: The construct ${1+"$@"} means ``expand $1, but if $1 is not defined, use "$@" instead.'' The problem is the word "not", which was added in the third edition. The version on p. 900 of the second edition was correct: The construct ${1+"$@"} means ``expand $1, but if $1 is defined, use "$@" instead.'' In other words, if $1 is defined, then there is at least one command-line argument, so use a quoted list of all command-line arguments. Otherwise, use nothing.

Anonymous   
Printed
Page 780
Paragraph after example starting "% cat bin/okeeffe"

This sentence is incorrect: The construct ${1+"$@"} means ``expand $1, but if $1 is not defined, use "$@" instead.'' The problem is the word "not", which was added in the third edition. The version on p. 900 of the second edition was correct: The construct ${1+"$@"} means ``expand $1, but if $1 is defined, use "$@" instead.'' In other words, if $1 is defined, then there is at least one command-line argument, so use a quoted list of all command-line arguments. Otherwise, use nothing.

Anonymous    Jun 01, 2009
Printed
Page 817
last paragraph of article 39.5

referred to article Chapter 39- NOW REFERS to: article 39.7

Anonymous    Apr 01, 2005
Printed
Page 817
last paragraph of article 39.5

referred to article Chapter 39- NOW REFERS to: article 39.7

Anonymous    Apr 01, 2005
Printed
Page 824
Article 40.3, last sentence of 2nd paragraph

NOW READS: This situation happens but not with some of the older, more system-specific makes.

Anonymous    Apr 01, 2005
Printed
Page 824
Article 40.3, last sentence of 2nd paragraph

NOW READS: This situation happens but not with some of the older, more system-specific makes.

Anonymous    Apr 01, 2005
Printed
Page 835
Table 40-2, third line, "Purpose" column

"Got to background" NOW READS: "Go to background".

Anonymous    Apr 01, 2005
Printed
Page 835
Table 40-2, third line, "Purpose" column

"Got to background" NOW READS: "Go to background".

Anonymous    Apr 01, 2005
Printed
Page 835
Table 40-2, entry starting with

"-O": In the second column, "Forces all documents into specified" seems to be an incom- plete phrase (into specified *what*?).

Note from the Author or Editor:
In Table 40-2, in the 14th entry (for the option "-O or --output-document=file"), change the text in the "Purpose" column from: "Forces all documents into specified" to: "Output all documents to the named file"

Anonymous    Jun 01, 2009
Printed
Page 837
last paragraph of 40.9

s/removed/remove/ "To removed an installed application..." should be "To remove an installed application"

Tim Chase  Sep 04, 2010 
Printed
Page 837
Article 40.10, last sentence (just above the line of code)

interpretor NOW READS: interpreter

Anonymous    Apr 01, 2005
Printed
Page 837
Article 40.10, last sentence (just above the line of code)

interpretor NOW READS: interpreter

Anonymous    Apr 01, 2005
Printed
Page 839
Article 41.1, 4th word in 1st line

ecclectic NOW READS: eclectic

Anonymous    Apr 01, 2005
Printed
Page 839
Article 41.1, 4th word in 1st line

ecclectic NOW READS: eclectic

Anonymous    Apr 01, 2005
Printed
Page 842
Article 41.4, paragraph 2, lst sentence

bare NOW READS: bear

Anonymous    Apr 01, 2005
Printed
Page 842
Article 41.4, paragraph 2, lst sentence

bare NOW READS: bear

Anonymous    Apr 01, 2005
Printed
Page 845
Article 41.5 2nd line

intergers NOW READS: integers

Anonymous    Apr 01, 2005
Printed
Page 845
Article 41.5 2nd line

intergers NOW READS: integers

Anonymous    Apr 01, 2005
Printed
Page 847
first (regular) paragraph, first line

"You may have notice that..." should be: "You may have noticed that..."

Anonymous   
Printed
Page 847
first (regular) paragraph, first line

"You may have notice that..." should be: "You may have noticed that..."

Anonymous    Jun 01, 2009
Printed
Page 850
Line of code just above 2nd paragraph from bottom

... $birthday{'jay'} ... should be: ... $birthdays{'jay'} ...

Anonymous   
Printed
Page 850
Line of code just above 2nd paragraph from bottom

... $birthday{'jay'} ... should be: ... $birthdays{'jay'} ...

Anonymous    Jun 01, 2009
Printed
Page 851
1st line

"Example 41-7. Interating over a hash" ^ should be: "Example 41-7. Iterating over a hash"

Anonymous   
Printed
Page 851
1st line

"Example 41-7. Interating over a hash" ^ should be: "Example 41-7. Iterating over a hash"

Anonymous    Jun 01, 2009
Printed
Page 852
First line of third paragraph

"There are two ways of deferencing..." should be: "There are two ways of dereferencing..."

Anonymous   
Printed
Page 852
First line of third paragraph

"There are two ways of deferencing..." should be: "There are two ways of dereferencing..."

Anonymous    Jun 01, 2009
Printed
Page 896
IN PRINT

"...Otherwise, you can use tpipe; it's on the CD-ROM". NOW READS: "...Otherwise, you can use tpipe; it's available online."

Anonymous    Apr 01, 2004
Printed
Page 896
IN PRINT

"...Otherwise, you can use tpipe; it's on the CD-ROM". NOW READS: "...Otherwise, you can use tpipe; it's available online."

Anonymous    Apr 01, 2004
Printed
Page 937
third line NOW READS to reference article 46.11

Anonymous    Apr 01, 2005
Printed
Page 937
third line NOW READS to reference article 46.11

Anonymous    Apr 01, 2005
Printed
Page 1008
The example in the middle of article

50.12 is missing (at least) its last line.

Note from the Author or Editor:
Add a new line at the end of the example with a single 0 (digit zero) on it. That is, the example should end as follows: vmware-forlinux-103.tar.gz: OK $ echo $? 0

Anonymous    Jun 01, 2009
Printed
Page 1011
The kill command at the end of article 51.1 used straight single quotes(').

These HAVE BEEN CHANGED to backquotes, so the line NOW READS: kill -HUP `cat /var/run/inetd.pid`

Anonymous    Apr 01, 2004
Printed
Page 1011
The kill command at the end of article 51.1 used straight single quotes(').

These HAVE BEEN CHANGED to backquotes, so the line NOW READS: kill -HUP `cat /var/run/inetd.pid`

Anonymous    Apr 01, 2004
Printed
Page 1075
bottom of left column

There are two entries for the "less" pager: "less command" and "less program". They should be combined.

Anonymous   
Printed
Page 1075
bottom of left column

There are two entries for the "less" pager: "less command" and "less program". They should be combined.

Anonymous   
Printed
Page 1115
entries for "zless" should be deleted.

Anonymous   
Printed
Page 1115
entries for "zless" should be deleted.

Anonymous