mirror of https://github.com/tLDP/LDP
6272 lines
220 KiB
Plaintext
6272 lines
220 KiB
Plaintext
CHANGE LOG
|
||
&
|
||
Release History
|
||
|
||
The latest version of this file is available on-line at
|
||
http://http://bash.deta.in/Change.log
|
||
|
||
|
||
==================================================================
|
||
Current version = 10
|
||
Dated 03/10/14
|
||
|
||
http://bash.deta.in/abs-guide-latest.tar.bz2
|
||
http://bash.deta.in/abs-guide.pdf
|
||
--------------------------------------------------------------------
|
||
|
||
Announcements
|
||
|
||
Version 10 released.
|
||
|
||
The ABS Guide is now in the Public Domain.
|
||
The author will no longer support or update this document.
|
||
|
||
******************************************************************
|
||
It has come to the attention of the author that unauthorized
|
||
electronic and print editions of this book are being sold commercially
|
||
on itunes and elsewhere. These are illegal and pirated editions
|
||
produced without the author's permission, and readers of this book
|
||
are advised not to purchase them. If you possess a printed copy of
|
||
this book, then be aware that its copyright is invalid, and that
|
||
therefore you have the right to copy or reproduce it.
|
||
******************************************************************
|
||
Honor roll of supporters.
|
||
The following persons have made much welcomed, though unsolicited
|
||
monetary contributions to the ABS Guide author.
|
||
|
||
Matthias Gutfeldt
|
||
. . .
|
||
. . .
|
||
. . .
|
||
|
||
A big Thank You!
|
||
******************************************************************
|
||
|
||
====================================================================
|
||
|
||
|
||
Version 10, PublicDomain release.
|
||
|
||
1) In "Miscellany" chapter:
|
||
In "Optimizations" section,
|
||
Quite a number of significant additions and examples, per Erik
|
||
Brandsberg.
|
||
(Thank you!)
|
||
In "Shell Wrappers" section,
|
||
Added "ex56py.sh" example of embedded Python script.
|
||
Added "speech.sh" example of a talking script.
|
||
|
||
2) In "Another Look At Variables" chapter
|
||
Made reference to $USERNAME more ambiguous, per note from Dominique
|
||
Brazziel
|
||
At "PS4" entry,
|
||
Added Erik Brandsberg's suggestion for embedding diagnostic info.
|
||
(Thank you!)
|
||
|
||
3) In "Loops" section of "Loops and Branches" chapter:
|
||
Added note concerning omitting do/done with curly-bracket
|
||
delimited command block.
|
||
(Thank you, YongYe!)
|
||
Added example of parameterized [list] in a for-loop.
|
||
|
||
4) In "External Commands" chapter:
|
||
At "diff" entry, added note about return code 2 on failed binary
|
||
file comparison.
|
||
At "dd" entry, added example script for preparing a bootable SD card
|
||
for the Raspberry Pi.
|
||
At "paste" entry, added short example.
|
||
Added entry for "xz" in File and Archiving Commands subsection.
|
||
|
||
5) In "Here Documents" chapter:
|
||
Fixup to multi-line variable example, to eliminate error message.
|
||
(Thank you, Ken B!)
|
||
|
||
6) Fixed some example scripts to remove quoting of matched variable with
|
||
=~ operator.
|
||
|
||
7) In "Parameter Substitution and Expansion" Table,
|
||
Made minor changes in because Bash updates changed the behavior of certain
|
||
parameter operators, and made not of same. Grrr!
|
||
|
||
8) In "History Commands" appendix:
|
||
Note about enabling the history mechanism within a script,
|
||
per comment by David (dhw).
|
||
|
||
9) In "Contributed Scripts" appendix:
|
||
Added "sedappend.sh" script example of inserting text in a file
|
||
using sed.
|
||
|
||
10) In the Bibliography:
|
||
Added an entry for Daniel Goldman's excellent ebook introduction to sed.
|
||
|
||
10) Fixed and/or updated some more scripts.
|
||
|
||
|
||
|
||
Version 6.6, Ytterbiumberry* release
|
||
|
||
1) Revise and debug example scripts, as necessary.
|
||
|
||
2) Stylistic alterations and corrections.
|
||
|
||
3) In Quoting Variables section of "Quoting" chapter,
|
||
Added Chris Hiestand's suggestion to weirdvars.sh example.
|
||
|
||
4) In "Internal Commands and Builtins" chapter,
|
||
Correction at "popd" entry.
|
||
(Thank you, Emeric Vigier.)
|
||
|
||
5) In "Functions" chapter:
|
||
Added : (null-command) in an otherwise-empty function
|
||
(Thank you, Dominick Geyer.)
|
||
|
||
6) In "Regular Expressions" chapter:
|
||
In "Globbing" Section, added David Wheeler's advice on avoiding
|
||
pitfalls with filenames with embedded whitespace. (Thanks!)
|
||
|
||
7 In "Another Look at Variables" chapter,
|
||
In "Internal Variables" section,
|
||
Added Ariel Meragelman's fix to Matthew Sage's example.
|
||
(Thank you!)
|
||
|
||
8) Multiple updates to sample "bashrc" file (Appendix M).
|
||
|
||
9) Added Joseph Steinhauser's two scripts to "ASCII Table" Appendix.
|
||
(Thank you!)
|
||
|
||
10) In the Bibliography:
|
||
Corrected a typo in the listing for David Korn's UWIN utility.
|
||
(Thank you, Praveen Bhamidipati, for pointing it out!)
|
||
|
||
11) Added new "Parsing and Managing Pathnames" appendix.
|
||
(With thanks to Emmanuel Rouat and David Wheeler.)
|
||
|
||
12) Updated epub version posted.
|
||
(Thank you, Michael Satke!)
|
||
|
||
13) Enhanced "backlight.sh" example script.
|
||
|
||
14) In Copyright Appendix, added warning concerning illegal/pirated
|
||
editions of the ABS Guide.
|
||
|
||
15) In "Contributed Scripts" appendix:
|
||
Added "bingo.sh" Bingo number generator script.
|
||
|
||
16) Various example script fixups.
|
||
(Thank you to all you fine people pointing out errors.)
|
||
|
||
* No such thing, but there most certainly ought to be.
|
||
Imagine a genetically engineered berry containing rare earths.
|
||
|
||
|
||
|
||
Version 6.5, Tungstenberry* release
|
||
05 April 2012
|
||
|
||
* No such thing, but there most certainly ought to be.
|
||
Imagine a genetically engineered berry containing metallic
|
||
fibers which could be used as filaments in incandescent lightbulbs.
|
||
|
||
|
||
|
||
1) In "Bash, versions 2, 3, and 4" chapter,
|
||
In the Version 3.0 section,
|
||
At the Extended Brace Expansion discussion,
|
||
Added "eval" workaround for parameterization.
|
||
(Thank you, Emiliano G.!)
|
||
|
||
2) In "Special Characters" chapter,
|
||
Fixed missing parenthesis at "pipe" entry.
|
||
(Thank you, Adamas, for pointing this out.)
|
||
|
||
3) In "Internal Commands and Builtins" chapter,
|
||
At "let" entry,
|
||
added Jeff Gorak's correction to the return value "anomaly."
|
||
|
||
4) At references to "trinary" operator, noted the somewhat more common,
|
||
but clumsier "ternary" usage.
|
||
|
||
5) In "External Commands" chapter:
|
||
In "Miscellaneous Commands" section,
|
||
At "dd" entry, added creating bootable flash drives example.
|
||
|
||
6) In "System and Administrative Commands" chapter,
|
||
In "Filesystem" subsection,
|
||
Added "mkdosfs" entry.
|
||
In "Miscellaneous" subsection,
|
||
Added "xrandr" entry and "backlight.sh" example script.
|
||
|
||
7) In the Bibliography, added "AuctionGallery" entry.
|
||
|
||
8) Appendix D,
|
||
Revision of exit code 2 entry.
|
||
Added an example for exit code 126.
|
||
|
||
9) Fix quoting error in "Special Variables" Table in Reference Cards,
|
||
per Matthew Stanfield (Thank you!).
|
||
|
||
10) In "Complex Commands" section of "External Commands" Chapter:
|
||
Added as comment Rich's alternative awk syntax
|
||
to the month_length () example.
|
||
|
||
11) Used (with permission) code snippets from YongYe's "Tetris Game"
|
||
script in "Internal Commands" and "List Constructs" chapters.
|
||
Also added an entry for this in the "Bibliography" appendix.
|
||
The URL for YongYe's script is:
|
||
https://github.com/yongye/shell/blob/master/Tetris_Game.sh
|
||
|
||
12) In "Miscellany" chapter,
|
||
In "Shell Scripting Under Windows" section,
|
||
added reference to UNWIN, as pointed out by Greg Alheid.
|
||
|
||
13) New cover for pdf version!
|
||
|
||
14) Fixups on scripts.
|
||
[Thanks go to Darren Birkett, Chris Manson, yongye, and others.]
|
||
|
||
15) Domain shift! Changed webofcrafts.net links to deta.in.
|
||
|
||
|
||
|
||
|
||
Version 6.4, Vortexberry* release
|
||
30 August 2011
|
||
|
||
1) In "Shell Programming!" chapter:
|
||
Fixed format of block-quote on the BASIC language.
|
||
|
||
2) In the "Tests" chapter:
|
||
Added a warning about whitespace in
|
||
if [ "$a" = "b" ] test construct.
|
||
Added a caution about the exit status of an arithmetic expression.
|
||
(Thanks, ujqm8360, for the pointer.)
|
||
|
||
3) In "Variables Revisited" chapter:
|
||
In "Manipulating Strings" section:
|
||
In the first substring removal example, added instances of
|
||
parameterization.
|
||
|
||
4) In "Testing and Branching" section of "Loops and Branches" chapter:
|
||
Added footnote concerning optional left-paren in "case" statements.
|
||
(Thank you, "amphiboly" and Jens Schweikhardt.)
|
||
|
||
5) In "Miscellany" chapter,
|
||
In "Shell Scripting Under Windows" section,
|
||
noted MSFT release of Windows PowerShell.
|
||
|
||
6) In "I/O Redirection" chapter:
|
||
Added non-standard "input-file command > output-file"
|
||
to opening examples.
|
||
(Thank you, "amphiboly" and Jens Schweikhardt.)
|
||
|
||
7) In "Functions" chapter:
|
||
Added a "single-command" instance to note about "compacted" functions.
|
||
Added entry to "_()" example concerning ":()" function name.
|
||
In "empty function" example, noted that a function containing
|
||
only comments is still empty. (Thank you, Mark Bova.)
|
||
|
||
8) In "Bash, versions 2, 3, and 4" chapter:
|
||
In "Bash, version 4" section,
|
||
At "associative array" entry, added caution that index array
|
||
elements containing only whitespace are not permitted.
|
||
|
||
9) In "Local Variables" section of "Functions" chapter:
|
||
Added footnote concerning visibility of local variables
|
||
in daughter functions.
|
||
(Thank you, Thomas Braunberger.)
|
||
|
||
10) In "Here Strings" section of "Here Documents" chapter:
|
||
Added an example of feeding the stdin of a loop from a here string.
|
||
(Thank you, Seamus.)
|
||
|
||
11) In "Process Substitution" chapter:
|
||
Added Bill Davidsen's example (Thanks!).
|
||
|
||
12) In "External Commands" chapter:
|
||
In "Text Processing" section:
|
||
At "tr" entry, added "Just another Bash hacker!" example script.
|
||
snippet (courtesy of a Wikipedia article).
|
||
In "Math Commands" section:
|
||
At "dc" entry, elaborated first example and added one line
|
||
of explanation.
|
||
|
||
13) In "Debugging" chapter:
|
||
At "trap" entry, added Graham Ewart's "progress bar" script.
|
||
(Thanks!)
|
||
At "set -u" entry, correction and example snippet added.
|
||
|
||
14) In "Bash, versions 2, 3, and 4" chapter,
|
||
In the Version 3.1 section,
|
||
Corrected the "+=" entry (Thanks, Ajoy Thamattorr).
|
||
|
||
15) In "Writing Scripts" section of "Exercises" appendix:
|
||
Added "ASCII to Integer" exercise to Intermediate section.
|
||
|
||
16) In "Contributed Scripts" appendix:
|
||
Added "sam.sh" Morse code practice script.
|
||
Added "gronsfeld.bash" Gronsfeld Cipher script.
|
||
|
||
17) Fixed "base64.sh" script. It works now.
|
||
|
||
18) Epub version of ABS Guide now available, thanks to
|
||
Craig Barnes.
|
||
|
||
19) Miscellaneous bugfixes, minor improvements, and URL updates.
|
||
|
||
* Vortexberry bushes are nowhere to be found. They were all
|
||
uprooted by rampaging unicorns.
|
||
|
||
|
||
|
||
Version 6.3, Swozzleberry* release
|
||
30 April, 2011
|
||
|
||
1) Added brief coverage of Bash 4.1/4.2 releases.
|
||
Read -N.
|
||
Negative array indices.
|
||
Negative parameter in string extraction.
|
||
Bash now recognizes \u unicode escape.
|
||
There is a new "lastpipe" shell option.
|
||
etc.
|
||
|
||
2) In "Shell Programming!" chapter,
|
||
Fixed the URL on the Christensen quote.
|
||
(Thanks, Ilario Fav.)
|
||
|
||
3) In "Special Characters" chapter,
|
||
Revised "?:" trinary-construct entry.
|
||
Added $' ... ' entry.
|
||
Added definition of ASCII.
|
||
|
||
4) In the "Tests" chapter,
|
||
At "-p" entry, added Carl Anderson's example.
|
||
|
||
5) In "Introduction to Variables and Parameters" chapter:
|
||
In "Variable Substitution" section:
|
||
Corrected comment concerning when variables appear "naked."
|
||
Removed comment about non-portable behavior of uninitialize
|
||
variables in arithmetic expressions.
|
||
(Thank you, Jeffery Haemer.)
|
||
Added footnote that $0 does not always return the script name.
|
||
(Thank you, Gregg Leichtman!)
|
||
|
||
6) In "Internal Commands and Builtins" chapter,
|
||
At "let" entry,
|
||
added caution about misleading exit status returned in certain
|
||
situations. (Thank you, Evgeniy Ivanov.)
|
||
In "Job controls" subsection,
|
||
added footnote that "wait" can only take PIDs of child processes
|
||
as arguments.
|
||
(Thank you, Simon Haller.)
|
||
|
||
7) In "I/O Redirection" chapter:
|
||
Fixed commentary on "ls -yz 2>&1 >> command.log" example.
|
||
(Thank you, Teika Kazura.)
|
||
|
||
8) In "max.sh" example script, fixed comment.
|
||
(Thank you, Robert Bruntz.)
|
||
|
||
9) In the "Bash, versions 2,3, and 4" chapter,
|
||
removed the "{X..d..2}" example.
|
||
(Thank you, Jeffrey Haemer, for the pointer.)
|
||
|
||
10) In "Bash, versions 2, 3, and 4" chapter,
|
||
In the Version 3.1 section,
|
||
At the "+=" entry, added Jeffrey Haemer's $PATH append example.
|
||
|
||
11) In "Local Variables" section of "Functions" chapter:
|
||
Added note about return value of setting local variable.
|
||
(Thank you, Evegniy Ivanov.)
|
||
|
||
12) In "Complex Commands" section of "External Commands" Chapter:
|
||
At "xargs" entry:
|
||
Added tip about using the -P option to run processes in parallel.
|
||
(Thank you, Roberto Polli.)
|
||
|
||
13) In "Here Documents" chapter:
|
||
Added footnote about using <<- to suppress tabs allowing closing limit
|
||
string to deviate from the first column on a line.
|
||
(Thank you, Dennis Benzinger.)
|
||
|
||
14) In the "Miscellany" chapter:
|
||
Fixed the URL on Moshe Jacobson's utility (changed it to point to
|
||
the "ansi-color" script). Then, decided to rehost Jacobson's original
|
||
source code on webofcrafts.net (Update: deta.in).
|
||
(Thank you, qun-ying, for pointing out the broken URL.)
|
||
|
||
15) In the "Variables Revisited" chapter:
|
||
In "Parameter Substitution" section:
|
||
Revised the "${parameter:?err_msg}" entry, per Kevin LeBlanc
|
||
(thanks!).
|
||
|
||
16) In "Process Substitution" chapter:
|
||
Added "psub.bash" example of redirecting output of process
|
||
substitution into a loop.
|
||
(Thanks, Diego Molina!)
|
||
|
||
17) Reference cards:
|
||
Revisions, per Kevin LeBlanc (thanks!).
|
||
|
||
18) Added a snippet from Andrzej Szelachowski's ~/.bash_profile file
|
||
to the ".bashrc" Appendix.
|
||
(Thanks!)
|
||
|
||
19) In "/dev" section of "/dev and /proc" chapter:
|
||
Expanded Mark's command-line time-fetch example into a short script.
|
||
|
||
20) In "Network" subsection of "System and Administrative Commands,"
|
||
Added "iptables" entry.
|
||
Moved "nmap" and "netstat" entries here.
|
||
|
||
21) Added "Network Programming" chapter.
|
||
Moved "test-cgi.sh" script here from TODO section.
|
||
|
||
22) In "Escaping" section of "Quoting" Chapter:
|
||
Broke out $' ... ' string-expansion as a separate topic.
|
||
(This was a long-overdue fixup.)
|
||
|
||
23) New scripts:
|
||
read-N.sh
|
||
here-commsub.sh
|
||
neg-array.sh
|
||
neg-offset.sh
|
||
base64.sh
|
||
ip-addresses.sh
|
||
lastpipe-option.sh
|
||
BashExtraKeys.sh (with thanks to Sigurd Solaas).
|
||
Long in-line example at "Unicode" entry,
|
||
with tie-in to $' ... ' string-expansion.
|
||
|
||
24) In "Writing Scripts" section of "Exercises" appendix:
|
||
Added "Unicode Table" exercise to Intermediate section.
|
||
|
||
25) Fixups on various typos.
|
||
|
||
26) Fixups on scripts.
|
||
|
||
* Swozzleberry? There really is such a thing?
|
||
It's a variant spelling of "swazzle,"
|
||
a sort of kazoo-like noisemaker used by puppeteers.
|
||
Now, imagine a gourd-like berry that can be used
|
||
to make funny sounds. . . .
|
||
|
||
|
||
|
||
Version 6.2, Rowanberry release
|
||
17 March, 2010
|
||
|
||
1) In "Special Characters" chapter,
|
||
At "comma operator" entry, fixed first example
|
||
(comment spread over two lines).
|
||
|
||
2) In the "Tests" chapter,
|
||
In the "Other Comparison Operators" section,
|
||
Fixed up comment at "==" entry.
|
||
(Thank you, Bruno Brant!)
|
||
|
||
3) Updated "ex18.sh" example.
|
||
|
||
4) Multiple fixups submitted by Ramses Rodriguez Martinez.
|
||
(Thanks!)
|
||
|
||
5) In the "Variables Revisited" chapter:
|
||
In "Parameter Substitution" section:
|
||
fixed typo in example at "${var##Pattern}" entry.
|
||
In "Declare" subsection:
|
||
fixed "declare | grep HOME" example.
|
||
(Thank you, Tom Olson.)
|
||
|
||
6) In "Here Documents" chapter:
|
||
Added comment on colon being optional in "commentblock.sh" example.
|
||
(Thanks, Mihkel Punga.)
|
||
|
||
====Reorganization====
|
||
|
||
7) Broke out section 9.5, "Indirect References," as Chapter 27.
|
||
|
||
8) Moved "The Double-Parentheses Construct" to "Operations and Related Topics"
|
||
chapter.
|
||
|
||
9) Moved "Operator Precedence" sectionto "Operations and Related Topics"
|
||
chapter.
|
||
|
||
10) Created new "Manipulating Variables" chapter out of two sections
|
||
of old "Variables Revisited" chapter.
|
||
Revised examples at two entries.
|
||
|
||
======================
|
||
|
||
11) Miscellaneous fixups of scripts and typos in text.
|
||
Thank you, Henrique Abreu.
|
||
|
||
|
||
|
||
Version 6.1, Buffaloberry release
|
||
September 30, 2009
|
||
|
||
1) In "Shell Programming!" chapter,
|
||
Added new sidebar to the intro text.
|
||
|
||
2) In Quoting Variables section of "Quoting" chapter,
|
||
Revised double-quoting footnote about apparent inconsistent
|
||
behavior of "\" ...
|
||
(Thank you, Daniel Barclay for the heads-up!)
|
||
|
||
3) In "Special Characters" chapter:
|
||
Added $[ ... ] integer expansion entry.
|
||
At "&>" entry, added usage examples.
|
||
|
||
4) In "Tests" chapter:
|
||
In "Other Comparison Operators" section:
|
||
Expanded "compound comparison" section to include rihad's caution
|
||
about -a and -o operators not "short-circuiting."
|
||
At "[" entry, added footnote defining "token."
|
||
|
||
5) In "Internal Commands and Builtins" chapter,
|
||
At "eval" entry, reworded intro and added material to first example.
|
||
Subsequently rewrote first example once again, per suggestion by
|
||
Gerrit. (Thanks!)
|
||
Removed "eval.example" script, since it was misleading and confusing,
|
||
per the suggestion of Nathan Coulter.
|
||
Added footnote per Nathan Coulter to introductory paragraph. (Thanks!)
|
||
|
||
6) In "External Commands" chapter:
|
||
In "Math Commands" section:
|
||
At "dc" entry, added two short usage example, including a
|
||
somewhat cryptic one (Golden Ratio calculation).
|
||
Fixed typo (extra quoe at close) at inline "dc" example.
|
||
(Thank you, Daniel Scott Matthews!)
|
||
In "File and Archiving Commands" section:
|
||
Added entry for "openssl," with usage examples.
|
||
Added entry for "getfact" and "setfacl," with usage examples.
|
||
Added two footnotes to "sum, cksum, md5sum, sha1sum" entry.
|
||
In "External Commands" section:
|
||
In "ex33.sh" example, changed "NO_ARGS=86" to "NO_ARGS=0"
|
||
per alert from Gerrit. (Thanks!)
|
||
|
||
7) In "Variables Revisited" chapter:
|
||
In "Parameter Substitution" section,
|
||
Fixed typos at "${var%Pattern}, ${var%%Pattern}" entry.
|
||
(Thank you, Donald White, for pointing this out!)
|
||
At "${parameter-default}" entry, added snippet from
|
||
revised "hanoi2.bash" script to usage example.
|
||
In "Internal Variables" section,
|
||
At "$DIRSTACK" entry, added footnote defining "stack."
|
||
Added $CDPATH entry.
|
||
In "Indirect References" section,
|
||
Added a sidebar explaining the actual process of constructing
|
||
an indirect reference.
|
||
At "unset" entry, added note linking to ${parameter:-default}
|
||
parameter substitution construct.
|
||
(Thank you, Timothy Redaelli, for pointing out the ambiguity
|
||
here.)
|
||
|
||
8) In "Command Substitution" chapter:
|
||
Enhanced "setting a variable to the contents of a file"
|
||
in-line example.
|
||
|
||
9) In "Functions" chapter:
|
||
At "exit status" entry, added statement relating function exit status
|
||
to that of ordinary commands.
|
||
|
||
10) In "Bash, versions 2, 3, and 4" chapter:
|
||
In "Bash, version 4" section,
|
||
Corrected a typo in Substring Extraction entry example script.
|
||
Removed quoting of matched variable with =~ operator.
|
||
(Thank you, Thomas G<>ttler, for pointing this out.)
|
||
|
||
11) In the "Miscellany" chapter:
|
||
In the "Portability Issues" section,
|
||
Added Larry Wall epigraph.
|
||
In the "Interactive and non-interactive shells and scripts" section,
|
||
Added John Lange's examples using "if [ -t 0 ]" ...
|
||
Added a new sub-subsection with a "test-suite.sh" script.
|
||
|
||
12) In "Process Substitution" chapter:
|
||
Added instances to first usage example.
|
||
Stylistic cleanups.
|
||
|
||
13) In "Exit and Exit Status" chapter,
|
||
Added discussion of exit status of a _pipe_,
|
||
including effect of prefixing the pipe with ! ...
|
||
|
||
14) In "Arrays Chapter,
|
||
Fixed comment in "ex68.sh" example -- 1 is not a prime.
|
||
Thank you, Gordon Hopper, for pointing this out.
|
||
Fixed error in comment "ex67.sh" example.
|
||
(Thank you Grigory Romanenkov, for pointing this out.)
|
||
|
||
15) In "Here Documents" chapter:
|
||
Added cautionary note about the use of ! as a limit string.
|
||
At quoting/escaping the limit string discussion, added Allen
|
||
Halsey's explanation. (Thank you!)
|
||
|
||
16) In "Bash, versions 2, 3, and 4" chapter:
|
||
At "coproc" entry, fixed examples and added commentary,
|
||
courtesy of George Dimitriu. (Thanks!)
|
||
|
||
17) In "Endnotes" chapter:
|
||
In "Where to Go For Help" section,
|
||
Added "CI-300 printer manual" epigraph.
|
||
|
||
18) In "Bibliography" section:
|
||
Added entry for Wikipedia article on "dc."
|
||
Added entry for Philip Patterson's "logforbash" script.
|
||
|
||
19) Changed several instances of "print $9" to "print $8" in embedded
|
||
awk scripts. (Thank you, Michal Nagy, for the heads up.)
|
||
|
||
20) Added a new appendix: "An Introduction to Programmable Completion."
|
||
Added the following support scripts:
|
||
"UseGetOpt-2.sh" and "UseGetOpt-2"
|
||
|
||
21) In "Contributed Scripts" appendix:
|
||
Fixed up "hanoi2.bash" script so it doesn't crash with error
|
||
if no params.
|
||
(Thank you, Stephen Solomon, for the heads up!)
|
||
Added "show-all-colors.sh" example script,
|
||
courtesy of Chetankumar Phulpagare.
|
||
|
||
22) Updated download URL.
|
||
|
||
23) Cleanups/fixups to main text, appendices, and script examples where
|
||
appropriate.
|
||
|
||
|
||
|
||
|
||
|
||
Version 6.0, Thimbleberry release
|
||
March 23, 2009
|
||
|
||
1) Changed the title of Chapter 1.
|
||
|
||
2) Updated "copy-cd.sh" and "ex40.sh" examples
|
||
to reflect changes in cdrtools.
|
||
|
||
3) In "Special Characters" chapter:
|
||
Added another instance in the "brace expansion" example.
|
||
|
||
4) In "Testing and Branching" section of "Loops and Branches" chapter:
|
||
Clarified outline of "case" construct.
|
||
|
||
5) In "Internal Commands and Builtins" chapter:
|
||
At "eval" entry, added "arr-choice.sh" example script.
|
||
(Thank you, Antonio Macchi!)
|
||
At "read" entry, added "-u" option.
|
||
|
||
6) In "Internal Variables" section of "Variables Revisited" chapter:
|
||
Added $BASHPID variable (new to Bash 4+).
|
||
At "$$" entry, noted that within a subshell, PID of script returned
|
||
by $$.
|
||
|
||
7) In "Arrays" chapter:
|
||
Added material to "array-function.sh" example script.
|
||
|
||
8) In "Variables Revisited" chapter:
|
||
In "Indirect References" section:
|
||
Fixed comment in "ind-ref.sh" example, thanks to Jakob Bohm.
|
||
|
||
9) In "External Commands" chapter:
|
||
In "File and Archiving Commands" section:
|
||
Added "pax" entry.
|
||
|
||
10) In "I/O Redirection" chapter:
|
||
Added a couple of new instances on stderr redirection.
|
||
Added comments on a couple of new operators added in ver. 4 of Bash
|
||
that are still not functional.
|
||
|
||
11) In "Bash, versions 2, 3, and 4" chapter (new title!):
|
||
In Version 3 section, more on quoting "=~" operator.
|
||
Added instances in "brace expansion" example.
|
||
|
||
Added a section for version 4 of Bash.
|
||
Added "fetch_address.sh" and "fetch_address-2.sh" examples
|
||
to illustrate associative arrays.
|
||
Added "cas4.sh" example to illustrate enhancements to case construct.
|
||
Added discussion of the new "coproc" command, with illustrative
|
||
examples.
|
||
Added discussion of the new "mapfile" command, with an illustrative
|
||
example.
|
||
Briefly mentioned a couple of the changes to "read" options.
|
||
Listed the new -l and -c options to "declare" builtin,
|
||
with a short illustrated inline script.
|
||
Listed new upper/lowercase operators for parameter substitution,
|
||
with example.
|
||
Listed the new "brace expansion" options.
|
||
Discussed change in the treatment of positional parameters
|
||
in substring extraction.
|
||
Discussed the new ** globbing operator and "globstar" shell option.
|
||
Discussed the new "command_not_found_handle ()" error-handling
|
||
function, with in-line example.
|
||
Added an "editorial" sidebar. It is certain to generate controversy.
|
||
|
||
12) In "System Resources" subsection of "System and Administrative
|
||
At "ulimit" entry, added footnote about -f, -c behavior in POSIX
|
||
mode and newly-added options (ver. 4+ of Bash).
|
||
|
||
13) In "Process Substitution" chapter:
|
||
Added "wr-ps.bash" while-read loop example.
|
||
(Thank you, Tomas Pospisek!)
|
||
|
||
14) In "Gotchas" chapter:
|
||
Samuli Kaipiainen supplied a corrected explanation for piping-to-grep
|
||
misbehavior.
|
||
|
||
15) In the "Portability Issues" section of the "Miscellany" chapter:
|
||
Added entries to list of features in Bash missing in traditional "sh."
|
||
|
||
16) In "Options" chapter:
|
||
Added entries for "globstar" and "checkjobs" in the table.
|
||
|
||
17) In "Subshells" chapter:
|
||
Added a few comments and a short in-line example.
|
||
|
||
18) In "Contributed Scripts" appendix:
|
||
Added "fifteen.sh" (Fifteen Puzzle) example script.
|
||
(Thank you, Antonio Macchi!)
|
||
Added "hanoi2.bash" -- graphic version of "hanoi.bash."
|
||
Added "hanoi2a.bash" -- alternate graphic version of "hanoi.bash."
|
||
Had to remove "obj-oriented.sh" example because it only works
|
||
with obsolete versions of Bash.
|
||
Removed "ftpget.sh" script.
|
||
|
||
19) In "Download and Mirror Sites" appendix:
|
||
Fixed a typo in the ABS Guide download URL.
|
||
|
||
20) In "Bibliography" section:
|
||
Added Shell Script Games entry.
|
||
Added Bash Hackers Wiki entry.
|
||
Added mirror site for the official Bash FAQ.
|
||
Added Greg's WIKI: Bash FAQ entry.
|
||
Added joyent site.
|
||
|
||
21) Updated the Index with references to new material.
|
||
|
||
22) Numberous syntactical and stylistic fixes.
|
||
|
||
|
||
|
||
Version 5.6, Worcesterberry release
|
||
01/26/09
|
||
|
||
1) In "Special Characters" chapter:
|
||
At "#" (comments) entry, added example of comment embedded within a pipe.
|
||
At "semicolon" entry, slightly revised comments.
|
||
Corrected a typo in "filter" footnote ("rougly").
|
||
At "$IFS" entry, added sidebar defining the term "field."
|
||
|
||
2) In "Variables Revisited" chapter:
|
||
In "Manipulating Strings" section:
|
||
* Expanded first inline
|
||
"Substring Replacement example, thanks to the suggestion from
|
||
Zhiyi Liu. Also added explanatory footnote.
|
||
* Fixed minor typo in "rand-string.sh" example script.
|
||
(Thank you, Ethan Larson, for bringing it to my attention.)
|
||
|
||
3) In "Internal Commands and Builtins" chapter:
|
||
At "let" reference, inserted footnote that the command cannot be used
|
||
for setting string variables.
|
||
|
||
4) In "Regular Expressions" chapter:
|
||
Added example snippet of use of POSIX character classes
|
||
(excerpted from ktour.sh example).
|
||
|
||
5) In "Gotchas" chapter:
|
||
Added entry about misuse of "let" command to set string variables.
|
||
|
||
6) In "Contributed Scripts" appendix:
|
||
Added "ktour.sh" -- Knight's Tour -- example script.
|
||
Added "msquare.sh" -- Magic Square -- example script.
|
||
|
||
7) In "Bibliography" section:
|
||
Added http://bashcookbook.com entry.
|
||
Word usage cleanups in a couple of entries.
|
||
|
||
8) Moved the download and mirror site URLs from the title page
|
||
to the "Download and Mirror Sites" appendix (where they rightfully
|
||
belong!).
|
||
Removed http://personal.riverusers/~thegrendel/ URL.
|
||
|
||
In Download and Mirror Sites" appendix:
|
||
Gave Ronny Bangsund credit for graciously donating server space for
|
||
a mirror site.
|
||
Removed stale www.morethan.org URL.
|
||
|
||
Updated document author's e-mal.
|
||
|
||
9) Updated sample "bashrc" file (Appendix K).
|
||
|
||
10) Cleanups/fixups to main text, appendices, and script examples where
|
||
appropriate.
|
||
|
||
|
||
|
||
|
||
|
||
Version 5.5, Farkleberry release
|
||
11/28/08
|
||
|
||
1) In Introduction to Part 1,
|
||
Added _Webster's Dictionary_ epigraph.
|
||
|
||
2) In "Why Shell Programming?" chapter,
|
||
Added Spenser epigraph at end.
|
||
|
||
3) In Quoting chapter, rewrote introductory paragraph.
|
||
In "Quoting Variables" subsection, simplified introductory
|
||
paragraph to eliminate confusion.
|
||
|
||
4) In "Special Characters" chapter:
|
||
At "comma operator" entry, added discussion and usage example
|
||
for string concatenation.
|
||
(Thank you, Rory Winston!)
|
||
|
||
5) In "Introduction to Variables and Parameters" chapter:
|
||
Minor revision of introduction.
|
||
In "Special Variable Types" section:
|
||
At "$0" entry, expanded footnote to include command-line meaning.
|
||
Revised and expanded "ex19.sh" example.
|
||
In "Bash Variables Are Untyped" section, slightly revised
|
||
"int-or-string.sh"example
|
||
|
||
6) In "Tests" chapter:
|
||
In "Nested if/then Condition Tests" section:
|
||
Expanded and clarified in-line example.
|
||
|
||
7) In "Variables Revisited" chapter:
|
||
In "Manipulating Strings" section,
|
||
At "${string//substring/replacement}" entry,
|
||
added deletion examples to inline script.
|
||
Extended "substring-extraction.sh" example.
|
||
Fixup on "paragraph-space.sh" example.
|
||
In "Parameter Substitution" section,
|
||
Expanded in-line example at "${!varprefix*}, ${!varprefix@}"
|
||
entry.
|
||
In "$RANDOM" section,
|
||
In discussion of /dev/urandom, eliminated confusing reference to
|
||
"dd."
|
||
In "Typing Variables" section:
|
||
Added subsection on using "declare" to identify variables.
|
||
(Thank you, Dieter Plaetinck, for the idea.)
|
||
Minor fixup and clarifications in "ifs.sh" example script.
|
||
|
||
8) In "Testing and Branching" section of "Loops and Branches" chapter:
|
||
At "select" entry, fixed a typo ("but that this ..." --> "but this ..."
|
||
|
||
9) In "External Commands" chapter:
|
||
In "Basic Commands" section:
|
||
At "chattr" entry, added footnote that "s" option may not be
|
||
implemented.
|
||
In "File and Archiving Commands" section:
|
||
Expanded"shar" entry.
|
||
At "bzip2" entry, added reference to "bzcat."
|
||
In "Time/Date Commands" section:
|
||
Updated output of "time" command.
|
||
In "Miscellaneous Commands" section,
|
||
At "yes" entry, fix to example of writing "yes" as a function
|
||
(outputs "y" rather than "yes").
|
||
In "Terminal Commands" section:
|
||
At "tput" entry, added ordered list of examples using the command.
|
||
In "Complex Commands" section:
|
||
At "find" entry, clarified usage of numerical modifier with
|
||
-mtime/-atime options.
|
||
(Pedro Javier Gonzalo Castellanos brought my attention to this.)
|
||
In "Math Commands" section:
|
||
Once again revised "cannon.sh" example.
|
||
|
||
10) In "Regular Expressions" chapter:
|
||
In "Globbing" Section, added footnote defining a "wild card"
|
||
character.
|
||
At [bracketed characters] section, clarified language to indicate
|
||
a *single* character selected between each set of brackets.
|
||
|
||
11) In "Here Strings" section of "Here Documents" chapter:
|
||
Reformatted introductory paragraph.
|
||
Added comment to "prepend.sh" example script about using "sed."
|
||
|
||
12) In "Arrays" chapter:
|
||
Fixed a couple of errors in "empty-array.sh" example.
|
||
(Thank you again, Nathan Coulter!)
|
||
Slightly expanded "array-ops.sh" example.
|
||
|
||
13) In "Functions" chapter:
|
||
Added "recursion-demo2.sh" example script.
|
||
Added note that "empty" functions are not permitted in scripts.
|
||
(Thank you, Thiemo Kellner!)
|
||
Added short example of rather strange _() function.
|
||
|
||
14) In "System and Administrative Commands" chapter:
|
||
Added entry for "lid" (list groups/members).
|
||
At "halt" entry, added warning about carelessly invoking.
|
||
|
||
15) In "Loops and Branches" chapter:
|
||
In "Loop Control" section:
|
||
Added Verlaine quote.
|
||
|
||
16) In "Bash Variables are Untyped" section of "Introduction to Variables"
|
||
Added comments to "int-or-string.sh" example script.
|
||
|
||
17) In "Internal Variables" section of "Variables Revisited" chapter:
|
||
At $IFS entry, fixed up confusing language in 'echo "$IFS" | cat -vte"
|
||
usage example.
|
||
At $PIPESTATUS entry, fixup in first usage example and cleanup of
|
||
reduncancy in the introductory explanation.
|
||
(Thank you, der.hans!)
|
||
More or less rationalized capitalization at intro to entries.
|
||
|
||
18) In "I/O Redirection" chapter:
|
||
Added footnote about data streams and peripherals.
|
||
Updated URL of Chet Ramey's archived e-mail in footnote.
|
||
(Thank you, David Huston!)
|
||
|
||
19) In "Of Zeroes and Nulls" chapter:
|
||
Added Tennyson epigraph at beginning.
|
||
|
||
20) In the "Shell Wrappers" section of "Miscellany" chapter:
|
||
In footnote, corrected location of xmkmf to /usr/bin.
|
||
|
||
21) In "Bash, versions 2 and 3" chapter:
|
||
Renamed "ex79.sh" example to "cards.sh" and made minor revisions
|
||
thereto.
|
||
|
||
22) In "Exit and Exit Status" chapter,
|
||
Added footnote modifying statement about $? giving functions a return
|
||
value.
|
||
Modified 3 in-line examples snippets for improved legibility.
|
||
|
||
23) In "Aliases" chapter:
|
||
Added footnote in introduction.
|
||
|
||
24) In "Operators" subsection of "Operations and Related Topics" chapter:
|
||
Revised "integer variable" text and in-line example
|
||
for increased clarity.
|
||
At "Comma operator" entry, revised text and in-line example
|
||
for increased clarity.
|
||
|
||
25) In "Bash, versions 2 and 3" chapter:
|
||
In generalized brace expansion entry in-line example,
|
||
showed that parameterization doesn't work.
|
||
|
||
26) In "/dev" section of "/dev and /proc" chapter:
|
||
Modified intro to define what a "device file" is.
|
||
|
||
27) In "Writing Scripts" section of "Exercises" appendix:
|
||
Rewrote "Home Directory Listing" exercise to save to a
|
||
USB flash drive, rather than a now-obsolete floppy disk.
|
||
Rewrote "Determinants" exercise in more elaborate detail.
|
||
|
||
28) In "Contributed Scripts" appendix:
|
||
Added "sw.sh" (command-line stopwatch) example script.
|
||
Thank you, P<>draig Brady!
|
||
Slight mods to "life.sh" script.
|
||
|
||
29) Fixups on erroneous links in the index.
|
||
|
||
30) In "ASCII Table" appendix:
|
||
A couple of fixups to "ascii.sh" script.
|
||
|
||
31) In "Important Files" appendix,
|
||
Added /etc/passwd entry.
|
||
|
||
32) In "Bibliography" section:
|
||
Added URLs to GNU sed and gawk reference manuals.
|
||
Fixed typo in "Unix Power Tools" entry.
|
||
|
||
33) In "Revision History" appendix:
|
||
Fixed minor formatting bug in the synopsis (line break in the URL).
|
||
|
||
34) Fixed up the tarball so it expands into its own directory,
|
||
rather than in $PWD. This is in closer conformity to the UNIX standard.
|
||
|
||
35) Enforced consistent use of "command-line" term with embedded hyphen.
|
||
|
||
36) Cleanups/fixups to main text, appendices, and script examples where
|
||
appropriate . . . especially to older scripts where the command/usage
|
||
has changed over the years, e.g., self-exec.sh.
|
||
|
||
|
||
|
||
Version 5.4, Angleberry release
|
||
07/21/08
|
||
|
||
1) In "Tests" chapter:
|
||
In "Test Constructs" section:
|
||
Rewrote "arithmetic expansion" discussion and in-line example.
|
||
Removed "if-echo" construct example (too confusing).
|
||
In "File test Operators" section:
|
||
At "-b" entry, added short usage example.
|
||
Added a few lines to "arith-tests.sh" example.
|
||
In "Test Comparison Operators" section:
|
||
At "-z" entry, added short in-line example.
|
||
|
||
2) In "Introduction to Variables and Parameters" chapter:
|
||
In "Variable Substitution" section,
|
||
Added in-line example to "warning" about unassigned variables.
|
||
Minor cleanups to introductory text.
|
||
In "Special Variable Types" section,
|
||
at discussion of "du" overflow, noted that this has been
|
||
fixed as of kernel 2.6.23. (Thank you, Mauro Giachero,
|
||
for pointing this out.)
|
||
|
||
3) In "Loops and Branches" chapter:
|
||
Added in-line example of a function providing the [list]
|
||
for a "for" loop, using command substitution.
|
||
At "until" loops section, expanded "ex27.sh" example script.
|
||
|
||
4) In "Functions" chapter:
|
||
Added comment to the effect that a function call is equivalent to a
|
||
command.
|
||
|
||
5) In "Internal Commands and Builtins" chapter:
|
||
At footnote to "getopts" entry, fixed typo.
|
||
At "let" entry, added to "ex46.sh" example to include C-style
|
||
increment, decrement, and trinary operators.
|
||
|
||
6) In "External Commands" chapter:
|
||
In "Text Processing" section:
|
||
At "recode" entry, fixed typo (removed extraneous ">").
|
||
In "Math Commands" section:
|
||
At "factor" entry, added "primes2.sh" example script.
|
||
In "Time/Date Commands" section:
|
||
At "sleep" entry, fixed typo in usage example.
|
||
At "date" entry, fixup:
|
||
delete "generate six-digit random integers" &&
|
||
add explanation in <programlisting>
|
||
In "File and Archiving Commands" section:
|
||
At "more/less" entry, added paragraph (with link) explaining that
|
||
"less" displays man page source.
|
||
At "diff3" entry, added listing for "merge."
|
||
In "Miscellaneous Commands" section:
|
||
At "tee" entry, fixed typo (siponing -> siphoning).
|
||
At "m4" entry, clarified footnote definition of "macro."
|
||
At "getopt" entry, added Peggy Russell's note about the necessity
|
||
of "eval."
|
||
At "yes" entry,
|
||
Added a use (of sorts) for parsed-variable
|
||
echoing capability.
|
||
Cleared up ambiguity about "yes" parsing variables (it doesn't).
|
||
Added simple emulation of "yes" in a script function.
|
||
In "Communications Commands" section:
|
||
Added "mailstats" command.
|
||
In "Terminal Commands" section:
|
||
Added "resize" entry.
|
||
At "tput" entry, added listing of some interesting options.
|
||
|
||
7) In "Arrays" chapter:
|
||
Fixed error and typos in "array-strops.sh" example.
|
||
Added comment line to "ex67.sh" example about ${Array[$element]}.
|
||
(Thank you Juan Bellon, for the the heads-up on the above!)
|
||
Revisions and fixups to "empty-array.sh" example script
|
||
(Thank you, Nathan Coulter!)
|
||
|
||
8) In "Variables Revisited" chapter:
|
||
In "Manipulating Strings" section:
|
||
Minor rewrites to clarify meaning ("strip" --> "delete" ... etc.)
|
||
In "Indirect References" section:
|
||
Complete rewrite of introduction for additional clarity.
|
||
Added material to "ind-ref.sh" example.
|
||
In "Typing Variables" section:
|
||
Added short in-line example to footnote.
|
||
|
||
9) In the "Shell Wrappers" section of "Miscellany" chapter:
|
||
Fixed a typo in "ex3.sh" example ("This match lines ..." -->
|
||
"This matches lines ...").
|
||
Added mention of Martin Matusiak's "undvd" shell wrapper script.
|
||
Added mention of Itzchak Rehberg's "Ext3Undel" package.
|
||
|
||
10) In "Escaping" section of "Quoting" Chapter:
|
||
Minor fixups and clarifications.
|
||
|
||
11) In "/dev" section of "/dev and /proc" chapter:
|
||
Added "music.sh" example script (plays music!). Thanks, Antonio Macchi!)
|
||
Added links / short explanations to pseudo-device listing.
|
||
|
||
12) Slight stylistic revisions to "Credits" section "Endnotes" Chapter.
|
||
|
||
13) In "Debugging" chapter:
|
||
Added explanations and references to listing of internal variables
|
||
new to version 3 of Bash.
|
||
|
||
14) In "Restricted Shells" chapter:
|
||
Cleaned up markup tags (changed to <itemizedlist>).
|
||
|
||
15) In "Assorted Tips" section of "Miscellany" chapter:
|
||
Added "progress-bar.sh" example script. (Thanks, Dotan Barak!)
|
||
At "rcs" entry, correction: added space to "# $Id" in 2 places.
|
||
|
||
16) In "Special Characters" chapter:
|
||
At "whitespace" entry, added link to "[:space:]" POSIX character
|
||
class.
|
||
|
||
17) In "Contributed Scripts" appendix:
|
||
Added "maned.sh" -- man page editor example script.
|
||
Added "sd.sh" -- Standard Deviation example script.
|
||
Added "nim.sh" -- game of Nim example script.
|
||
Added Peggy Russell's "UseGetOpt.sh" example script (thanks!).
|
||
Slight fixup to "tohtml.sh" (more accurate conversion).
|
||
|
||
18) In "Writing Scripts" section of "Exercises" appendix:
|
||
Added "Craps" exercise.
|
||
Added "Tic-tac-toe" exercise.
|
||
Added "Banner" exercise.
|
||
Added "Table of Logarithms" exercise.
|
||
|
||
19) In "Bibliography" section:
|
||
Added entry+link to John Lion's _Commentary_
|
||
(still da bestest UNIX reference).
|
||
|
||
20) Cleanups/fixups to main text, appendices, and script examples where
|
||
appropriate . . . especially to older scripts.
|
||
|
||
|
||
|
||
Version 5.3, Goldenberry release
|
||
05/11/08
|
||
|
||
1) In "Special Variable Types" section of "Introduction to Variables and
|
||
Fixed exit-status error in second "shift-past.sh" example.
|
||
(Thank you, E. Choroba!)
|
||
At "#" entry, added "quoted" to "escaped" for "#" in non-comment lines.
|
||
Added a number of missing "Ctl-?" entries. Now, the entire alphabet
|
||
is complete <g>.
|
||
At "Ctl-N" entry, added footnote about history buffer.
|
||
|
||
2) In "Tests" chapter:
|
||
In "Test Constructs" section:
|
||
At [[ double brackets ]] construct, added discussion and example on
|
||
arithmetic evaluation of octal and hex constants within [[ ... ]].
|
||
(Thank you, Moritz Gronbach!)
|
||
Consolidated entire [[ ... ]] topic into a single <sidebar>.
|
||
|
||
3) In "Text Processing" section of "External Commands" Chapter:
|
||
Added "cw-solver.sh" (crossword puzzle solver) example script.
|
||
|
||
4) In "System and Administrative Commands" chapter:
|
||
At "lockfile" entry:
|
||
Updated in-line example per suggestion of E. Choroba.
|
||
Added info to footnote defining "semaphore."
|
||
|
||
5) In "Internal Commands and Builtins" chapter:
|
||
At "read" entry, appended Antonio Macchi's suggestions to
|
||
"arrow-detect.sh" example.
|
||
|
||
6) In "Quoting Variables" section of "Quoting" chapter:
|
||
Added simple in-line example.
|
||
|
||
7) In "Debugging" chapter:
|
||
Changed note defining 'signal' into a sidebar and removed superfluous
|
||
comma.
|
||
|
||
8) In "Gotchas" chapter:
|
||
Added item about unintended consequences of preserving whitespace
|
||
within a variable. (Thank you, Claus Tirel, for inspiring me to do
|
||
this.)
|
||
|
||
9) In "Assorted Tips" section of "Miscellany" chapter:
|
||
At return value trickery discussion,
|
||
added Caution about only one "echo" statement in a function.
|
||
|
||
10) In "Operator Precedence" section "Miscellany" chapter:
|
||
Fixed an error in the table (!= is not a "combination assignment"
|
||
operator.
|
||
|
||
11) In "Contributed Scripts" appendix:
|
||
Added "Petals Around the Rose" example script.
|
||
(Thank you, Serghey Rodin!)
|
||
Modified "basics-reviewed.bash" script, per contribution
|
||
of Cliff Bamford. (Many thanks!)
|
||
In "basics-reviewed.bash" script, fixed two typos.
|
||
Added very long and complex "qky.sh" (Perquackey-type game) script.
|
||
|
||
12) In "Exit Codes With Special Meanings" appendix:
|
||
Added footnote about previously unused exit codes
|
||
in the 64-78 range now allocated.
|
||
(Thank you, Greg Metcalfe, for pointing this out.)
|
||
|
||
13) In "Bibliography" section:
|
||
Added reference/link to Penguin Pete's site.
|
||
|
||
14) In "Exercise" appendix:
|
||
Added humorous preface.
|
||
|
||
15) Cleanups/fixups to main text, appendices, and script examples where
|
||
appropriate.
|
||
|
||
|
||
|
||
Version 5.2, Silverberry release
|
||
03/16/08
|
||
|
||
1) In the "Starting Off With a Sha-Bang" chapter:
|
||
Added footnote about "#!/bin/env bash" ...
|
||
Added footnote about alternate spellings of "sha-bang."
|
||
|
||
2) In "Why Shell Programming?" chapter,
|
||
Put "When not to use shell scripts" into a sidebar.
|
||
|
||
3) In "Special Characters" chapter:
|
||
Added short introductory paragraph ("meta-meaning" ... etc.)
|
||
At "-" entry, added "cat -" inline example.
|
||
At "--" entry, added tip about removing dash-prefixed file names.
|
||
At "Ctl-Z" entry, added MS-DOS EOF info.
|
||
At "pipe" sidebar, added "philtre" footnote.
|
||
Cleaned up some of the markup.
|
||
|
||
4) In "Internal Commands and Builtins" chapter:
|
||
At "eval" entry, modified "ex43.sh" example at the suggestion of
|
||
E. Choroba.
|
||
(Thanks!)
|
||
|
||
5) In "Basic Commands" section of "External Commands" Chapter:
|
||
At "rm" entry, reworked note about deleting dash-prefixed filenames.
|
||
|
||
6) In "Introduction to Variables and Parameters" chapter:
|
||
At "shift entry", added comments to "shift-past.sh" example
|
||
at the suggestion of Eleni Fragkiadaki (thanks!).
|
||
|
||
7) In "Variable Substitution" section of "Introduction to Variables:
|
||
At discussion of "variable name," added brief definition of a "pointer"
|
||
to footnote.
|
||
|
||
8) In "Bash Variables are Untyped" section of "Introduction to Variables"
|
||
Added reference to "declare / typeset."
|
||
|
||
9) In "Miscellaneous Commands" section of "External Commands" Chapter:
|
||
Added "xmessage" entry.
|
||
Added "zenity" entry.
|
||
|
||
10) In "I/O Redirection" chapter:
|
||
At "Using Exec" section,
|
||
Added comment to "upperconv.sh" example, noting that
|
||
'cat' is unnecessary. (Thank you, Walter Brameld IV!)
|
||
|
||
11) In "Functions" chapter:
|
||
Rewrote introduction to subsection on recursion by changing a footnote
|
||
to a sidebar. Also added "recursion-demo.sh" example script.
|
||
In subsection on recursion without using local variables,
|
||
added "fibo.sh" example.
|
||
Added note, per Yan Chen's commentary on redefinition of the same
|
||
function.
|
||
|
||
12) In "Job Control Commands" section of
|
||
"Internal Commands and Builtins" chapter:
|
||
At "wait" entry, added Walter Brameld's explanation of
|
||
script-in-background hang. (Thanks!)
|
||
|
||
13) In "Operators" subsection of "Operations and Related Topics" chapter:
|
||
Moved "!" from bitwise to logical operators.
|
||
Made capitalization of operators more consistent.
|
||
(Thanks, Sebastian Arming, for bringing these to my attention.)
|
||
|
||
14) In "Time/Date Commands" section of "External Commands" chapter:
|
||
At "date" entry, added "date-calc.sh" example.
|
||
(Thank you, Nathan Coulter!)
|
||
|
||
15) In "File and Archiving Commands" section of "External Commands" Chapter:
|
||
Added "lzma" entry.
|
||
|
||
16) "System and Administrative Commands" chapter:
|
||
At "lockfile" entry, added footnote defining "semaphore."
|
||
Reworked "env" entry.
|
||
|
||
17) In "Contributed Scripts" appendix:
|
||
Added "homework.sh" example.
|
||
Added Patsie's "tree2.sh" example.
|
||
|
||
18) In the "Sed and Awk Micro-primer" appendix:
|
||
In "Awk" section, added example of "$0" (field #0).
|
||
|
||
19) In "Bash, versions 2 and 3" chapter:
|
||
Fixed a typo in first paragraph ("number of bug" -> "number of bugs").
|
||
Added cautionary note about =~ regex match operator incompatibilities
|
||
in version 3.2 update of Bash. (Thanks, Chris Bainbridge,
|
||
for the heads up!)
|
||
Added Bash, version 3.2 subsection.
|
||
|
||
20) In "Assorted Tips" section of "Miscellany" chapter:
|
||
At "Passing an array to a function" entry, fixed typo:
|
||
"bag of trick" --> "bag of tricks"
|
||
Created a new sub-subsection for the topic of widgets.
|
||
Added 'xmessage' and 'zenity' commands, with in-line examples.
|
||
|
||
21) In "Parameter Substitution" section of "Variables Revisited" chapter:
|
||
Fixed two typos (missing left curly bracket).
|
||
(Thank you, Jean-Michel Vallat, for pointing this out.)
|
||
|
||
22) In "Typing Variables" section of "Variables Revisited" chapter:
|
||
Added footnote defining "typing."
|
||
|
||
23) In "Optimizations" section of "Miscellany" chapter:
|
||
Added footnote about using functions.
|
||
|
||
24) In "Bibliography" section:
|
||
Minor rewrites and updates of entries.
|
||
Updated a few stale URLs.
|
||
|
||
25) In "ASCII Table" appendix:
|
||
Replaced "ascii.c" with "ascii.sh" script contributed by
|
||
Sebastian Arming. (Thanks!)
|
||
|
||
26) In "Writing Scripts" section of "Exercises" appendix:
|
||
Revised "safe delete" exercise.
|
||
|
||
27) In" DOS Batch Files" appendix:
|
||
Added footnote about rewriting the example batch file.
|
||
|
||
28) More cleanups/fixups/additions to Index.
|
||
|
||
29) More cleanups/fixups to main text, appendices, and examples where
|
||
appropriate.
|
||
|
||
|
||
|
||
Version 5.1, Lingonberry release
|
||
11/10/07
|
||
(The usual fixups after a .0 release ...)
|
||
|
||
1) In "Special Characters" chapter:
|
||
At "-" (dash) entry, added default parameter (parameter substitution).
|
||
At "+" (plus) entry, added alternate parameter (parameter substitution).
|
||
At "," (comma) entry, added footnote defining "operator."
|
||
Added "Ctl-Y" entry. (Thank you, Stuart J. Browne!)
|
||
|
||
2) In "Complex Commands" section of "External Commands" Chapter:
|
||
At "xargs" entry:
|
||
Added another example of "xargs -0" usage.
|
||
Added note about sequential processing of arguments passed.
|
||
|
||
3) In "File and Archive Commands" section of "External Commands" Chapter:
|
||
At "tar" entry, added "--after-date" option.
|
||
|
||
4) In "Manipulating Strings" section of "Variables Revisited" chapter:
|
||
At "${string:position:length}" entry, added "rand-string.sh" example
|
||
script.
|
||
|
||
5) In "File and Archiving Commands" section of "External Commands" Chapter:
|
||
At "sum/cksum/md5sum/sha1sum" entry, added note about enhanced
|
||
"sha1sum" commands.
|
||
At "csplit" entry, added "splitcopy.sh" example.
|
||
|
||
6) In "Internal Commands and Builtins" chapter:
|
||
At "eval" entry, added E. Choroba's in-line example (Thanks!)
|
||
|
||
7) In "/proc" section of "/dev and /proc" chapter:
|
||
Output fixup for "get-commandline.sh" inline example.
|
||
(Thank you, Han Holl!)
|
||
|
||
8) In "Arrays" chapter:
|
||
Added "ex68a.sh" example, Jared Martin's improved version of
|
||
"ex68.sh" ...
|
||
|
||
9) "System and Administrative Commands" chapter:
|
||
Added "mkisofs" entry.
|
||
|
||
10) In "Miscellany" chapter:
|
||
Added much-needed "Operator Precedence" section, with *table* and
|
||
examples.
|
||
|
||
11) In "Miscellaneous Commands" section of "External Commands" chapter:
|
||
At "jot" entry, added additional material (including random sequence
|
||
output).
|
||
|
||
12) In "Subshells" chapter:
|
||
Enhanced "subshell.sh" example to show that changes to a global
|
||
variable inside a subshell do not affect its value outside the
|
||
subshell.
|
||
|
||
13) In "$RANDOM" section of "Variables Revisited" chapter:
|
||
Added "brownian.sh" example.
|
||
|
||
14) In the "Regular Expressions" chapter,
|
||
Added footnote defining "meta-meaning."
|
||
|
||
15) In "Assorted Tips" section of "Miscellany" chapter:
|
||
Added entry showing how to access a variable in a subshell
|
||
_outside_ the subshell.
|
||
|
||
16) In" DOS Batch Files" appendix:
|
||
corrected Ted Davis URL
|
||
(Thank you, Rik Kabel!)
|
||
|
||
17) In "Bibliography" section:
|
||
Fixed URL on "Ted Davis' Shell Scripts on the PC" site.
|
||
(Thanks, Rik Kabel!)
|
||
|
||
18) In "Mirror Sites" appendix:
|
||
Removed dead link to Sunsite (ibiblio.org).
|
||
Apparently they no longer mirror the ABS Guide.
|
||
|
||
19) In "Revision History" appendix:
|
||
Added a copy on an e-mail shortly after release of version 0.1 of the
|
||
ABS Guide.
|
||
|
||
20) In "Copyright" appendix:
|
||
Liberalized the license terms to *permit* modified or derivative
|
||
versions of the book. However, the Copyright Appendix is invariant
|
||
and may not be omitted.
|
||
|
||
21) Changed "Sony Librie" references to include the newer Sony PRS-500/505
|
||
device.
|
||
|
||
22) More cleanups/fixups/additions to Index.
|
||
|
||
23) More cleanups/fixups to main text and examples where appropriate.
|
||
|
||
|
||
|
||
Version 5.0, Serviceberry release
|
||
06/24/07
|
||
|
||
1) In "Special Characters" chapter:
|
||
Added note to "ex8.sh" example script
|
||
at the suggestion of Hans-Joerg Diers. (Thanks!)
|
||
At "-" entry, added xref to example for "--" option flag.
|
||
At "-" entry, added discussion of end-of-options for a builtin
|
||
for the "--" flag. (Thank you again, Hans-Joerg Diers.)
|
||
|
||
2) In "File and Archiving Commands" section of "External Commands" Chapter:
|
||
Expanded "make" entry.
|
||
|
||
3) In "Text Processing" section of "External Commands" Chapter:
|
||
At "grep" entry, added "from.sh" example.
|
||
|
||
4) In "Process Substitution" chapter:
|
||
New introduction.
|
||
Changed "Command substitution template" heading
|
||
to corrected "Process substitution template."
|
||
|
||
5) In "I/O" Redirection chapter:
|
||
Broke up large usage example at beginning of chapter
|
||
into separate parts. Much more useful to link to this way.
|
||
|
||
6) "System and Administrative Commands" chapter:
|
||
At "newgrp" entry, added Kurt Glaesemann's note.
|
||
|
||
7) In "Arrays" chapter:
|
||
Changed "array operations on variables" note to a sidebar.
|
||
|
||
8) In "Loops and Branches" chapter:
|
||
More explanation of omitting test brackets in "while" loop.
|
||
More material on "while-read" construct.
|
||
Added Shakespeare epigraph.
|
||
|
||
9) In "Parameter Substitution" section of "Variables Revisited" chapter:
|
||
Clarified substring removal operations.
|
||
|
||
10) In "/dev" section of "/dev and /proc" chapter:
|
||
Moved "socket" definition from a footnote to a sidebar.
|
||
|
||
11) In "Endnotes" Chapter:
|
||
Added "Disclaimer" section.
|
||
|
||
12) In "Bibliography" section:
|
||
Added entry for Tim Waugh's "xmlto" Bash script.
|
||
|
||
13) In "Copyright" appendix:
|
||
Added anti-lawsuit waiver.
|
||
Minor fixups and additions.
|
||
|
||
14) In "Important Files" appendix,
|
||
Added /etc/sysconfig/hwconf entry.
|
||
|
||
15) In "Contributed Scripts" appendix:
|
||
Added JuanJo Ciarlante's "insertion-sort.bash" example (thanks!).
|
||
|
||
16) In "Reference Cards" appendix:
|
||
Added entries to "Miscellaneous Constructs" table (at Double Parentheses).
|
||
|
||
17) Added "ASCII Table" appendix.
|
||
|
||
18) Added cross-linked index/glossary.
|
||
Much needed!
|
||
|
||
19) Fixed URL for pdf version of document at mirror site.
|
||
|
||
20) Reformatted many of the epigraphs (quotations) for improved appearance.
|
||
|
||
21) Minor text and script cleanups, as appropriate.
|
||
|
||
|
||
|
||
Version 4.3, Inkberry release
|
||
04/29/07
|
||
|
||
1) In "Special Characters" chapter:
|
||
At "| / pipes" entry, added UNIX FAQ note in sidebar.
|
||
(Thank you, Nick Battle, for doing the research on this.)
|
||
At "ctl-H" entry, added commentary, per Constantin Hagemeier's
|
||
suggestions.
|
||
|
||
2) In "I/O" Redirection chapter:
|
||
In introductory in-line example,
|
||
Added note that "&>>filename" fails.
|
||
(Thank you, David Perlman.)
|
||
In "Applications" section,
|
||
Fixed up formatting/comments of "logevents.sh" example script.
|
||
|
||
3) Indented some of the case statment conditions in text for better
|
||
readability.
|
||
|
||
4) In "Arrays" chapter:
|
||
Fixed erroneous comment in "array-assign.bash" example script.
|
||
(Thank you, Manfred Schwarb, for pointing this out.)
|
||
|
||
5) In "Internal Commands and Builtins" chapter:
|
||
At "read" entry, added a section to the "read-novar.sh" example script.
|
||
Clarified user instructions in "read-r.sh" example script.
|
||
(Thank you, Paul O'Malley.)
|
||
At "export" entry, added general definition of the term "export"
|
||
in a footnote.
|
||
|
||
6) In "Variable Substitution" section of "Introduction to Variables and
|
||
Parameters" chapter:
|
||
Added footnote about "rvalue" and "lvalue."
|
||
|
||
7) In "Internal Variables" section of "Variables Revisited" chapter:
|
||
At "$IFS" entry, revised first set of usage examples at the suggestion
|
||
of Christian Laubscher. (Thanks!)
|
||
Modified "$GROUPS" entry at the suggestion of Dan Stromberg. (Thanks!)
|
||
|
||
8) In "Loops and Branches" chapter:
|
||
Added a paragraph at end of chapter on which type of loop to use.
|
||
Modified "ex24.sh" script for better functionality.
|
||
In "Loop Control" section:
|
||
Added James "Mike" Conley's fix of Jean Helou's code. (Thanks!)
|
||
|
||
9) In "Complex Commands" section of "External Commands" Chapter:
|
||
At "find" entry, slight revision to "ex57.sh" example script.
|
||
(Thanks, Robbie Morrison.)
|
||
|
||
10) In "File and Archiving Commands" section of "External Commands" Chapter:
|
||
Added note for clarification to "ex48.sh" example.
|
||
(Thanks, Evan.)
|
||
|
||
11) In "Text Processing" section of "External Commands" Chapter:
|
||
At "grep" entry, added "--color" and "-o" options discussion.
|
||
(Thank you, Benno Schulenberg.)
|
||
|
||
12) In the "Regular Expressions" chapter,
|
||
At asterisk (*) entry, fixed error in example.
|
||
(Thank you, Benno Schulenberg.)
|
||
|
||
13) In "Here Strings" section of "Here Documents" chapter:
|
||
Added discussion of bracketed-variable problem in "commentblock.sh"
|
||
example.
|
||
(Thank you, Kurt Pfeifle!)
|
||
|
||
14) In "Communications Commands" section of "External Commands" chapter:
|
||
At "wget" entry, added discussion of "-c" option.
|
||
|
||
15) "System and Administrative Commands" chapter:
|
||
At "chkconfig" entry, clarification to include system services.
|
||
(Thank you, Dan.)
|
||
|
||
16) In "Bash, version 3" section of "Bash, versions 2 and 3" chapter:
|
||
Removed a "the the" typo.
|
||
|
||
17) In "Subshells" chapter:
|
||
Added definition of "scope" in a sidebar.
|
||
|
||
18) In "/dev and /proc" chapter:
|
||
Added "get-commandline.sh" in-line example.
|
||
|
||
19) In "Gotchas" chapter:
|
||
At "suid" entry, modified footnote, per suggestion of
|
||
Dan Stromberg.
|
||
|
||
20) In the "Security Issues Section" of the "Miscellany" chapter:
|
||
Added a subsection on "Writing Secure Shell Scripts".
|
||
(Thank you, Dan Stromberg!)
|
||
|
||
21) In "Contributed Scripts" appendix:
|
||
Added "pad.sh" script.
|
||
Added "soundcard-on.sh" script.
|
||
Added "find-splitpara.sh" script.
|
||
Added "tohtml.sh" script.
|
||
Shortened a couple of overlength lines in "nightly-backup.sh" and
|
||
"ftpget.sh" scripts for better print formatting.
|
||
|
||
22) In "Analyzing Scripts" section of "Exercises" appendix:
|
||
Added Nathan Coulter's code snippet (thanks!).
|
||
|
||
23) In "Writing Scripts" section of "Exercises" appendix:
|
||
Added "Monitoring a User" exercise to "Intermediate" section.
|
||
Removed "Converting a file to HTML" exercise
|
||
(since I included a script that does this <g>).
|
||
|
||
24) In "Copyright" appendix:
|
||
Added URL for Chinese translation.
|
||
|
||
25) In "Bibliography" section:
|
||
Added Fritz Mehnert's Bash-related projects.
|
||
|
||
26) In README file:
|
||
Fixed typo.
|
||
(Thanks, Yuval Langer, for pointing it out.
|
||
Added short "sed" script for reverting example scripts
|
||
to original executable version.
|
||
|
||
27) Reverted to tagging "C" (C language) references with "<command>"
|
||
tags for additional clarity.
|
||
|
||
|
||
|
||
|
||
Version 4.2, Sparkleberry release
|
||
12/10/06
|
||
|
||
1) In "Why Shell Programming?" chapter,
|
||
added paragraph with Mayer quote about a "useful" language.
|
||
|
||
2) In the "Starting Off With a Sha-Bang" chapter:
|
||
Minor editing of footnotes.
|
||
|
||
3) In "Basic Commands" section of "External Commands" Chapter:
|
||
At "ls" entry, added tip about exit status.
|
||
At "chmod" entry,
|
||
discussion of "chmod 444"
|
||
and "chmod 111" and "chmod 000"(for a directory)
|
||
added to in-line example.
|
||
|
||
4) In "Math Commands" section of "External Commands" chapter:
|
||
Modified "alt-bc.sh" example script to eliminate global variable.
|
||
|
||
5) In "Complex Commands" section of "External Commands" Chapter:
|
||
At "find" entry, added "finding suid files" inline example.
|
||
|
||
6) In "Quoting" Chapter:
|
||
Correct "Encapsulating '!' ..." footnote.
|
||
(Thank you, Geoff Lee.)
|
||
In "Escaping" section:
|
||
Modified "escaped.sh" example script to show effect
|
||
of escaping a newline.
|
||
|
||
7) In "Internal Variables" section of "Variables Revisited" chapter:
|
||
At "$SHLVL" entry, added footnote defining "nesting."
|
||
|
||
8) In "Text Processing" section of "External Commands" Chapter:
|
||
Added "texexec" entry.
|
||
|
||
9) In "Loops and Branches" chapter:
|
||
In "while loops" section,
|
||
Added a paragraph specially dedicated to "while-read" loops.
|
||
Added use of function within test brackets of loop.
|
||
|
||
10) In "Redirected Code Blocks" section of "I/O Redirection" chapter:
|
||
Added using a "here document" to feed into the stdin of a while-read
|
||
loop.
|
||
(Thank you, Albert Siersema!)
|
||
|
||
11) In "Numerical Constants" section of "Operations and Related Topics"
|
||
In "numbers.sh" example, added "echo ((0x...))" construct.
|
||
|
||
12) In "Internal Commands and Builtins" chapter:
|
||
In "Network" subsection, added "ip" entry,
|
||
and Juan Nicolas Ruiz's "ip.sh" example script.
|
||
(Thank you!)
|
||
At "read" entry:
|
||
Modified "arrow-detect.sh" example script per Mark Alexander
|
||
(Thanks!)
|
||
At "export" entry:
|
||
Reordered the intro, with link.
|
||
At "eval" entry:
|
||
Added "echo-params" example script.
|
||
|
||
13) In "Arrays" chapter:
|
||
Fixed comments in "bubble.sh" example (Paulo Aragao's alternative).
|
||
(Thank you, C.Y. Hunt!)
|
||
|
||
14) "System and Administrative Commands" chapter:
|
||
Added usage examples at "lsof" entry.
|
||
|
||
15) In "/dev and /proc" chapter:
|
||
In "/dev" section,
|
||
Added example of "head -1 /dev/hdc" to check whether CD is
|
||
in drive.
|
||
In "/proc" section,
|
||
Added "cpuinfo" sub-example.
|
||
Added "fgrep Mem /proc/meminfo"
|
||
Fixed /proc/cpuinfo example (FC6 breaks old one!)
|
||
Fixed /proc/bus/usb/devices example (FC6 breaks old one!)
|
||
|
||
16) In "Miscellaneous Commands" section of "External Commands" chapter:
|
||
At "dd" entry, added material.
|
||
At "hexdump" entry, added usage example.
|
||
|
||
17) In "Gotchas" chapter:
|
||
Added (very short) intro paragraph.
|
||
|
||
18) In "Complex Functions and Function Complexities" section of "Functions"
|
||
Fixed up "max.sh" example script (can't use negative function return
|
||
values any more!)
|
||
|
||
19) In "Writing Scripts" section of "Exercises" appendix:
|
||
Fixed typo in "Square Roots" exercise.
|
||
|
||
20) In "Command-Line Options" appendix:
|
||
Fixed GNU standards page URL (Thank you, Kevin Hunsaker).
|
||
|
||
21) In "Bibliography" section:
|
||
Added entry for "Pixelbeat command-line reference."
|
||
Added entry for "dd" thread on Linux Questions.
|
||
|
||
22) Fixed embarrassing typo (missing space) on title page.
|
||
|
||
23) Changed <command> tags to more appropriate <firstterm> in the title
|
||
listing of many examples.
|
||
|
||
24) Fixed up "split" links in List of Examples on title page.
|
||
|
||
25) Parameterized modem port in "ex24.sh" example.
|
||
|
||
26) Current revision's Major Project:
|
||
shorten overlength lines for formatting reasons.
|
||
"days-between.sh" example
|
||
[also Fixed misspelling (permissable --> permissible).]
|
||
"Hash.lib" example
|
||
"usb.sh" example
|
||
"is_spammer.bash" example
|
||
"wgetter2.bash" example
|
||
"bashpodder.sh" example
|
||
"gcd.sh" example
|
||
"random-between.sh" example
|
||
"ex36.sh" example
|
||
"ex41.sh" example
|
||
"ex64.sh" example
|
||
"rnd.sh" example
|
||
"de-rpm.sh" example
|
||
"and-list2.sh" example
|
||
"fc4upd.sh" example
|
||
"iscan.sh" example
|
||
"cccl" example
|
||
"horserace.sh" example
|
||
"factr.sh" example
|
||
"letter-count2.sh" example
|
||
"bashrc" example
|
||
Alan Cox's and Lee Maschmeyers' examples in "Special Characters"
|
||
chapter.
|
||
|
||
Done (I think)!
|
||
|
||
|
||
|
||
|
||
Version 4.1, Waxberry release.
|
||
10/08/06
|
||
|
||
1) In the "Starting Off With a Sha-Bang" chapter:
|
||
Added Sven Mascheck's note to the footnote on magic numbers in 4.2 BSD.
|
||
(Thanks, Sven.)
|
||
|
||
2) In "Special Characters" chapter:
|
||
At "$$" entry, in footnote, added definition of a "process."
|
||
|
||
3) In "Here Strings" section of "Here Documents" chapter:
|
||
Added short intro example.
|
||
Thank you, Sebastian Kaminski, for the suggestion.
|
||
|
||
4) In "Functions" chapter:
|
||
Added note about single-line functions, with warning that a semicolon
|
||
must terminate the final command in such a function.
|
||
Embedded Christopher Head's function definition snippet in S.C.'s
|
||
inline example.
|
||
|
||
5) "System and Administrative Commands" chapter:
|
||
At "stat" entry, added in-line example script showing setting of
|
||
file-descriptive variables.
|
||
(Thank you, Jo<4A>l Bourquard, for the suggestion.)
|
||
At "netstat" entry, added note about "netstat -lptu."
|
||
|
||
6) In "Communications Commands" section of "External Commands" chapter:
|
||
At "rsync" entry, changed final paragraph to a "note."
|
||
|
||
7) In "Text Processing" section of "External Commands" Chapter:
|
||
At "tail" entry, noted that "tail -$LINES" is now deprecated,
|
||
and corrected examples.
|
||
Also cleaned up "head" references and examples, as above.
|
||
At "tr" entry, in sidebar, removed misleading statement about mandatory
|
||
quoting of letter ranges within brackets.
|
||
(Thank you, Omair Eshkenazi, for pointing this out.)
|
||
At "nl" entry, changed "cat -n" reference to "cat -b" for clarity.
|
||
(Thank you, Omair Eshkenazi, for pointing this out.)
|
||
|
||
8) In "Special Variable Types" section of "Introduction to Variables and
|
||
Added short definition of "child process" to note about exporting
|
||
variable to child processes.
|
||
At "shift" entry, added paragraph and short in-line example code
|
||
listing on passing a numerical parameter indicating how many positions
|
||
to shift.
|
||
|
||
9) In "Subshells" chapter:
|
||
Added definition of "subshell" in a sidebar box.
|
||
Added in-line example, showing subshell with "ps."
|
||
Added footnote that "exec" does not fork off a subprocess/subshell.
|
||
At "dedicated environment" inline example, noted that the "exit"
|
||
only terminates the subshell, not the parent process.
|
||
Removed "note" markers from paragraph about variables in a subshell
|
||
not being visible outside the subshell.
|
||
Added note, with example, about use of "$BASH_SUBSHELL" --
|
||
but _not_ "$SHLVL" to indicate level of nesting within a subshell.
|
||
|
||
10) In "Loops and Branches" chapter:
|
||
Corrected minor grammar error in "findstring.sh" example.
|
||
Added footnote defining "iteration."
|
||
Added (needed!) spaces in definitions of "while" and "until" loops.
|
||
Noted that "while loop" uses previously-discussed "test brackets,"
|
||
and can use double-brackets construct.
|
||
|
||
11) In "Internal Commands and Builtins" chapter:
|
||
At "unset" entry, added string test to "unset.sh" example.
|
||
At "exit" entry, added note that this command may also terminate
|
||
a subshell.
|
||
At "exit" entry, added footnote that this command *only* terminates
|
||
the process it is running within.
|
||
At footnote to "hash" entry, gave a couple of synonyms for "algorithm."
|
||
|
||
12) In "Internal Variables" section of "Variables Revisited" chapter:
|
||
At "$SHLVL" entry, added note that this variable not affected
|
||
by subshells.
|
||
At "$!" entry, added Matthew Sage's "hanging job" example (thank you!).
|
||
|
||
13) In "/proc" section of "/dev and /proc" chapter:
|
||
Added "cat /proc/acpi/battery/BAT0/info" to introductory usage
|
||
examples.
|
||
Added note about controlling peripherals by sending commands to /proc.
|
||
|
||
14) In "Miscellaneous Commands" section of "External Commands" chapter:
|
||
At "mkfifo" entry, added Omair Eshkenazi's example script (thanks!).
|
||
|
||
15) In "Time/Date Commands" section of "External Commands" chapter:
|
||
At "batch" entry, added short definition of "batch processing."
|
||
|
||
16) In "Manipulating Strings" section of "Variables Revisited" chapter:
|
||
At "${string%substring}" entry, added Rory Winston's usage example
|
||
(thanks!).
|
||
|
||
17) In "Colorizing Scripts" section of "Miscellany" chapter:
|
||
Modified "Draw-box.sh" example per suggestions of Jim Angstadt
|
||
(thanks!).
|
||
|
||
18) In "Of Zeroes and Nulls" chapter:
|
||
Added comments to "ex73.sh" and "ramdisk.sh" example scripts.
|
||
|
||
19) In "Contributed Scripts" appendix:
|
||
In "days-between.sh" example,
|
||
Corrected Gauss' Formula comment (reference date is March 1,
|
||
1600, *not* January 1).
|
||
Corrected broken link in above comment.
|
||
(Thank you, Nick Alexeev, for the pointers.)
|
||
Added "nightly-backup.sh" example.
|
||
(Thank you, Richard Neill.)
|
||
|
||
20) In the "Sed and Awk Micro-primer" appendix:
|
||
Added note about other "sed" delimiters, such as "%" ...
|
||
(Thank you, Omair Eshkenazi.)
|
||
|
||
21) In "Analyzing Scripts" section of "Exercises" appendix:
|
||
Added Rory Winston's one-liner script (thanks!).
|
||
|
||
22) In "Writing Scripts" section of "Exercises" appendix:
|
||
In EASY section, added "Self-reproducing" script.
|
||
In DIFFICULT section,
|
||
added "Cross Reference" script.
|
||
added "Square Roots" script.
|
||
|
||
23) In "Bibliography" section:
|
||
At reference and URL for Col Needham's original IBDB scripts,
|
||
Noted that the link no longer works.
|
||
(Thank you, Colin Brace, for pointing this out.)
|
||
|
||
24) In "Assorted Tips" section of "Miscellany" chapter:
|
||
Added "pseudo-code" entry.
|
||
|
||
25) In "Copyright" appendix:
|
||
Added footnote stating author's intention to commit the book
|
||
to the Public Domain in 2014.
|
||
|
||
26) Miscellaneous:
|
||
Added footnote defining "deprecate."
|
||
|
||
|
||
|
||
Version 4.0, Winterberry release.
|
||
06/18/06
|
||
|
||
1) "System and Administrative Commands" chapter:
|
||
Added "gnome-mount" entry.
|
||
Modified "command" entry to eliminate ambiguity.
|
||
At "uname" entry, reordered usage example.
|
||
At "watch" entry, noted that piping output of "watch command" to
|
||
"grep" doesn't work.
|
||
In "Filesystem" subsection,
|
||
At "lockfile" entry, additional comment in in-line example script.
|
||
In "Job Control" subsection,
|
||
Added "killall" entry.
|
||
At "nice" entry, elaborated on "renice," "snice," and "skill."
|
||
|
||
2) In "Communications Commands" section of "External Commands" chapter:
|
||
At "ping" entry, added in-line example script.
|
||
|
||
3) In "Text Processing" section of "External Commands" Chapter:
|
||
At "tsort" entry, added material.
|
||
|
||
4) In "Arrays" chapter:
|
||
Noted an exception to 'array2=( "${array1[@]}" )' array copying method.
|
||
(Thank you, Jochen, DeSmet.)
|
||
Extended "empty-array.sh"
|
||
(Thank you, Omair Eshkenazi.)
|
||
|
||
5) In "Tests" chapter:
|
||
In "Test Constructs" section:
|
||
Fixed comment typos in "broken-links.sh" example.
|
||
(Thank you, Omair Eshkenazi.)
|
||
Added material to note about "test" builtin and /usr/bin/test
|
||
not being equivalent.
|
||
In "Other Comparison Operators" section:
|
||
Rewrote the (short) intro.
|
||
In "Test Your Knowledge of Tests" section:
|
||
Updated intro to example snippet.
|
||
|
||
6) In "$RANDOM" section of "Variables Revisited" chapter:
|
||
Fixed typo in comment in Jipe's in-line example.
|
||
Added comment to "random-between.sh" example.
|
||
(Thank you, Omair Eshkenazi, for both of the above.)
|
||
|
||
7) In the "Security Issues Section" of the "Miscellany" chapter:
|
||
Fixed typo in second paragraph.
|
||
(Thank you, Omair Eshkenazi.)
|
||
|
||
8) In "List Constructs" chapter:
|
||
Modified "and list" setting variable to default value in-line example.
|
||
(Thank you, Omair Eshkenazi.)
|
||
|
||
9) In "Job Control Commands" section of
|
||
"Internal Commands and Builtins" chapter:
|
||
At "kill" entry, added comment about additional file giving signal
|
||
listing.
|
||
|
||
10) In "Time/Date Commands" section of "External Commands" chapter:
|
||
At "touch" entry, added tip about not overwriting files.
|
||
|
||
11) In "Internal Commands and Builtins" chapter:
|
||
Added short usage examples to "true" and "false" entries.
|
||
|
||
12) In "Bash, version 3" section of "Bash, versions 2 and 3" chapter:
|
||
Added "pipefail" option.
|
||
Also added this to table in "Options" chapter.
|
||
At {x..y} "braces expansion operator entry,
|
||
added a simple "echo" using this.
|
||
(Thank you, Damon Puncer, for the suggestion.)
|
||
|
||
13) In "File and Archiving Commands" section of "External Commands" Chapter:
|
||
At "diff" entry, added note about "diffstat."
|
||
Moved "sum/cksum/md5sum/sha1sum" and "shred" entries
|
||
to "Encoding and Encryption" subsection.
|
||
|
||
14) In "Contributed Scripts" appendix:
|
||
Added "ha.sh" hashing script.
|
||
(Thank you, Oliver Beckstein.)
|
||
Added comments to "fifo.sh" script.
|
||
(Thank you, Omair Eshkenazi.)
|
||
More explicit reference to Mark Moraes copyright before
|
||
his two scripts.
|
||
|
||
15) Moved "Here Documents" chapter from "Beyond the Basics" section to
|
||
"Advanced Topics" section.
|
||
|
||
16) Moved "I/O Redirection" chapter from "Beyond the Basics" section to
|
||
"Advanced Topics" section.
|
||
|
||
17) In "/dev" section of "/dev and /proc" chapter:
|
||
Added material to "socket" footnote.
|
||
|
||
18) Split off the three "Command" chapters into a different Part.
|
||
Put an alphabetical command cross-reference into the Introduction
|
||
to that Part.
|
||
>> This is a major reorganization of the document. <<
|
||
|
||
19) In "Special Characters" chapter:
|
||
Added "extended brace expansion" (Bash 3+) entry.
|
||
Added "{} -- placeholder for text after "xargs -i" . . .
|
||
|
||
20) In "Reference Cards" appendix:
|
||
In "Miscellaneous Constructs" table:
|
||
Added "extended brace expansion" (Bash 3+) entry.
|
||
Added "{}" (text replacement) entry.
|
||
Added more hypertext links.
|
||
Cleanups.
|
||
|
||
21) Delineated all references to "root user" with <firstterm> tags.
|
||
|
||
22) Changed many of the <emphasis> tags in the document
|
||
to more appropriate <firstterm>, <filename>, and <varname>, etc.
|
||
|
||
23) Changed certain of the <varname> tags to the more appropriate <parameter>.
|
||
|
||
24) Various minor fixups on example scripts.
|
||
|
||
|
||
|
||
Version 3.9
|
||
Spiceberry release, 05/15/06
|
||
|
||
1) In the "Starting Off With a Sha-Bang" chapter:
|
||
Added footnote that when launching a script from Bash,
|
||
the #! isn't strictly necessary.
|
||
(Thank you, Diane Holt, for bringing this to my attention.)
|
||
|
||
2) In "I/O Redirection" chapter:
|
||
At introduction to chapter,
|
||
Added explanatory examples in introductory in-line code block.
|
||
At "Using Exec" section,
|
||
Added brief explanation of different effects of "exec N > filename" and "N > filename."
|
||
|
||
(Thank you, Ahmed Darwish, for both of the above.)
|
||
|
||
3) In "Special Characters" chapter:
|
||
At "$" entry, added an additional usage example.
|
||
At "$$" entry, added footnote explaining of what a PID is.
|
||
At redirection operators entry, added "<>" description.
|
||
At "-" entry, fixup on "bunzip2" example.
|
||
(Thanks, Roman.)
|
||
|
||
4) In "Miscellaneous Commands" section of "External Commands" chapter:
|
||
At "yes" entry,
|
||
added parsing of variables.
|
||
|
||
5) In "File and Archiving Commands" section of "External Commands" Chapter:
|
||
At "gzip" entry, added note about "-c" option.
|
||
|
||
6) In "Manipulating Strings" section of "Variables Revisited" chapter:
|
||
At "${string%%substring}" entry,
|
||
added "ra2ogg.sh" example script.
|
||
|
||
7) In "Bash, version 3" section of "Bash, versions 2 and 3" chapter
|
||
Added "Bash, version 3.1" subsection.
|
||
Entry for "+=" operator.
|
||
|
||
8) In "Subshells" chapter:
|
||
Modified final note about command list within curly brackets,
|
||
per suggestion of Andreas K<>hne.
|
||
|
||
9) In "Gotchas" chapter:
|
||
Converted separate entries to bulleted-item list.
|
||
Added entry for error in leaving out termination semicolon in command
|
||
block within curly braces.
|
||
(Thank you, Andreas K<>hne.)
|
||
|
||
10) In "Writing Scripts" section of "Exercises" appendix:
|
||
Added "Checking whether a process is still running" exercise
|
||
("Easy" section).
|
||
|
||
11) "System and Administrative Commands" chapter:
|
||
Minor revision of "strace" entry.
|
||
Added "ltrace" entry.
|
||
Added "lspci" entry.
|
||
|
||
12) In "Contributed Scripts" appendix:
|
||
Minor modification to "life.sh" script, to check for missing startfile.
|
||
|
||
13) In "Reference Cards" appendix:
|
||
Fixed up error in "Miscellaneous Constructs" table (terminating
|
||
semicolon in command list within curly brackets).
|
||
(Thank you, Andreas K<>hne.)
|
||
|
||
14) In "Revision History" appendix:
|
||
Fixed embarrassing typos.
|
||
|
||
15) Various minor fixups on example scripts.
|
||
|
||
|
||
Version 3.8
|
||
Blaeberry release, 02/26/06
|
||
|
||
1) In "Special Characters" chapter:
|
||
Minor additions to leadin to "control characters" entries,
|
||
and to "Ctl-K" and "Ctl-L" entries.
|
||
|
||
2) In "Introduction to Variables and Parameters" chapter:
|
||
Rewrote lead-in.
|
||
In "Variable Substitution" section:
|
||
Added inline example of difference between variable name and value.
|
||
Added escaped whitespace example to "ex9.sh" script.
|
||
|
||
3) In "Basic Commands" section of "External Commands" Chapter:
|
||
At "cp" entry, added example of using -u option.
|
||
|
||
4) At beginning "Regular Expressions" chapter,
|
||
added Stowe Boyd epigraph.
|
||
|
||
5) "System and Administrative Commands" chapter:
|
||
In "Job Control" subsection,
|
||
Added "pgrep/pkill" entry.
|
||
At "ps" entry, mentioned "aux" options.
|
||
In "Filesystem" subsection,
|
||
At "lockfile" entry, more material, including usage example and
|
||
footnote.
|
||
Added "flock" entry.
|
||
|
||
6) In "File and Archiving Commands" section of "External Commands" Chapter:
|
||
At "sha1sum" entry, added paragraph about security consultants'
|
||
misgivings.
|
||
More info at "cpio" entry.
|
||
|
||
7) In "Parameter Substitution" section of "Variables Revisited" chapter:
|
||
Fixed minor typo at "${parameter:+alt_value}" example.
|
||
(Thank you, Jemshad O K)
|
||
|
||
8) Partitioned "Security Issues Section" of the "Miscellany" chapter
|
||
into two subsections.
|
||
Added subsection about "shc" utility for compiling script source.
|
||
|
||
9) In "Loops" section of "Loops and Branches" chapter:
|
||
Applied fixup to "bin-grep.sh" example.
|
||
(Thank you, Anton Filippov.)
|
||
|
||
10) In "Redirecting Code Blocks" section of "I/O Redirection" chapter:
|
||
Corrected annotation in final section of "redir2.sh" example.
|
||
(Thank you, Brian Onn.)
|
||
|
||
11) In "Internal Commands and Builtins" chapter:
|
||
Added "revposparams.sh" example.
|
||
(Thank you, Dan Jacobson.)
|
||
More info at "nmap" entry.
|
||
|
||
12) In "Text Processing" section of "External Commands" Chapter:
|
||
At "egrep" / "fgrep" entry, added note about boolean "|" operator.
|
||
|
||
13) In "Here Strings" section of "Here Documents" chapter:
|
||
Added short inline usage example.
|
||
Added "mailbox_grep.sh" example.
|
||
(Thank you, Francisco Lobo, for both of the above.)
|
||
|
||
14) Added "Bash Command-Line Options" section to (retitled) "Command
|
||
Line Options" appendix.
|
||
|
||
15) In "Copyright" appendix:
|
||
Added anti-DRM provisions.
|
||
|
||
16) Various minor fixups on example scripts.
|
||
|
||
|
||
|
||
|
||
Version 3.7
|
||
Whortleberry release, 10/23/05
|
||
|
||
1) In "Special Characters" chapter:
|
||
At "whitespace" entry, added footnote about newline/linefeed.
|
||
|
||
2) In "Basic Commands" section of "External Commands" Chapter:
|
||
At "ln" entry, noted that only symbolic links can refer to a directory.
|
||
|
||
3) In "Text Processing Commands" section of "External Commands" Chapter:
|
||
Modified comments in "wf.sh" example.
|
||
At "grep" entry, fixed 2 typos
|
||
"Now, let's search this file . . . "
|
||
"printf 'a b\nc d\n\n\n\n\n\000\n\000e\000\000\nf' | grep -cz ."
|
||
At "diff" entry, fixed typo ("spiff" --> "sdiff").
|
||
(Thank you, Frank Wang.)
|
||
At "colrm" entry, changed "warning" to "caution" -- toned it down a bit.
|
||
At "cut" entry,
|
||
Added note about using linefeed as delimiter.
|
||
(Thank you, Jaka Kranjc.)
|
||
Got rid of unnecessary "cat" in inline example.
|
||
At "iconv" entry, added snippet of code from "booklistgen.sh" script.
|
||
(Thank you, Peter Knowles, for permission to use it.)
|
||
|
||
4) In "Complex Commands" section of "External Commands" Chapter:
|
||
At "expr" entry, added usage example of escaped parentheses.
|
||
(Thank you, Peter Knowles, for permission to use it.)
|
||
|
||
5) In "File and Archiving Commands" section of "External Commands" Chapter:
|
||
Added "sha1sum" command at Frank Wang's suggestion.
|
||
|
||
6) In "Communications Commands" section of "External Commands" chapter:
|
||
In "Remote Host Access" subsection, added "scp" entry.
|
||
Added material at "uucp" entry.
|
||
Added "uux" entry.
|
||
At "wget" listing, added comments.
|
||
|
||
At "rsync" entry, fixed up usage example.
|
||
Added "fc4upd.sh" example.
|
||
(Thank you, Frank Wang.)
|
||
|
||
7) In "Complex Commands" section of "External Commands" Chapter:
|
||
At "xargs" entry, added footnote about speeding up execution.
|
||
|
||
8) In "Math Commands" section of "External Commands" chapter:
|
||
Added Frank Wang's comments to "monthlypmt.sh" example.
|
||
|
||
9) In "Miscellaneous Commands" section of "External Commands" chapter:
|
||
At "tee" entry, redesigned diagram for greater clarity.
|
||
|
||
10) In "Testing and Branching" section of "Loops and Branches" chapter:
|
||
Rewrote explanation of filename "globbing" in the [list] of a for-loop
|
||
and added comments to "list-glob.sh" example.
|
||
|
||
11) In "Quoting" chapter:
|
||
Added sidebar near beginning of chapter.
|
||
Removed intro paragraph (superfluous) at beginning of "Quoting Variables"
|
||
section.
|
||
|
||
12) In "$RANDOM" section of "Variables Revisited" chapter:
|
||
Added comment to "ex21.sh" example.
|
||
|
||
13) In "Command Substitution" chapter:
|
||
Added footnote about nesting command substitution with backticks
|
||
by using escaping.
|
||
(Thanks, John Default.)
|
||
|
||
14) In "System and Administrative Commands" chapter:
|
||
Moved "dmesg" entry to "Information and Statistics" subsection.
|
||
In "Process Control and Booting" subsection, added "service" entry.
|
||
At "uptime" entry, added note about load average.
|
||
Fixups at "terminals and modes" sidebar, second example.
|
||
(Thank you, Mark Norman.)
|
||
|
||
15) In "Bibliography" section:
|
||
Added reference and URL for Col Needham's original IBDB scripts.
|
||
|
||
16) Numerous typos corrected, per a list sent in by Mark Norman (thanks!).
|
||
|
||
17) Various changes and fixups in example scripts.
|
||
|
||
|
||
|
||
|
||
|
||
Version 3.6
|
||
Pokeberry release, 08/28/05
|
||
|
||
1) In "Special Characters" chapter:
|
||
At "-" (redirection from/to stdin or stdout [dash]) entry,
|
||
corrected comments.
|
||
(Thank you, Frank Wang.)
|
||
Replaced flawed first example at "brace expansion" entry.
|
||
Added quoting comment at "whitespace" entry.
|
||
|
||
2) In "Operators" subsection of "Operations and Related Topics" chapter:
|
||
Removed unnecessary "echo" from modulo operator usage example.
|
||
(Thank you, Pasha Zubkov.)
|
||
|
||
3) In "/proc" section of "/dev and /proc" chapter:
|
||
Added comment to "pid-identifier.sh" example, per Teemu Huovila.
|
||
(Thanks!)
|
||
|
||
4) In "Testing and Branching" section of "Loops and Branches" chapter:
|
||
Changed description of "case" construct from "equivalent of"
|
||
to "analog to" "switch" in C/C++.
|
||
(Thank you, Teemu Huovila.)
|
||
|
||
5) In "Communications Commands" section of "External Commands" chapter:
|
||
Added "rsync" entry.
|
||
|
||
6) In "Miscellaneous Commands" section of "External Commands" chapter:
|
||
Added additional usage example at "jot/seq" entry.
|
||
|
||
7) In "Internal Commands and Builtins" chapter:
|
||
Added "testing 'false'" to "false" entry example.
|
||
(Thank you, Joe Friedrichsen for the suggestion.)
|
||
At "getopts" entry, made corrections in description of behavior of
|
||
$GETOPTS.
|
||
(Thank you, Pharis Monalo.)
|
||
At "source" entry, added notes about passing arguments to "sourced"
|
||
file and using a "return" to pass control back to the calling script.
|
||
Added "caller" entry.
|
||
|
||
8) In "Contributed Scripts" appendix:
|
||
Made changes to "whx.sh" script.
|
||
|
||
9) In "Test Constructs" section of "Tests" chapter:
|
||
Fixed up "ex.11.sh" example for difference in Bash 3.x behavior.
|
||
(Thank you, Frank Wang.)
|
||
|
||
10) In "Internal Variables" section of "Variables Revisited" chapter:
|
||
Fixed up comments in "t-out.sh" example to reflect changes
|
||
in Bash 3.x.
|
||
(Thank you, Frank Wang.)
|
||
Fixed up explanation of "anomalous" output given by ${PIPESTATUS[@]}
|
||
in certain situations.
|
||
(Thank you, Frank Wang, for providing Chet Ramey's explanation.)
|
||
|
||
11) In "Typing Variables" section of "Variables Revisited" chapter:
|
||
Added caution + example of how "typeset" restricts the scope of a
|
||
variable.
|
||
(Thank you, Michael Iatrou.)
|
||
|
||
|
||
12) In "File and Archiving Commands" section of "External Commands" Chapter:
|
||
At "file" entry, fixed typo (/usrlocal/bin => /usr/local/bin).
|
||
Fixed error in "strip-comments.sh" example script.
|
||
(Thank you, Jesse Gough.)
|
||
|
||
13) In "Complex Commands" section of "External Commands" Chapter:
|
||
At "xargs" entry, added extra usage example.
|
||
At "expr" entry, added example of illegal arithmetic operation.
|
||
|
||
14) In "$RANDOM" section of "Variables Revisited" chapter:
|
||
Added Frank Wang's alternative to jipe's example.
|
||
|
||
15) In "Quoting" chapter:
|
||
Split the chapter into introduction and "Quoting Variables" and
|
||
"Escaping" sections.
|
||
|
||
Corrected note about unquoted "grep" . . .
|
||
Added discussion about quoting correcting echo's appetite for newlines.
|
||
Clarified explanation of referencing quoted variables
|
||
and added footnote.
|
||
Amended tip about double quotes being necessary only to prevent word
|
||
splitting.
|
||
(Thank you, Harald Koenig.)
|
||
|
||
16) In "Local Variables" section of "Functions" chapter:
|
||
In footnoted example of a segfaulting recursive function,
|
||
added an "echo" to properly exercise the function.
|
||
(Thank you, Dr. Roland Sonnenschein.)
|
||
|
||
17) In "Debugging" chapter:
|
||
At listing of "Tools for debugging non-working scripts,"
|
||
added list item for "$LINENO" variable and "caller" builtin.
|
||
|
||
At "trap" entry, replaced buggy "multiple-processes.sh" example.
|
||
(Thank you, Tedman Eng.)
|
||
|
||
18) In "Copyright" appendix:
|
||
Updated licensing terms to give the LDP the right to reassign custodianship
|
||
of the book in the event the author cannot be contacted.
|
||
|
||
19) In "Bibliography" section:
|
||
Added entry for Peter Knowles' booklistgen.sh --
|
||
Sony Librie booklist generator -- making possible
|
||
Linux access to this neat e-book reader.
|
||
|
||
20) Corrected spelling of the name of contributor St<53>phane Chazelas
|
||
in multiple places.
|
||
(Thank you, Bertrand Mollinier Toublet, for pointing out these
|
||
embarrassing typos.)
|
||
|
||
21) Various changes and fixups in example scripts.
|
||
|
||
|
||
|
||
Version 3.5
|
||
Boxberry release, 06/05/05
|
||
|
||
|
||
|
||
1) In "Indirect References to Variables" section of "Variables Revisited" chapter:
|
||
Added "ugly kludge" sidebar.
|
||
|
||
2) In "Variable Assignment" section of "Introduction to Variables and
|
||
Parameters" chapter:
|
||
After "ex16.sh" example, noted that $(...) construct is a form of
|
||
command substitution.
|
||
|
||
3) In "Special Variable Types" section of "Introduction to Variables and
|
||
Parameters" chapter:
|
||
In note about remedies for missing command-line parameters,
|
||
added discussion about using parameter substitution,
|
||
rather than adding extra characters to variable names.
|
||
(Thank you, Fabian Kreutz.)
|
||
|
||
4) In "Command Substitution" chapter:
|
||
At note at end of chapter, added mention that nesting is possible
|
||
with $(...) construct, and added "agram2.sh" example script.
|
||
|
||
5) In "Internal Commands and Builtins" chapter:
|
||
At "exec" entry, added footnote and streamlined text.
|
||
|
||
6) In "File and Archiving Commands" section of "External Commands" Chapter:
|
||
At "more/less" entry, added "testing command sequence" usage example.
|
||
At "mktemp" entry, added usage example and elaborated existing example.
|
||
|
||
7) In "Communications Commands" section of "External Commands" chapter:
|
||
At "dig" entry, added "spam-lookup.sh" example.
|
||
|
||
8) In "Text Processing" section of "External Commands" Chapter:
|
||
At "tail" entry, added usage example of combining "head" and "tail"
|
||
to extract a specific line or lines from a text file.
|
||
|
||
9) In "System and Administrative Commands" chapter:
|
||
At "umask" entry, added "rot13a.sh" example script.
|
||
|
||
10) In "Complex Functions and Function Complexities" section of "Functions"
|
||
chapter:
|
||
Added in-line example ("days in month") of capturing function "echo"
|
||
as "return value."
|
||
|
||
11) In the "Shell Wrappers" section of "Miscellany" chapter:
|
||
Added "pr-asc.sh" example script.
|
||
|
||
12) Changed "Files" chapter into an appendix.
|
||
|
||
13) In the "Sed and Awk Micro-primer" appendix:
|
||
More examples of the awk "print" command.
|
||
|
||
14) In "Contributed Scripts" appendix:
|
||
Added "whx.sh" script.
|
||
(Thank you, Walter Dnes.)
|
||
|
||
15) Miscellaneous fixups and stylistic changes in the text and various
|
||
scripts.
|
||
Fixed up three misspellings of "permissible"!
|
||
Updated morethan.org site address.
|
||
|
||
|
||
|
||
Version 3.4
|
||
Teaberry release, 05/08/05
|
||
|
||
1) In "Special Characters" chapter:
|
||
Some minor additions and cleanups.
|
||
|
||
2) In "Basic Commands" section of "External Commands" Chapter:
|
||
At "ls" entry, minor fixups on "ex40.sh" example.
|
||
At "rm" entry, added "rm -- -badname" method of deleting hyphen-prefixed
|
||
filenames.
|
||
|
||
3) In "Time/Date Commands" section of "External Commands" chapter:
|
||
At "date" entry:
|
||
Added mention of "TZ=XXX" option.
|
||
(Thanks, Frank Kannemann and Pete Sj<53>berg.)
|
||
Also added discussion of additional options.
|
||
|
||
4) In "Communications Commands" section of "External Commands" chapter:
|
||
At "lynx" entry, added paragraph on "-traversal" option.
|
||
At "wget" entry, added comments to "quote-fetch.sh" example script.
|
||
|
||
5) In "Miscellaneous Commands" section of "External Commands" Chapter:
|
||
At "sox" entry, added links for examples of script use.
|
||
At "getopt" entry, fixed typo.
|
||
|
||
6) In "Math Commands" section of "External Commands" chapter:
|
||
At "dc" entry, added echoing obfuscated text entry.
|
||
|
||
7) In "Internal Commands and Builtins" chapter:
|
||
At "echo" entry, added comments to in-line examples of
|
||
embedding linefeed in a string.
|
||
(Per suggestion of Michal Jaegermann.)
|
||
At "hash" entry, added footnote explaining what a hash is.
|
||
Modified "col-totaler3.sh" example script to make it more interesting.
|
||
At "forking" sidebar, added paragraph about parent-child process problem.
|
||
|
||
8) In "File test Operators" section of "Tests" chapter:
|
||
Added deprecated "-a" option.
|
||
|
||
9) In "System and Administrative Commands" chapter:
|
||
|
||
Added "nc" entry, and
|
||
Added "iscan.sh" example script.
|
||
(Thank you, Hobbit.)
|
||
|
||
Added Dr. Andrew Tridgell's famous one-line script.
|
||
(Thank you for permission to quote it, Tridge.)
|
||
|
||
At "logrotate" entry, added URL for Stefano Falsetto's "rottlog"
|
||
project.
|
||
At "ps" entry, added graphical "tree" options.
|
||
|
||
Added "quota" entry.
|
||
|
||
Separated "Analyzing a System Script" into a section of its own.
|
||
|
||
|
||
10) In "Bash, version 3" section of "Bash, versions 2 and 3" chapter
|
||
At "=~" entry, added Social Security number example.
|
||
Added end of chapter note that version 3 update breaks a few old
|
||
scripts.
|
||
|
||
|
||
11) In "Testing and Branching" section of "Loops and Branches" chapter:
|
||
Added code snippet from Stefano Falsetto's "rottlog" package.
|
||
(Thank you, Stefano.)
|
||
|
||
12) In "Debugging" chapter:
|
||
Added Stefano Falsetto's "debecho ()" debugging echo.
|
||
(Thank you, Stefano.)
|
||
|
||
13) In "$RANDOM" section of "Variables Revisited" chapter:
|
||
Added footnote discussing "seeds."
|
||
|
||
14) In "Parameter Substitution" section of "Variables Revisited" chapter:
|
||
Changed "rfe.sh" example to use "case" construct to test for
|
||
command-line parameters.
|
||
|
||
15) In "Manipulating Strings" section of "Variables Revisited" chapter:
|
||
Added "getopt-simple.sh" example.
|
||
(Thank you, Chris Morgan.)
|
||
|
||
16) In "Gotchas" chapter:
|
||
Added comments about 'exporting' inner shell variables to
|
||
"subshell-pitfalls.sh" example.
|
||
Added note that, as of Bash 3, periods are no longer permitted
|
||
within variable or function names.
|
||
|
||
|
||
17) In "Here Documents" chapter:
|
||
Added Huxley epigraph.
|
||
Reshuffled order of first several examples.
|
||
Added in-line example of an "ex script" (Smith/Jones replacement).
|
||
|
||
18) In "Regular Expressions" chapter:
|
||
In "Globbing" Section:
|
||
Stylistic fixups. Added footnote.
|
||
|
||
19) In "Assorted Tips" section of "Miscellany" chapter:
|
||
Corrected "dialog.sh" example.
|
||
Added entry on setting a variable to the contents of a sed or awk script,
|
||
with cross-references to a couple of example scripts.
|
||
|
||
20) In "Contributed Scripts" appendix:
|
||
Added Mariusz Gniazdowski's "Hash.lib" hashing library for scripting,
|
||
and an example script using the library ("hash-example.sh").
|
||
(Thank you, Mariusz.)
|
||
Minor revision of "mail-format.sh" example (converted sed script to a
|
||
variable)
|
||
|
||
21) In "Writing Scripts" section of "Exercises" appendix:
|
||
Added "Removing Inactive Accounts" exercise to "Intermediate" section.
|
||
Added "Checking for Broken Links" exercise to "Intermediate" section.
|
||
|
||
22) In "Bibliography" section:
|
||
Added Henry Spencer epigraph.
|
||
Added "Wicked Cool Shell Scripts" entry.
|
||
Added "seder's grabbag."
|
||
Added Linuxreviews.
|
||
|
||
23) Miscellaneous stylistic changes in various scripts.
|
||
|
||
24) Many minor stylistic changes in the body of the text.
|
||
|
||
|
||
|
||
Version 3.3
|
||
Raspberry release, 03/20/05
|
||
|
||
1) In the "Starting Off With a Sha-Bang" chapter:
|
||
Amended footnote [3] to mention a cat / here document.
|
||
(Thank you, Fabian Kreutz.)
|
||
Fixed typo in "ex1a.sh" example.
|
||
(Thank you, Preetam.)
|
||
Added Larry Wall epigraph.
|
||
Changed "Important" block to "Tip," and added "generalizing scripts"
|
||
paragraph.
|
||
|
||
2) In "Special Characters" chapter:
|
||
At "#" entry, noted that if comment follows a command on a line,
|
||
then whitespace preceding the "#" is necessary.
|
||
(Thanks, Le Wen.)
|
||
|
||
3) In "Basic Commands" section of "External Commands" Chapter:
|
||
Greatly expanded discussion of "chattr" entry.
|
||
|
||
4) In "File and Archiving Commands" section of "External Commands" Chapter:
|
||
Added "rpm -qf" tip at "rpm" entry.
|
||
|
||
5) In "Text Processing" section of "External Commands" Chapter:
|
||
Added "enscript" entry.
|
||
At "egrep" and "fgrep" entries.
|
||
added symbolic link note
|
||
added "dict-lookup.sh" example script.
|
||
Updated "wc" entry.
|
||
|
||
6) In "Communications Commands" section of "External Commands" chapter:
|
||
Added "netconfig" entry.
|
||
|
||
7) In "Math Commands" section of "External Commands" chapter:
|
||
Fixup of "hexconvert.sh" example script
|
||
(had left out initialization of E_NOARGS variable)
|
||
(Thanks, Stefano Palmeri.)
|
||
|
||
8) In "Internal Commands and Builtins" chapter:
|
||
At "forking/spawning" sidebar:
|
||
Added "spawn.sh" example
|
||
|
||
9) In "Job Control Commands" section of "Internal Commands and Builtins"
|
||
chapter:
|
||
Corrected note discussing zombie processes.
|
||
(Thank you, Alan Sundell.)
|
||
|
||
10) In "Here Documents" chapter:
|
||
Removed reference to 'telnet' -- since it's generally not a good idea.
|
||
|
||
11) In "Of Zeroes and Nulls" chapter
|
||
Added/revised discussion of /dev/zero.
|
||
|
||
12) In the "Shell Wrappers" section of "Miscellany" chapter:
|
||
Added footnote giving examples of system utilities that are really
|
||
shell wrappers.
|
||
Added "logging-wrapper.sh" example.
|
||
|
||
13) In "Indirect References to Variables" section of "Variables Revisited" chapter:
|
||
Expanded Nils Radtke's example of building dynamic variable names.
|
||
|
||
14) In "Parameter Substitution" section of "Variables Revisited" chapter:
|
||
Fixed up "ex6.sh" example to make it less ambiguous,
|
||
per suggestion of "Der Schwadde" . . . ).
|
||
|
||
15) In "Miscellaneous Commands" section of "External Commands" Chapter:
|
||
At "dd" entry," added lowercase conversion in-line example.
|
||
At "jot/seq" entry, added "letter-count.sh" example script.
|
||
(Thanks, Stefano Palmeri.)
|
||
|
||
16) In "System and Administrative Commands" chapter:
|
||
At "lockfile" entry, fixed typo in inline example.
|
||
(Thanks, Andreas Abraham.)
|
||
At "fuser" entry, added more material.
|
||
|
||
17) In "Gotchas" chapter:
|
||
At "Mixing up '=' and '-eq' entry, fixed typo.
|
||
(Thanks, Andreas Abraham.)
|
||
|
||
18) In "Colorizing Scripts" section of "Miscellany" chapter:
|
||
Added "horserace.sh" example.
|
||
(Thanks, Stefano Palmeri.)
|
||
|
||
19) In "Redirecting Code Blocks" section of "I/O Redirection" chapter:
|
||
Added code snippet and commentary to redir2.sh example.
|
||
(Thank you, Bruno de Oliveira Schneider.)
|
||
|
||
20) In "Copyright" appendix:
|
||
Added second URL for French translation.
|
||
|
||
21) In the "Sed and Awk Micro-primer" appendix:
|
||
Fixed "letter-count.sh" example to work with gawk, ver. 3.1.3.
|
||
(Thanks to Stefano Palmeri for pointing out the need for a fixup.)
|
||
Renamed filename to "letter-count2.sh" to accommodate alternate
|
||
version of script which will appear prior to this one in the text.
|
||
|
||
22) In "Contributed Scripts" appendix:
|
||
Fixups to "wgetter2.bash" script.
|
||
Added "bashpodder.sh" script.
|
||
(Thank you, Linc Fessenden.)
|
||
|
||
23) In "Writing Scripts" section of "Exercises" appendix:
|
||
In "Intermediate sub-section":
|
||
Added "Enforcing Disk Quotas" exercise.
|
||
|
||
24) Various miscellaneous fixups and enhancements:
|
||
In example scripts.
|
||
In citations of book titles (inserted <citetitle> tag).
|
||
|
||
|
||
|
||
|
||
Version 3.2
|
||
Blueberry release, 02/06/05
|
||
|
||
1) In the "Starting Off With a Sha-Bang" chapter:
|
||
Fixed small typo (if [ $# -ne $Number_of_expected args ]).
|
||
Thanks, Robbie Morrison.
|
||
Added epigraph to "Why Shell Programming?" section.
|
||
|
||
2) In "Special Characters" chapter:
|
||
At "&" entry, added comment about Nasimuddin Ansari's suggested change
|
||
to "background-loop.sh" example.
|
||
|
||
3) In "Colorizing Scripts" section of "Miscellany" chapter:
|
||
Added link to Henry/teikedvl's utility for creating colorized scripts.
|
||
|
||
4) In "Complex Functions and Function Complexities" section of "Functions"
|
||
chapter:
|
||
Added "func-cmdlinearg.sh" example script to clear up confusion
|
||
about command-line args passed to a script.
|
||
|
||
5) In "Local Variables" section of "Functions" chapter:
|
||
Fixed typo in example in footnote.
|
||
(Thank you, jaka kranjc.)
|
||
|
||
6) In "File and Archiving Commands" section of "External Commands" Chapter:
|
||
At "files" entry, added example of finding specific file types
|
||
in a given directory.
|
||
|
||
7) In "Communications Commands" section of "External Commands" chapter:
|
||
At "ssh" entry, added caution about ssh using up loop's stdin.
|
||
(Thanks, Jason Bechtel.)
|
||
|
||
8) In "Special Variable Types" section of "Introduction to Variables" chapter
|
||
Some fixups for "ex18.sh" example.
|
||
Added Chris Monson's example of finding last command line parameter.
|
||
|
||
9) In "Parameter Substitution" section of "Variables Revisited" chapter:
|
||
Added material to "param-sub.sh" example.
|
||
|
||
10) In "Double Parentheses Construct" section of "Variables Revisited"
|
||
chapter:
|
||
In "c-vars.sh" example, added instances of differing side-effects
|
||
of pre- and post-increment operators.
|
||
(Thanks, Jeroen Domburg.)
|
||
|
||
11) In "Indirect References to Variables" section of "Variables Revisited"
|
||
chapter:
|
||
Added Nils Radtke's example of building dynamic variable names.
|
||
|
||
12) In "Text Processing" section of "External Commands" Chapter:
|
||
Added extra explanatory lines at "grep" listing.
|
||
Moved "manview.sh" script example from Contributed Script appendix
|
||
to "groff, tbl, eqn" entry.
|
||
|
||
13) In the "Shell Wrappers" section of "Miscellany" chapter:
|
||
Added redirection comment to "ex3.sh" example.
|
||
(Thanks, jaka kranjc.)
|
||
|
||
14) In "Regular Expressions" chapter:
|
||
Added listing of components of REs.
|
||
Streamlined the discussion following.
|
||
|
||
15) In "$RANDOM" section of "Variables Revisited" chapter:
|
||
Added footnote about randomness and pseudorandomness.
|
||
Added a couple of cross-links in the text.
|
||
|
||
16) In "System and Administrative Commands" chapter:
|
||
Added usage example at "last" entry.
|
||
|
||
17) In "/dev" section of "/dev and /proc" chapter:
|
||
Changed reference URL from slashdot.org to news-15.net
|
||
(a known spam ISP).
|
||
Added to footnote about mounting a USB flash drive.
|
||
|
||
18) In "Gotchas" chapter:
|
||
Added note about not hyphenating function names.
|
||
|
||
19) In "Bibliography" section:
|
||
Added William Parks' Dec. '04 "Linux Gazette" article to his listing.
|
||
Added entry for "Unix Oneliners."
|
||
Added "http://www.zazzybob.com" entry.
|
||
|
||
20) In "Writing Scripts" section of "Exercises" appendix:
|
||
In "Intermediate" section, added "Integer or String" exercise .
|
||
In "Intermediate" section, added "Logged in User Information"
|
||
exercise .
|
||
|
||
21) In "Contributed Scripts" appendix:
|
||
Added "cdll" expanded 'cd' command.
|
||
(Thanks, Phil Braham.)
|
||
Added "wgetter2.bash" example script.
|
||
(Thanks, Little Monster <monster@monstruum.co.uk>.)
|
||
|
||
22) In "Localization" appendix:
|
||
Again, fixed quoting problem in "localized.sh" in-line example
|
||
(per Bruno Haible).
|
||
|
||
23) In "Important System Directories" appendix:
|
||
Corrected "/sys" entry.
|
||
Added "/mnt," "/dev," "/proc," and "/media" entries.
|
||
|
||
24) In "Analyzing Scripts" section of "Exercises" appendix:
|
||
Added short example script.
|
||
|
||
25) Added comment block to sample .bashrc file (Appendix G).
|
||
(Thanks, Ane-Pieter Wieringa.)
|
||
|
||
26) Deleted unwanted space in ": <<XXX" here document comments in various
|
||
scripts and text body.
|
||
|
||
27) Various miscellaneous fixups in example scripts.
|
||
(Thanks, Kalin Kozhuharov and others.)
|
||
|
||
|
||
|
||
|
||
Version 3.1
|
||
Bayberry release, 11/14/04
|
||
|
||
1) In "Subshells" chapter:
|
||
Removed superfluous close-parenthesis from in-line example comments.
|
||
Removed doubled line in "lock file" in-line example.
|
||
(Thanks, bojster.)
|
||
Added example of the $BASH_SUBSHELL variable (new to Bash 3).
|
||
|
||
2) In "Complex Functions and Function Complexities" chapter:
|
||
Fixed typos in "realname.sh" example script.
|
||
(Thanks, bojster.)
|
||
|
||
3) In "Unofficial Shell Scripting Stylesheet" section of
|
||
Scripting With Style" chapter:
|
||
Fixed a couple of typos involving extra space and quote.
|
||
(Thanks, bojster.)
|
||
Added Ender's suggestion to use exit codes in /usr/include/sysexits.h.
|
||
Added Ender's list of suggested script invocation flags.
|
||
|
||
4) In "Colorizing Scripts" section of "Miscellany" chapter:
|
||
Added example of using bold foreground text, with note to that effect.
|
||
Updated link for Moshe Jacobson's project.
|
||
(Thanks, bojster.)
|
||
|
||
5) In "Assorted Tips" section of "Miscellany" chapter:
|
||
At "whatis" entry, added safer alternative to using that.
|
||
(Thanks, bojster.)
|
||
Added discussion of the use of the "rcs" package in script revisions.
|
||
|
||
6) In "System and Administrative Commands" chapter:
|
||
At "fuser" entry, added usage example.
|
||
|
||
7) Assorted other typos pointed out by bojster fixed.
|
||
|
||
8) In "$RANDOM" section of "Variables Revisited" chapter:
|
||
Removed an unnecessary variable from "ex21.sh" example.
|
||
(Thanks, jaka kranjc.)
|
||
|
||
9) In "Internal Variables" section of "Variables Revisited" chapter:
|
||
Fixed prefatory comment in "timed-input.sh" example.
|
||
Added $BASH_SUBSHELL variable (Bash 3 or later).
|
||
|
||
10) In "File and Archiving Commands" section of "External Commands" Chapter:
|
||
At "split" entry, added "csplit."
|
||
|
||
11) In "Gotchas" chapter:
|
||
Added "echo $BASH_SUBSHELL" command to Richardson/Berendsen example.
|
||
|
||
12) In "Debugging" chapter:
|
||
Added Kernighan quote at beginning.
|
||
Added list of debugging variables new to version 3 of Bash.
|
||
|
||
13) In "Bibliography" section:
|
||
Updated William Parks' bio and added his Nov. '04 "Linux Gazette"
|
||
article.
|
||
|
||
14) In "To Do List" appendix.
|
||
Added Michael Zick's "test-cgi.sh" script as a starter example.
|
||
|
||
15) In "Writing Scripts" section of "Exercises" appendix:
|
||
In "Difficult" section, added "Creating man pages" exercise .
|
||
|
||
16) In "Contributed Scripts" appendix:
|
||
Applied Daniel Albers' patch to "life.sh" to enable use of non-square
|
||
grids.
|
||
Added two additional reader exercises to "life.sh" script.
|
||
|
||
17) In "Localization" appendix:
|
||
Fixed quoting bug in "localized.sh" in-line example.
|
||
Numerous other changes and bugfixes.
|
||
(Thanks, Alfredo Pironti.)
|
||
|
||
18) In "History Commands" appendix:
|
||
Added $HISTTIMEFORMAT variable (new to Bash, ver. 3.0 or later).
|
||
Added link to "Advancing in the Bash Shell" site.
|
||
|
||
19) Added "Mirror Site" appendix.
|
||
|
||
20) Minor cleanups on various example scripts.
|
||
|
||
|
||
|
||
Version 3.0
|
||
Loganberry release, 10/03/04
|
||
|
||
1) In "Numerical Constants" section of "Operations and Related Topics"
|
||
chapter:
|
||
Fixed error in comment in "numbers.sh" script.
|
||
(Thanks, Frank Wang.)
|
||
|
||
2) In "Operators" subsection of "Operations and Related Topics" chapter:
|
||
Added four increment operations to "arith-ops.sh" example.
|
||
(Thanks, Frank Wang.)
|
||
|
||
|
||
3) In "Testing and Branching" section of "Loops and Branches" chapter:
|
||
Fixed "ex29.sh" example to account for sorting problem in some locales.
|
||
(Thanks, Frank Wang.)
|
||
|
||
4) In "Internal Variables" section of "Variables Revisited" chapter:
|
||
At "$!" entry, added "hanging job" example.
|
||
(Thanks, Sylvain Fourmanoit.)
|
||
At "$PIPESTATUS" entry, added discussion of fixes in Bash, ver. 3,
|
||
with examples. Added discussion of "volatility" of this variable.
|
||
|
||
5) In the "Using Exec" section of "I/O Redirection" chapter:
|
||
Added "avoid-subshell.sh" example script.
|
||
(Thanks, Matthew Walker.)
|
||
|
||
6) In "Communications Commands" section of "External Commands" chapter:
|
||
At "ssh" entry, added "remote.bash" example script.
|
||
(Thank you, Michael Zick.)
|
||
At "dig" entry:
|
||
Added discussion of some interesting options.
|
||
Added "is-spammer.sh" example script.
|
||
(Thank you, Michael Zick.)
|
||
|
||
7) In "/proc" section of "/dev and /proc" chapter:
|
||
Added short example of parsing /proc/bus/usb/devices
|
||
to determine whether USB 1.1 port detected.
|
||
|
||
8) In "Complex Commands" section of "External Commands" Chapter:
|
||
Added comments and fixup to "ex41.sh" example
|
||
(xargs can't handle unmatched quotes).
|
||
Simplified "ex45.sh" example by eliminating a misleading section.
|
||
(Thanks, Frank Wang, for both of the above.)
|
||
|
||
9) In "Arrays" chapter:
|
||
Fixed up some comments in "array-assign.bash" example.
|
||
(Thanks, Frank Wang.)
|
||
Corrected comment in "stack.sh" example.
|
||
|
||
10) In "Here Documents" chapter:
|
||
Added section for "here strings" (<<<).
|
||
Added "prepend.sh" example.
|
||
(Thanks, Kenny Stauffer.)
|
||
|
||
11) In "Special Characters" chapter:
|
||
Added entry for "<<<" (here strings).
|
||
|
||
12) In "Parameter Substitution" section of "Variables Revisited" chapter:
|
||
Fixed typo in comments of "var-match.sh" example script.
|
||
(Thanks, bojster.)
|
||
|
||
13) In "Process Substitution" chapter:
|
||
Added more commentary to in-line SuSE code fragment.
|
||
(Thanks, Filip Moritz.)
|
||
|
||
14) In "Assorted Tips" section of "Miscellany" chapter:
|
||
Fixed typo in "multiplication.sh" example.
|
||
(Thanks, Frank Wang.)
|
||
|
||
15) In "Recursion" section of "Miscellany" chapter:
|
||
Added note about execute permissions to "recurse.sh" example script.
|
||
|
||
16) In the "Portability Issues" section of the "Miscellany" chapter:
|
||
Fixed typo ("funtionality).
|
||
(Thanks, Andreas Abraham.)
|
||
|
||
17) In "System and Administrative Commands" chapter:
|
||
Fixed mistake in a comment in "killall, from /etc/rc.d/init.d" in-line
|
||
example.
|
||
(Thanks, Andrzej Stefanski.)
|
||
At "lockfile" entry, fixed typo.
|
||
(Thanks, bojster.)
|
||
|
||
18) In "Time/Date Commands" section of "External Commands" chapter:
|
||
At "date" entry, added discussion of more options.
|
||
|
||
19) In "Miscellaneous Commands" section of "External Commands" Chapter:
|
||
Added comment to "blot-out.sh" example script noting that it may not
|
||
work well under a journaled filesystem.
|
||
(Thanks, bojster.)
|
||
|
||
20) In "Colorizing Scripts" section of "Miscellany" chapter:
|
||
Added note about "echo -ne \E[0m" being a better alternative to
|
||
"tput sgr0."
|
||
Added "Draw-box.sh" example.
|
||
(Thanks, Stefano Palmeri.)
|
||
|
||
21) In "Bibliography" section:
|
||
Added entry for Ken Burtch's "Linux Shell Scripting with Bash."
|
||
|
||
22) In "Reference Cards" appendix:
|
||
Miscellaneous minor cleanups in tables.
|
||
|
||
23) "Bash, version 2" chapter title changed to "Bash, versions 2 and 3"
|
||
Split chapter in sections for "Bash, version 2" and "Bash, version 3."
|
||
List of new features in Bash, version 3 in latter section.
|
||
* {a..z} brace expansion operator
|
||
* ${!array[@]} operator
|
||
* =~ Regular Expression matching operator within [[ double brackets ]]
|
||
|
||
24) In "Author's Note" section of "Endnotes" chapter:
|
||
Added Latin epigraph.
|
||
|
||
25) In "Copyright" appendix:
|
||
Added note exempting Public Domain scripts from the overall license
|
||
and copyright restrictions of the document.
|
||
|
||
26) In "Contributed Scripts" appendix:
|
||
Added Michael Zick's elegant "is_spammer.bash" script.
|
||
|
||
27) Updated "ex40.sh" and "copy-cd.sh" examples for newer versions
|
||
of "cdrecord."
|
||
|
||
28) Changed almost all occurrences of "Unix" to "UNIX" for consistency.
|
||
|
||
|
||
|
||
Version 2.8
|
||
Elderberry release, 07/11/04
|
||
|
||
1) In the introduction:
|
||
Added link to pdf version of the book.
|
||
|
||
2) In "Arithmetic Expansion" chapter:
|
||
Fixed typo -- missing parenthesis -- in inline example.
|
||
(Thank you, Thorsten Bonow.)
|
||
|
||
3) In "Special Characters" chapter:
|
||
Added material at "Ctl-D" entry.
|
||
Added material at "Ctl-K" entry.
|
||
Added material at "Ctl-U" entry.
|
||
(Thank you, Jeremy Impson.)
|
||
Added "Ctl-V" entry.
|
||
(Thank you, Jeremy Impson.)
|
||
Added "Ctl-W" entry.
|
||
(Thank you, Jeremy Impson.)
|
||
At "-" (redirection from/to stdin or stdout) entry:
|
||
Fixed comment in Alan Cox's example.
|
||
(Thank you, Ken Fuchs.)
|
||
|
||
4) In "Gotchas" chapter:
|
||
Added another alternative to Anthony Richardson's piping-loop example.
|
||
(Thank you, Wilbert Berendsen.)
|
||
|
||
5) In "Internal Commands and Builtins" chapter:
|
||
At "echo" entry, showed how to embed a linefeed within echoed text.
|
||
(Thanks, Steve Parker.)
|
||
At "read" entry, added note that "read -n" command sequence will not
|
||
detect the ENTER (newline) key.
|
||
(Thank you, Tony Morgan.)
|
||
At "source" entry, rewrote introductory paragraph for additional
|
||
clarity.
|
||
Added "bind" entry, with a brief footnote about the readline library.
|
||
Slight modification of discussion at "help" entry.
|
||
|
||
6) In "File and Archiving Commands" section of "External Commands" Chapter:
|
||
At "sum, cksum, md5sum" entry, added usage examples and expanded note.
|
||
|
||
7) In "List Constructs" chapter:
|
||
Added example snippets from Miquel van Smoorenburg's
|
||
/etc/rc.d/init.d/single script.
|
||
|
||
8) In "/dev" section of "/dev and /proc" chapter:
|
||
Fixed up "Downloading a URL" inline example.
|
||
(Thanks, Mihai Maties.)
|
||
Added "noatime" to USB flash drive installation example.
|
||
|
||
9) Cleaned up and made consistent notes about #!/bin/sh disabling extended
|
||
Bash functionality.
|
||
|
||
10) In "Exit Codes With Special Meanings" appendix:
|
||
Fixed footnote about out-of-range exit values.
|
||
|
||
11) In "Important System Directories" appendix:
|
||
Added /var and /boot entries.
|
||
Additional short notes.
|
||
Other Minor changes.
|
||
|
||
12) In the "Sed and Awk Micro-primer" appendix:
|
||
Corrected explanation of backslash in sed.
|
||
(Thank you, George Cristian Birzan.)
|
||
|
||
13) In "Bibliography" section:
|
||
Added entry for "The Linux USB subsystem."
|
||
|
||
14) Various minor changes to example scripts.
|
||
|
||
|
||
|
||
|
||
|
||
Version 2.7
|
||
Mulberry release, 04/18/04
|
||
|
||
1) In the "Starting Off With a Sha-Bang" chapter:
|
||
Added "ex1a.sh" example as a bridge between "ex1.sh" and "ex2.sh"
|
||
examples.
|
||
Added a few explanatory notes.
|
||
Minor revisions to comments in "ex1.sh" and "ex2.sh" examples.
|
||
Added "$" to variable name in script prolog note.
|
||
Minor revisions to "Why Shell Programming?" section.
|
||
|
||
2) In "Special Characters" chapter:
|
||
In in-line example at "Control-K" entry, expanded explanation of
|
||
effect of a vertical tab.
|
||
(Thank you, Lee Maschmeyer.)
|
||
Minor rewording at "`" (backticks), "\" (escape), and other entries.
|
||
|
||
3) In "Quoting" chapter:
|
||
Slight rewording of note about certain programs expanding special
|
||
characters in a quoted string.
|
||
Dropped word "apparently" from footnote on quoting "!" character.
|
||
|
||
4) In "/dev" section of "/dev and /proc" chapter:
|
||
Added short explanation of Bash's treatment of /dev/tcp/host/port
|
||
pseudo-device files.
|
||
Added footnote defining a socket.
|
||
Added use of /dev/sda1 in mounting a USB flash drive.
|
||
Added examples of getting the time from a remote network
|
||
and downloading a URL -- using /dev/tcp.
|
||
(Thank you, Mark.)
|
||
|
||
5) In "/proc" section of "/dev and /proc" chapter:
|
||
Added "cat /proc/apm" to list of 'proc' examples.
|
||
Redid first parsing example.
|
||
|
||
6) In the "Portability Issues" section of the "Miscellany" chapter:
|
||
Added discussion of using !#/bin/sh to run scripts.
|
||
(Thank you, Ian D. Allen.)
|
||
|
||
7) In "Assorted Tips" section of "Miscellany" chapter:
|
||
Added redirecting stderr to stdout in "if-grep" test.
|
||
(Thank you, Chris Martin.)
|
||
Added tip about setting PATH and umask at beginning of script.
|
||
(Thank you, Ian D. Allen.)
|
||
|
||
8) In "System and Administrative Commands" chapter:
|
||
At "ifconfig" entry, added "ifconfig -a" output example.
|
||
At "hostname" entry, added note about "domainname" and similar
|
||
commands.
|
||
At "netstat" entry, added screen output example.
|
||
|
||
9) In "Text Processing" section of "External Commands" Chapter:
|
||
Added comment (suggested modification) to "wf.sh" example.
|
||
(Thanks, Arun Giridhar.)
|
||
At "grep" entry, added method of searching for two different patterns,
|
||
with usage example.
|
||
|
||
10) In "Internal Commands and Builtins" chapter:
|
||
Expanded "ex43.sh" example.
|
||
|
||
11) In "Comparison Operators" section of "Tests" chapter:
|
||
Changed section title.
|
||
Added brief intro paragraph.
|
||
At "==" entry, added note and embedded pre-existing example within it.
|
||
|
||
12) In "Regular Expressions" chapter:
|
||
In "Brief Introduction to Regular Expression" Section:
|
||
Added sidebar with example of testing an RE.
|
||
In "Globbing" Section:
|
||
Fixed typo in footnote 1.
|
||
(Thanks (Asheesh Soni.)
|
||
|
||
13) In "Copyright" appendix:
|
||
Added URL for French translation.
|
||
|
||
14) In "Contributed Scripts" appendix:
|
||
Replaced "tree.sh" script with a simplified version,
|
||
revised by Rick Boivie.
|
||
|
||
15) Added "To Do List" appendix.
|
||
|
||
16) Changed all "process id" references to "process ID" to avoid
|
||
confusion.
|
||
|
||
17) Minor cleanups and fixups to various scripts.
|
||
|
||
|
||
|
||
Version 2.6
|
||
'SALAL' release, 03/15/04
|
||
|
||
1) In "Exit and Exit Status" chapter,
|
||
Added comment to inline example discussing negation of a 'true' command.
|
||
(Thanks, Kristopher Newsome.)
|
||
|
||
2) Added "Standard Command-Line Options" appendix.
|
||
|
||
3) In "Basic Commands" section of "External Commands" Chapter:
|
||
At 'cat' entry, added discussion of redirecting stdin as an
|
||
alternate to 'cat.'
|
||
Fixed a typo in "ex40.sh" example script.
|
||
(Thanks, Thiers Botelho.)
|
||
Updated URL in comment in "ex40.sh" example script.
|
||
|
||
4) In "Miscellaneous Commands" section of "External Commands" Chapter:
|
||
Added "sox" entry.
|
||
At 'dd' entry, did some minor fixups on "blot-out.sh" example.
|
||
At 'dd' entry, added "self-copy.sh" example.
|
||
At 'dd' entry, converted "exercising dd" in-line example to
|
||
an external shell script example, with some modifications.
|
||
|
||
5) In the "Starting Off With a Sha-Bang" chapter:
|
||
Added listing of Open Group site to POSIX footnote.
|
||
|
||
6) In "System and Administrative Commands" chapter:
|
||
At "passwd" entry: Simplified "setnew-passwd.sh" example.
|
||
Added "setterm" entry in Terminal Commands section.
|
||
|
||
7) In "Internal Variables" section of "Variables Revisited" chapter:
|
||
Added material at "$PIPESTATUS" entry.
|
||
Minor changes in discussion of 'eval' entry.
|
||
Modified "rot14.sh" example.
|
||
Minor changes in comments in "ex44.sh" example.
|
||
At "piping to a while-read" note, added "gendiff" code fragment.
|
||
|
||
8) In "$RANDOM" section of "Variables Revisited" chapter:
|
||
Removed an unnecessary line from "random-test.sh" example.
|
||
|
||
9) In "Complex Commands" section of "External Commands" Chapter:
|
||
At "find" entry, added short in-line example of removing core dump files.
|
||
At "xargs" entry, added paragraph about curly brackets.
|
||
Made minor stylistic changes to "wf2.sh" example.
|
||
Additional explanatory comments in "ex42.sh" example.
|
||
Additional comment in "idelete.sh" example.
|
||
|
||
10) In "Time/Date Commands" section of "External Commands" chapter:
|
||
Added a couple of words at "zdump" listing.
|
||
Reformatted short in-line examples at "sleep" and "usleep" listings.
|
||
|
||
11) In "Communications Commands" section of "External Commands" chapter:
|
||
At "wget" entry, added "quote-fetch" example.
|
||
|
||
12) In "Internal Commands and Builtins" chapter:
|
||
At "eval" entry, revisions to discussion and addition
|
||
of an in-line usage example.
|
||
Drastically revised "ex44.sh" example.
|
||
|
||
13) In "Bash, Version 2" chapter:
|
||
Added an exercise to "resistor-inventory.sh" exercise.
|
||
|
||
14) In "Loops and Branches" chapter:
|
||
At "while loops" discussion, added paragraph to final *note*
|
||
about piping into a loop.
|
||
Added comments to "ex25.sh" example.
|
||
|
||
15) In "Process Substitution" chapter:
|
||
Added example of comparing the output of a command with different
|
||
options.
|
||
Added example of comparing contents of different directories.
|
||
|
||
16) In "Debugging" chapter:
|
||
At "trap" entry, added "multiple-processes.sh" example.
|
||
(Thank you, Vernia Damiano.)
|
||
Added comments to "ex76.sh" example.
|
||
|
||
17) In "Writing Scripts" section of "Exercises" appendix:
|
||
In "Difficult" section, added "Word Ladders" exercise .
|
||
|
||
18) Minor cleanups and fixups to various scripts.
|
||
|
||
19) In "Bibliography" section:
|
||
Added entries for comp.os.unix.sh and comp.os.unix FAQs.
|
||
|
||
|
||
|
||
|
||
Version 2.5
|
||
'STARFRUIT' release, 02/15/04
|
||
|
||
1) In "I/O Redirection Chapter":
|
||
At discussion of redirection of multiple output streams,
|
||
Added information about order of operations being important.
|
||
(Thanks, Paulo Marcel Coelho Aragao.)
|
||
|
||
2) In "Redirecting Code Blocks" section of "I/O Redirection" chapter:
|
||
Fixed error in comment in example "redir4.sh."
|
||
Old = # More concise is line_count=$(wc < "$Filename")
|
||
New = # More concise is line_count=$(wc -l < "$Filename")
|
||
Simplified example "redir2a.sh."
|
||
(Thanks, Paulo Marcel Coelho Aragao, for all of the above.)
|
||
|
||
3) In "Here Documents" chapter:
|
||
Minor rewrite of beginning paragraphs.
|
||
Clarified comment in "generate-script.sh" example.
|
||
Amended warning near end of chapter to include trailing whitespace
|
||
on a "limit string" line, as well as leading whitespace. Added
|
||
explanatory paragraph.
|
||
Noted that the "-" option marking a limit string suppresses only leading
|
||
tabs. Modified comments in "ex71a.sh" example to reflect this.
|
||
(Thanks, Paulo Marcel Coelho Aragao, for all of the above.)
|
||
Fixed two minor errors in "self-document.sh" example script.
|
||
(Thanks, Markus Wolf.)
|
||
|
||
|
||
4) In "Command Substitution" chapter:
|
||
Added footnote at beginning of chapter giving technically correct
|
||
explanation of what happens.
|
||
Added link in first footnote.
|
||
Noted that `...` and $(...) treat a "\\" differently..
|
||
(Thanks, Paulo Marcel Coelho Aragao, for pointing this out.)
|
||
|
||
5) In "System and Administrative Commands" chapter:
|
||
At "passwd" entry:
|
||
Fixed typo (omitted word "command").
|
||
Added mention of "-l," "-u," and "-d" options.
|
||
Broke out "setnew-passwd.sh" as an external example.
|
||
Moved "MAKEDEV" entry to just below "mknod."
|
||
Added "usermod," "groupmod," "iwconfig,"
|
||
"lsusb / usbmodules," "modinfo," and "setquota" entries.
|
||
|
||
6) In "Basic Commands" section of "External Commands" Chapter:
|
||
At "rm" entry, added note about removing filenames beginning with
|
||
a dash.
|
||
|
||
7) In "Communications Commands" section of "External Commands" chapter:
|
||
Added "chfn" entry.
|
||
|
||
8) In "Complex Commands" section of "External Commands" Chapter:
|
||
At "xargs" entry, added "kill-byname.sh" example script.
|
||
|
||
9) In "Complex Functions and Function Complexities" chapter:
|
||
section of "Functions" chapter:
|
||
In discussion of capturing output of a function, corrected reference
|
||
of "parameter substitution" to "command substitution."
|
||
In "max2.sh" example, corrected typo and misleading comment.
|
||
In "count_lines_in_etc_passwd" in-line example, added comment.
|
||
In "ref-params.sh" example, added comment (almost) clarifying
|
||
a particularly difficult construct. (Paulo Marcel Coelho Aragao)
|
||
|
||
Modified note about being unable to dereference passed parameter to
|
||
a function. Removed "note" and made it into an ordinary paragraph.
|
||
Added "ind-func.sh" example of passing an indirect reference to a
|
||
function. Added Bruce W. Clare's "dereference.sh" example of
|
||
dereferencing a parameter passed to a function.
|
||
|
||
10) In "Assorted Tips" section of "Miscellany" chapter:
|
||
At discussion of using stdout to capture function "return value(s),"
|
||
added parenthetical clarification.
|
||
|
||
11) In "Regular Expressions" chapter:
|
||
Removed specific reference tying UNIX to use of REs.
|
||
Noted that GNU tools allow extended REs if escaped.
|
||
Removed brackets from RE character sets where unnecessary and
|
||
misleading.
|
||
In "Globbing" Section:
|
||
Corrected note about 'echo' performing wildcard expansion.
|
||
(Thanks, Paulo Marcel Coelho Aragao, for all of the above.)
|
||
Broke 'echo' filename expansion examples out of main "screen" block.
|
||
|
||
12) In "Arithmetic Expansion" chapter:
|
||
At in-line example code,
|
||
Fixed comment about quotes enclosing "special characters."
|
||
Noted that within double parens, parameter dereferencing is optional.
|
||
(Thanks, Paulo Marcel Coelho Aragao.)
|
||
|
||
13) In "Gotchas" chapter:
|
||
Fixed "bad-op.sh" example (misuse of string comparison
|
||
operators). Added much additional explanatory material to it.
|
||
Broke it out as an external example.
|
||
(Thanks, Paulo Marcel Coelho Aragao, for the hint.)
|
||
|
||
14) In "Subshells" chapter:
|
||
Additional comment at code snippet for testing whether a
|
||
variable is defined.
|
||
Modification of code snippet testing for a lock file.
|
||
(Thanks, Paulo Marcel Coelho Aragao, for both of the above.)
|
||
|
||
15) In "/dev and /proc" chapter:
|
||
Added Troy Engel's "dev-tcp" example script.
|
||
|
||
16) In "Bibliography" section:
|
||
Added "Mastering Regular Expressions (Friedl)" reference.
|
||
(Thanks, Paulo Marcel Coelho Aragao, for the suggestion.)
|
||
Added reference to William Park's Bash enhancement project.
|
||
|
||
17) In "Contributed Scripts" appendix:
|
||
Did some very minor polishing on "days-between.sh" script.
|
||
Added Troy Engel's "archiveweblogs.sh" example.
|
||
|
||
18) In "Writing Scripts" section of "Exercises" appendix:
|
||
Added "Logging Logins" problem to "Intermediate" section.
|
||
Added optional section to "Word-Find" problem.
|
||
Fixed typo in "Playfair Cipher" problem.
|
||
|
||
19) Added "Important System Directories" appendix.
|
||
|
||
20) At various points in the text, corrected maximum return value
|
||
of a function to 255 (was 256).
|
||
|
||
|
||
|
||
|
||
Version 2.4
|
||
'MUSKMELON' release, 01/25/04
|
||
|
||
1) In "Loops and Branches" chapter:
|
||
Fixed comment in "continue-nlevel.sh" example.
|
||
Minor fine-tuning of "bin-grep.sh" example.
|
||
Added comment to "symlinks.sh" example.
|
||
(Thanks, Paulo Marcel Coelho Aragao, for all of the above.)
|
||
|
||
2) In "Operations and Related Topics" chapter:
|
||
Added counting method in "arith-ops.sh" example.
|
||
(Thanks, David Lombard.)
|
||
Minor comment addition to "and-or.sh" example.
|
||
|
||
3) In "Internal Commands and Builtins" chapter:
|
||
Fixed error in comment in "ex44.sh" example.
|
||
Corrected discussion at "getopts" entry.
|
||
(Thanks, Paulo Marcel Coelho Aragao.)
|
||
Fixed comment misnaming $IFS.
|
||
(Thanks, Mike Latimer.)
|
||
|
||
4) In "$RANDOM" section of "Variables Revisited" chapter:
|
||
Simplified dice throw section of "ex21.sh" example.
|
||
Alternate formula in "random-between.sh" example.
|
||
(Thanks, Paulo Marcel Coelho Aragao, for both of the above.)
|
||
|
||
5) In "Arithmetic Expansion" chapter:
|
||
Added use of (( stand-alone expression )) to in-line
|
||
usage example.
|
||
|
||
6) In "Basic Commands" section of "External Commands" Chapter:
|
||
At "ln" entry, added "hello.sh" example
|
||
(link at "$0" entry in "Special Variable Types" section
|
||
of "Introduction to Variables and Parameters" chapter.)
|
||
|
||
7) In "File and Archiving Commands" section of "External Commands" Chapter:
|
||
Fixed error in command-line args check in "strip-comments.sh" example.
|
||
Removed unnecessary 'eval' from "strip-comments.sh" example.
|
||
(Thanks, Paulo Marcel Coelho Aragao, for both of the above.)
|
||
Fixed a subtle logic error in "file-integrity.sh" example.
|
||
(Thanks, Paulo Marcel Coelho Aragao, for bringing the error
|
||
to my attention.)
|
||
|
||
8) In "Communications Commands" section of "External Commands" chapter:
|
||
Clarified explanation of "ipcalc" entry.
|
||
Corrected "ping" entry.
|
||
(Thanks, Paulo Marcel Coelho Aragao, for directing my attention
|
||
to these.)
|
||
|
||
9) In "Complex Commands" section of "External Commands" Chapter:
|
||
Added comment to "ex57.sh".
|
||
(Thanks, Paulo Marcel Coelho Aragao.)
|
||
|
||
10) In "Internal Variables" section of "Variables Revisited" chapter:
|
||
Changed description of "$IFS" entry to correctly read "internal
|
||
field separator.
|
||
(Thanks, Mike Latimer.)
|
||
Added short introductory paragraph to "$IFS" entry.
|
||
|
||
11) In "System and Administrative Commands" chapter:
|
||
Renamed "crond" entry to the more traditional "cron,"
|
||
and noted that "crond" is Matthew Dillon's version.
|
||
Added explanatory notes to "id" and "logname" entries.
|
||
(Thanks, Paulo Marcel Coelho Aragao, for all of the above.)
|
||
|
||
12) In "Math Commands" section of "External Commands" chapter:
|
||
Added Paulo Mercel coelho Aragao's comment to "base.sh" example.
|
||
|
||
13) In "Time/Date Commands" section of "External Commands" chapter:
|
||
Simplified "ex51.sh" example by eliminating an unnecessary 'eval.'
|
||
(Thanks, Paulo Marcel Coelho Aragao.)
|
||
|
||
14) In "Miscellaneous Commands" section of "External Commands" Chapter:
|
||
Cleaned up in-line example at "mcookie" entry.
|
||
Corrected description of "objdump" entry.
|
||
Corrected "getopt" entry.
|
||
(Thanks, Paulo Marcel Coelho Aragao.)
|
||
|
||
15) In "Text Processing Commands" of "External Commands and Filters"
|
||
chapter:
|
||
Added comment to in-line example at "grep" entry.
|
||
|
||
16) In "Functions" chapter:
|
||
Added material to "ex59.sh" example.
|
||
|
||
17) In "Tests" chapter:
|
||
Added "if grep" example at "if" entry.
|
||
(Thanks, Michel Briand.)
|
||
|
||
18) In "Here Documents" chapter:
|
||
Added comment block to "ex71.sh",
|
||
explaining how to redirect stdout to a file.
|
||
Added in-line example of setting a variable
|
||
from the output of a here document.
|
||
(Thanks, Jason Parker, for both of the above.)
|
||
|
||
19) In "Arrays" chapter:
|
||
Fixed errors in comments in in-line "Nested Array" example.
|
||
Added clarification and comments to "array-assign.bash" example.
|
||
(Thank you, William Park, for both of the above.)
|
||
After "array-assig.bash" example, added note about speeding up
|
||
execution using an "unnecessary" 'declare -a' in an array declaration.
|
||
|
||
20) In "Gotchas" chapter:
|
||
Added problem with "tail -f" piped to a "grep" while trying to
|
||
write the stdout to a file.
|
||
(Thanks, TKVoice Author, for bringing this to my attention.)
|
||
|
||
21) In "Options" chapter:
|
||
Minor revisions to "Bash options" table.
|
||
|
||
22) In "Revision History" appendix:
|
||
Changed format to a table.
|
||
|
||
23) Restored truncated version of Revision History to front matter.
|
||
It turns out that this is required Docbook metadata, per the LDP.
|
||
|
||
|
||
|
||
|
||
Version 2.3
|
||
'STRAWBERRY' release, 12/28/03
|
||
|
||
1) In "Parameter Substitution" section of "Variables Revisited" chapter:
|
||
Fixed typo ("code code") at "${parameter=default}" entry.
|
||
(Thank you, Ken Harrenstien.)
|
||
Simplified usage example of "${var#Pattern}.
|
||
Added more elaborate alternate.
|
||
(Thank you, Manfred Schwarb.)
|
||
|
||
2) In "Operations and Related Topics" chapter:
|
||
Noted that as of version 2.05b, Bash supports 64-bit integers.
|
||
(Thank you, Ken Harrenstien.)
|
||
|
||
3) In "Options" chapter:
|
||
Clarified "single-dash" versus "double-dash" invocation of options.
|
||
|
||
4) In "Internal Commands" chapter:
|
||
Applied fix to "eval.example" example.
|
||
(Thanks, Paulo Marcel Coelho Aragao.)
|
||
|
||
5) In "Text Processing Commands" of "External Commands and Filters" chapter:
|
||
Modified "wf.sh" example to also filter out commas.
|
||
|
||
6) In "Basic Commands" section of "External Commands" Chapter:
|
||
At "ln" discussion, fixed error and added John MacDonald's lucid
|
||
explanation of the difference between a hard and soft link.
|
||
|
||
7) In "Complex Commands" section of "External Commands" Chapter:
|
||
At "xargs" discussion, added "wf2.sh" example script.
|
||
|
||
8) In "Special Characters" chapter:
|
||
Modified "ex58.sh" example to include creation date in name of
|
||
backup file. (Thanks, Joshua Tschida.)
|
||
Added listing for "Ctl-Q." (Thanks, Jeremy Weatherford.)
|
||
Fixed erroneous comment at ": >>" entry. (Thanks, Mitchlan Landers.)
|
||
|
||
9) In "Time/Date Commands" section of "External Commands" chapter:
|
||
At "date" discussion, added "ex58" cross-reference
|
||
and using "date" to generate 6-digit random integers.
|
||
|
||
10) Bash, version 2.05b, no longer supports large negative integer
|
||
return values. This required changing some text and rewriting the
|
||
example scripts "max2.sh" and "return-test.sh" in the "Functions"
|
||
chapter. Also, the "days-between.sh" script in the "Contributed
|
||
Scripts" appendix needed modification. It serves me right for
|
||
using undocumented features.
|
||
|
||
11) In "Functions" chapter:
|
||
Added subsection on recursion in a function, without using local
|
||
variables. Added Amit Singh's wonderfully recursive "Towers of Hanoi"
|
||
(hanoi.bash) example script.
|
||
|
||
12) In "Gotchas" chapter:
|
||
Added discussion of hazards of using undocumented features in Bash.
|
||
|
||
13) In "Internal Variables" section of "Variables Revisited" chapter:
|
||
Revised discussion of "$TMOUT" variable to reflect
|
||
changes in version 2.05b of Bash. Provided inline usage example.
|
||
|
||
14) In "Here Documents" chapter:
|
||
Minor stylistic change in introductory paragraph.
|
||
|
||
15) In "Globbing" section of "Regular Expressions" chapter:
|
||
Added discussion of changing globbing behavior using "set -f" and
|
||
"nocaseglob" and "nullglob" options to 'shopt.'
|
||
|
||
16) In "Arrays" chapter:
|
||
Fixed error in comment in "array-ops.sh" example.
|
||
(Paulo Marcel Coelho Aragao and Emilio Conti both pointed this out.)
|
||
Fixed error in comment in "array-strops.sh" example.
|
||
(Thanks, Paulo Marcel Coelho Aragao.)
|
||
Fixed misleading comment in "ex67.sh" example,
|
||
and added comment about use of "@" and "*" in array notation
|
||
being analogous to $@ and $*.
|
||
(Thanks, Paulo Marcel Coelho Aragao.)
|
||
Removed unnecessary instances of "declare" from "empty-array.sh"
|
||
example.
|
||
(Thanks, Paulo Marcel Coelho Aragao.)
|
||
Simplified in-line example demonstrating loading of the contents
|
||
of a file into an array.
|
||
(Thanks, Paulo Marcel Coelho Aragao.)
|
||
Added comments suggesting a simplification in "bubble.sh" example.
|
||
(Thanks, Paulo Marcel Coelho Aragao.)
|
||
|
||
17) In "Contributed Scripts" appendix:
|
||
Added Konstantin Riabitsev's "usb.sh" example.
|
||
Fortunately, the script is GPL, which is compatible
|
||
with the ABS Guide license.
|
||
|
||
18) In "Analyzing Scripts" section of "Exercises" appendix:
|
||
Minor stylistic changes in commentary.
|
||
|
||
19) In "Copyright" appendix:
|
||
Added links for Russian and Italian translations.
|
||
|
||
20) Moved the Revision History to the back of the book, into an
|
||
appendix of its own.
|
||
(I have had numerous requests to do this.)
|
||
|
||
|
||
|
||
|
||
Version 2.2 'CRANBERRY' release, 11/01/03
|
||
Comments: Major release.
|
||
Much new material added.
|
||
|
||
1) In "Text Processing Commands" of "External Commands and Filters" chapter:
|
||
Fixed up listing of "gettext."
|
||
(Thanks, Bruno Haible.)
|
||
Added "msgfmt."
|
||
Renamed "du.sh" example to "Du.sh" to avoid confusion with system 'du"
|
||
command.
|
||
(Thank you, Bill Gradwohl.)
|
||
|
||
2) In "Typing Variables" section of "Variables Revisited" chapter:
|
||
At 'declare,' added example of arithmetic operations enabled
|
||
with '-i' option.
|
||
Fixed term heading to "-x var=$value." (Thank you, Bill Gradwohl.)
|
||
|
||
3) Modified "Localization" appendix, per suggestions by Bruno Haible.
|
||
|
||
4) In "Internal Variables" section of "Variables Revisited" chapter:
|
||
Added '$PROMPT_COMMAND.'
|
||
Fixed an error in "arglist.sh" example.
|
||
Added Bj<42>n Eriksson's "readpipe.sh" example.
|
||
|
||
5) In "Local Variables" section of "Functions" chapter:
|
||
Modified note in example script in footnote 2.
|
||
(Thanks, Zhao You Bing.)
|
||
|
||
6) Fixed up references to my own "yawl" package, to reflect
|
||
the latest update.
|
||
|
||
7) In "Writing Scripts" section of "Exercises" appendix:
|
||
In "Difficult" section, added "Testing Passwords" exercise .
|
||
|
||
8) In "Subshells" chapter:
|
||
In in-line script example that tests whether variable is set,
|
||
noted that this also tests whether that variable is present
|
||
in the environment (exported).
|
||
(Thank you, Mr. Fred.)
|
||
|
||
9) In "Comparison Operators" section of "Tests" chapter:
|
||
Corrected typos in "str-test.sh" example.
|
||
(Thank you, Bill Gradwohl.)
|
||
|
||
10) In "Internal Commands" chapter:
|
||
Fixed a typo in "ex46.sh" example.
|
||
(Thank you, Bill Gradwohl.)
|
||
Fixed a typo in "ex33.sh" example,
|
||
and implemented changes to explain what OPTIND does.
|
||
(Thank you, Bill Gradwohl.)
|
||
|
||
11) In "Information and Statistics" subsection of "System and
|
||
Administrative Commands" chapter:
|
||
Substituted better example of 'sar' output.
|
||
(Thank you, Sebastien Godard.)
|
||
|
||
12) In "Local Variables " section of "Functions" chapter:
|
||
Fixed up "ex62.sh" example.
|
||
(Thank you, Bill Gradwohl.)
|
||
|
||
13) In "Basic Commands" section of "External Commands" Chapter:
|
||
Added to discussion of 'ln.'
|
||
Fixed typo in in-line example listing at 'cat,tac.'
|
||
(Thank you, Bill Gradwohl.)
|
||
|
||
14) In "Miscellaneous Commands" section of "External Commands" Chapter:
|
||
Corrected "ex33a.sh" example.
|
||
Noted that 'getopt' permits long options.
|
||
(Thank you, Eric Levy.)
|
||
|
||
15) In "RANDOM" section of "Variables Revisited" chapter:
|
||
Noted exception in "Jipe" method of generating random numbers
|
||
within a given range.
|
||
Added improved formula for generating randoms within a range.
|
||
(Thank you, Bill Gradwohl.)
|
||
Added "random-between.sh" example for generating randoms within a range.
|
||
(Thank you, Bill Gradwohl.)
|
||
|
||
16) In "Arrays" chapter:
|
||
Changed in-line example of miscellaneous array operations
|
||
to an external shell script and enhanced it, per suggestions
|
||
by Michael Zick.
|
||
Added "array-strops.sh" example of using string manipulation operations
|
||
on arrays.
|
||
Added "array-assign.bash" script.
|
||
Added "array-append.bash" script.
|
||
(Thank you, Michael Zick.)
|
||
|
||
17) In "Special Characters" chapter:
|
||
At "Control Characters," section, added Ctl-B, Ctl-I, Ctl-S, and
|
||
Ctl-K listings.
|
||
Fixed listing for Ctl-M (Thanks, Lee Maschmeyer.)
|
||
Also added Lee Maschmeyer's in-line example.
|
||
|
||
18) In "Gotchas" chapter:
|
||
At "Piping echo output . . . " inserted missing space.
|
||
|
||
19) In "Exit and Exit Status" chapter:
|
||
Added material to discussion of "bare" exit.
|
||
|
||
20) Added "Where to Go For Help" section
|
||
to "Endnotes" chapter.
|
||
|
||
21) In the "Sed and Awk Micro-primer" appendix:
|
||
Added "nyal's" "letter-count.sh" script.
|
||
|
||
22) In "Contributed Scripts" appendix:
|
||
Added Michael Zick's "protect_literal.sh" script.
|
||
Added Michael Zick's "unprotect_literal.sh" script.
|
||
Added Michael Zick's "basics-reviewed.bash" script.
|
||
|
||
23) In "Bibliography" section:
|
||
Added 'Bash Navigator' listing.
|
||
Added 'GNU Bash Reference Manual' listing (thanks, Brian Gough).
|
||
|
||
24) Miscellaneous cleanups on example scripts.
|
||
|
||
|
||
|
||
|
||
|
||
Version 2.1
|
||
'HUCKLEBERRY' release, 09/14/03
|
||
|
||
1) In Appendix B, "Reference Cards:
|
||
Fixups --
|
||
(thanks to errors brought to my attention by Heiner Steven).
|
||
|
||
2) In Appendix B, "Reference Cards:
|
||
Added "Miscellaneous Construct" table.
|
||
Added variable prefix matching to "Parameter Substitution" table.
|
||
|
||
3) In "Internal Variables" section of "Variables Revisited" chapter:
|
||
Noted that "$*" must be quoted to differentiate it from "$@" variable,
|
||
and added a case to "arglist.sh" example to demonstrate this.
|
||
(Thanks, Heiner Steven.)
|
||
|
||
4) In "Command Substitution" chapter:
|
||
Added note about the invocation of a subshell.
|
||
Likewise added note in "setting variable to a file" in-line example.
|
||
(Thanks, Paul Heffner.)
|
||
Removed erroneous comment from in-line example of
|
||
setting a variable to contents of a file.
|
||
(Thanks, Anthony Richardson.)
|
||
|
||
5) In "Arrays" chapter:
|
||
Added "script-array.sh" example.
|
||
(Thanks, Chris Martin, for the inspiration.)
|
||
|
||
6) In "System Resources" subsection of "System and Administrative
|
||
Commands":
|
||
Fixed minor error ("while 1") in 'ulimit' illustrative script.
|
||
(Thanks Emmanuel Chantreau)
|
||
|
||
7) In "Subshells" chapter:
|
||
Added a paragraph of commentary concerning external commands and Bash
|
||
builtins.
|
||
|
||
8) In "Special Characters" chapter:
|
||
Elaborated example of ';' usage.
|
||
|
||
9) In "Gotchas" chapter:
|
||
Added in-line example of problem caused by piping to a loop.
|
||
(Thanks Anthony Richardson.)
|
||
|
||
10) In "System and Administrative Commands" chapter:
|
||
Added more info to "sar" listing.
|
||
|
||
11) In "Writing Scripts" section of "Exercises" appendix:
|
||
Added "Monitoring Processes" exercise.
|
||
|
||
12) In "Recursion" section of "Miscellany" chapter:
|
||
Added Anthony Richardson's "usrmnt.sh" example.
|
||
(Thanks!)
|
||
|
||
13) Slight modifications to certain example files for clarification.
|
||
|
||
|
||
|
||
|
||
|
||
Version 2.0
|
||
'GOOSEBERRY' release, 08/24/03
|
||
|
||
Comments:
|
||
In view of the cumulative changes in the last several updates, it's
|
||
bumped up to a major version. This is now officially a "mature" project.
|
||
|
||
|
||
|
||
1) In "Manipulating Strings" section of "Variables Revisited" chapter:
|
||
Added negative index substring extraction example (Thanks, Dan
|
||
Jacobson).
|
||
|
||
2) In "Sed appendix":
|
||
Changed title of second table, to make it less ambiguous.
|
||
|
||
3) Changed "Sunsite" address in two examples.
|
||
|
||
4) Made capitalization of example scripts more consistent.
|
||
|
||
5) In "Command Substitution" chapter:
|
||
Fixed typo in backquotes discussion (Thanks, Jiri Beran).
|
||
|
||
6) In "Process Substitution" chapter:
|
||
Added clarifying comment to SuSE script fragment (Thanks Ulrich Gayer).
|
||
|
||
7) In "Invoking the script" section of
|
||
"Starting Off With a Sha-Bang" chapter:
|
||
Corrected typo in discussion
|
||
(" . . . not recommended is using sh <scriptname . . . ")
|
||
(Thanks, Norman Megill.)
|
||
|
||
8) In "Quoting" chapter:
|
||
Corrected typo in final example ("foor" --> "foo").
|
||
(Thanks, Norman Megill.)
|
||
Noted that 'echo "\" invokes secondary prompt.
|
||
|
||
9) In "Here Document" chapter:
|
||
Shuffled the order of a couple of examples.
|
||
Added warning about closing 'limit string' starting in first character
|
||
position on its line, with in-line example. (Also added a mention in
|
||
"Gotchas" chapter.
|
||
Added "script-generate.sh" example of generating program code
|
||
by disabling parameter substitution within the body of a 'here document.'
|
||
(Thanks, Albert Reiner, for the idea.)
|
||
|
||
10) In "Miscellaneous" subsection of "System and Administrative Commands":
|
||
chapter:
|
||
Added listing for "dialog" toolsets.
|
||
|
||
11) In "Assorted Tips" section of "Miscellany" chapter:
|
||
Added discussion of "dialog" toolsets, with "dialog.sh" example.
|
||
|
||
12) In "Copyright" appendix:
|
||
Updated notices.
|
||
|
||
13) Added "Reference Cards" appendix.
|
||
Thank you, Aurelio Marinho Jargas, for giving me the inspiration.
|
||
|
||
14) In "Bibliography" section:
|
||
Added LINUX JOURNAL article, "Scripting for X Productivity" listing.
|
||
Added Jargas' entry for "Regular Expression wizard."
|
||
|
||
15) In "Loop Control" section of "Loops and Branches" chapter:
|
||
Embellished "symlinks.sh" example with Jean Helou's alternative
|
||
method.
|
||
|
||
16) Typo fixes supplied by Edward Scholtz (thanks!):
|
||
"Special Variable Types" section of "Introduction to Variables" chapter
|
||
"fairly simply way" --> "fairly simple way"
|
||
"Quoting" chapter
|
||
"advisable in enclose it" --> "advisable to enclose it"
|
||
|
||
17) In "Copyright" appendix:
|
||
Added note about contributors rights.
|
||
Added mention of Russian translation being underway.
|
||
|
||
18) Corrected several minor typos in the text and script examples.
|
||
|
||
|
||
|
||
Version 1.9 [Cleanups & revisions]
|
||
'PERSIMMON' release, 06/21/03
|
||
|
||
1) In "Portabilities Issues" section of "Miscellany" chapter:
|
||
Added URL for article about Caldera's release of UNIX source.
|
||
[Yes, indeed, before Caldera reinvented itself as SCO, it had
|
||
begun to Open Source the code to UNIX.]
|
||
|
||
2) In "Copyright" appendix:
|
||
Added trademark notices.
|
||
|
||
3) In "Arrays" chapter:
|
||
Added another initialization option to in-line example.
|
||
Fixed error in comment in "q-function.sh" example.
|
||
Added "embedded-arrays.sh" example of using indirect references
|
||
with embedded arrays. (Thank you, Dennis Leeuw.)
|
||
|
||
4) In "Regular Expressions" chapter:
|
||
Added mention of "anchors."
|
||
|
||
5) In "Assorted Tips" section of "Miscellany" chapter:
|
||
Added in-line example of using "if-test" constructs to comment out
|
||
code blocks.
|
||
|
||
6) In "cannon.sh" example:
|
||
Added comment about firing cannon balls only at the upper right-hand
|
||
corner. (Thanks, Emilio Conti, for making me think about this.)
|
||
|
||
7) In "String Manipulation" section of "Variables Revisited" chapter:
|
||
Fixed two errors in comments of in-line substring replacement example.
|
||
(Thanks, Emilio Conti.)
|
||
|
||
8) In "ex21.sh" example:
|
||
Eliminated unnecessary variable.
|
||
(Thanks, Emilio Conti.)
|
||
|
||
9) In "wstrings.sh" example:
|
||
Eliminated unnecessary variable.
|
||
(Thanks, Emilio Conti.)
|
||
|
||
10) In "Comparison Operations" section of "Tests" chapter:
|
||
Fixed if ["$a" -gt "$b" ] Missing space!
|
||
(Thanks, Thomas Treutner.)
|
||
|
||
11) In "Communications Commands" section of "External Commands" chapter:
|
||
Moved "cu" to after "uucp," since it's part of the latter's command set.
|
||
|
||
12) In "Contributed Scripts" appendix:
|
||
Corrected error in comment in "makedict.sh" script.
|
||
|
||
13) In "Copyright" appendix:
|
||
Updates.
|
||
|
||
14) Various minor script updates.
|
||
|
||
|
||
|
||
Version 1.8 [Cleanups & revisions]
|
||
'BREADFRUIT' release, 05/10/03
|
||
|
||
|
||
1) Revised "self-document.sh" to remove unnecessary 'cat.'
|
||
|
||
2) In "cvt.sh" example, quoted target file name and added exercise.
|
||
|
||
3) Updated Jordi Sanfeliu's e-mail address in "Credits" chapter and in
|
||
"tree.sh" example script.
|
||
|
||
4) In "blot-out.sh" script, updated the Peter Gutmann URL.
|
||
|
||
5) In "Miscellaneous" subsection of "System and Administrative Commands"
|
||
chapter:
|
||
Added "watch" command.
|
||
|
||
6) In the introduction, in reason not to use shell scripts,
|
||
Removed misleading reference to Open Source (thank you, Peter Lietz, for
|
||
pointing this out).
|
||
|
||
7) In "Quoting" chapter:
|
||
Added footnote about problem double quoting "!" and "\!".
|
||
(Thanks, Wayne Pollock.)
|
||
|
||
8) In "Internal Commands" chapter:
|
||
Added caution about 'cd //' problem. (Thanks, Wayne Pollock.)
|
||
Added short example of "$!" usage. (Thanks, Jacques Lederer.)
|
||
|
||
9) In "Arrays" chapter:
|
||
Replaced "empty-array.sh" with an extended version.
|
||
Added note that Bash treats variables as arrays, even if not declared as
|
||
such.
|
||
Added example of nested arrays.
|
||
Added example of copying and concatenating arrays.
|
||
(All the above thanks to Michael Zick.)
|
||
|
||
10) In "Tests" chapter:
|
||
Fixed up "Tests Constructs" section link (finally!).
|
||
|
||
11) In "Command Substitution" chapter:
|
||
Added mention of $(<$file) construct.
|
||
|
||
12) In "Functions" chapter:
|
||
Added material to nested functions in-line examples.
|
||
|
||
13) In the "Portability Issues" section of the "Miscellany" chapter:
|
||
Added short list of Bash-specific features.
|
||
|
||
14) In "File and Archiving Commands" section of "External Commands" Chapter:
|
||
Added "dos2unix" utility.
|
||
|
||
15) In "Gotchas" chapter:
|
||
Added short in-line example of using an uninitialized variable.
|
||
Added in-line example showing DOS-formatted script failing to run.
|
||
|
||
16) In "Contributed Scripts" appendix:
|
||
Added Michael Zick's "directory-info.sh" script.
|
||
|
||
17) In "Bibliography" section:
|
||
Updated "The UNIX CD Bookshelf" reference.
|
||
Added Eric Pement's sed resources page.
|
||
Removed outdated "Sed F.A.Q." reference.
|
||
Updated Frisch entry.
|
||
Updated Shelldorado and Giles Orr entries.
|
||
|
||
18) Updated sample .bashrc file (Appendix G).
|
||
|
||
19) A few minor error corrections and clean ups at various places in the
|
||
text.
|
||
|
||
|
||
|
||
|
||
Version 1.7 (minor update)
|
||
'COCONUT' release
|
||
01/05/03
|
||
|
||
1) In "Special Variable Types" section of "Introduction to Variables and
|
||
Parameters" chapter:
|
||
Added note about "$*" and "$@" special variables, and updated "ex17.sh"
|
||
example to reflect this.
|
||
|
||
2) In "Manipulating Strings" subsection of "Variables Revisited" chapter:
|
||
Added "paragraph-space.sh" example.
|
||
|
||
3) In "Loop Control" section of "Loops and Branches" chapter:
|
||
Added "continue-n.example" to illustrate use of "continue N" construct.
|
||
(Thank you, Albert Reiner.)
|
||
|
||
4) In "Internal Commands" chapter:
|
||
Added section to "read-redir.sh" example to show setting "$IFS" within a
|
||
loop. (Thanks, Dim Segebart.)
|
||
Added Rory Winston's example of "eval" usage.
|
||
|
||
5) In "List Constructs" chapter:
|
||
Deleted erroneous comment in "ex65.sh."
|
||
(Thank you, Francisco de Jesus Orozco Ruiz.)
|
||
|
||
6) In "File Test" section of "Tests" chapter:
|
||
Added "broken-link.sh" example.
|
||
|
||
7) In "Internal Variables" section of "Variables Revisited" chapter:
|
||
Added comment on $PIPESTATUS.
|
||
|
||
8) In "RANDOM" section of "Variables Revisited" chapter:
|
||
Added the 'jipe' techniques for generating random numbers within a
|
||
specified range.
|
||
Added "pick-card.sh" example. Thank you once more, jipe.
|
||
|
||
9) In "Miscellaneous Commands" section of "External Commands" Chapter:
|
||
Amended discussion of "tee" command.
|
||
|
||
10) In "System and Administrative Commands" chapter:
|
||
Expanded "ulimit" discussion to include "fork bomb" scenario.
|
||
|
||
11) In "Aliases" chapter:
|
||
Slightly revised "alias.sh" example.
|
||
|
||
12) Various minor fixups on example scripts.
|
||
|
||
|
||
|
||
|
||
Version 1.6 (minor update)
|
||
'POMEGRANATE' release
|
||
09/29/02
|
||
|
||
1) In "System and Administrative Commands" chapter:
|
||
Added "nmap" entry, with in-line usage example.
|
||
|
||
2) In "Communications Commands" section of "External Commands" chapter:
|
||
Revised "self-mailer.sh" example.
|
||
|
||
3) In "Miscellaneous Commands" section of "External Commands" Chapter:
|
||
Added "objdump" entry, with usage example.
|
||
|
||
4) In "File and Archiving Commands" section of "External Commands" Chapter:
|
||
Added "readlink" entry.
|
||
|
||
5) In "/dev and /proc" chapter:
|
||
Added example of extracting information from a /proc file.
|
||
|
||
6) Moved Chapter 3, "Exit and Exit Status" ahead 3 positions, to make it
|
||
Chapter 6. This makes the organization of the first part of book more
|
||
logical.
|
||
|
||
7) In "List Constructs" chapter:
|
||
Added discussion of using an "and list" to supply a default command-line
|
||
argument.
|
||
|
||
8) In "Quoting" chapter:
|
||
Rewrote "Of course, grep [Ff]irst *.txt would not work."
|
||
This does work under Bash, and fails under tcsh.
|
||
(Thanks, Simon Williams.)
|
||
Added example of hexadecimal character assignment to "escaped.sh" example.
|
||
(Thanks, Greg Keraunen.)
|
||
|
||
9) In "Special Variable Types" section of "Introduction to Variables and
|
||
Parameters" chapter:
|
||
Showed how to reference the last command-line parameter.
|
||
|
||
|
||
10) In "Internal Commands" chapter:
|
||
Added cautionary note about setting and exporting a variable in a single
|
||
operation (thanks, Greg Keraunen).
|
||
Added use of '-n' option to "read" to detect keypress of arrow keys,
|
||
with "arrow-detect.sh" example.
|
||
(thanks, Sandro Magi).
|
||
|
||
11) In "Assorted Tips" section of "Miscellany" chapter:
|
||
Added example of using "whatis" to test for an invoked command and do a
|
||
workaround if necessary.
|
||
|
||
12) In "Colorizing Scripts" section of "Miscellany" chapter:
|
||
Fixed typo in comment in "color-echo.sh" example.
|
||
|
||
13) In "Debugging" chapter:
|
||
Added note about syntax error messages possibly ignoring comment lines
|
||
when calculating the line number of the error. (Thanks, Keith Matthews)
|
||
|
||
14) Wrote a short introduction to "Part 4: Advanced Topics."
|
||
|
||
15) In "Writing Scripts" section of "Exercises" appendix:
|
||
In "Intermediate" section", added "Mailing List" exercise.
|
||
|
||
16) In the "Sed and Awk Micro-primer" appendix:
|
||
Added discussion and example of single-quoted 'sed' editing command not
|
||
working.
|
||
|
||
17) In "Bibliography" section:
|
||
Updated entry for "Sed F.A.Q." / "Do It With Sed."
|
||
|
||
18) Various minor fixups on example scripts.
|
||
|
||
|
||
|
||
|
||
Version 1.5 (major update)
|
||
'PAPAYA' release
|
||
07/13/02
|
||
|
||
1) In "Basic Commands" section of "External Commands and Filters"
|
||
Added "man, info" entry.
|
||
At "ls," added comments to "ex40.sh" example.
|
||
|
||
2) In "File and Archiving Commands" section of "External Commands and Filters"
|
||
section:
|
||
Moved "shred" to "Utilities" subsection and did minor rewriting of entry.
|
||
Fixed minor error in "de-rpm.sh" example.
|
||
Added "mktemp" entry.
|
||
Added "rpm" entry, with usage examples.
|
||
Added "rpm2cpio" entry.
|
||
|
||
3) In "Math Commands" section of "External Commands" chapter:
|
||
Split "bc" and "dc" into separate entries.
|
||
At "bc", added "cannon.sh" example.
|
||
|
||
4) In "Miscellaneous Commands" section of "External Commands" Chapter:
|
||
At "mcookie" entry, added "tempfile-name.sh" example.
|
||
At "seq" entry, added section to "ex53.sh" example.
|
||
Added "units" entry, with "unit-conversion.sh" example.
|
||
Added "doexec" entry.
|
||
More info at "pathchk" entry.
|
||
|
||
5) In "Communications Commands" section of "External Commands" chapter:
|
||
Added usage example at "host" entry.
|
||
Revised "finger" entry.
|
||
Added "ipcalc" entry.
|
||
Added "mailto" entry.
|
||
Added "wget" entry.
|
||
Added "lynx" (with "-dump" option) entry.
|
||
More info at "nslookup."
|
||
More info at "dig."
|
||
More info at "traceroute."
|
||
|
||
6) In "Time/Date Commands" section of "External Commands" chapter:
|
||
More info at "usleep" entry.
|
||
|
||
7) In "Terminal Control Commands" section of "External Commands" chapter:
|
||
Added more options at "tput" entry.
|
||
Added "infocmp" entry, with usage example.
|
||
|
||
8) In "File and Archive Commands" section of "External Commands" Chapter:
|
||
Added info at "diff" entry.
|
||
|
||
9) In "Complex Commands" section of "External Commands" Chapter:
|
||
At "find" entry, clarified introductory remarks, and added info.
|
||
|
||
10) In "Internal Commands and Builtins" chapter:
|
||
At "source" entry, added "self-source.sh" example.
|
||
At "shopt" entry, fixed up usage example.
|
||
|
||
11) In "Job Control Commands" section of "Internal Commands":
|
||
Added comments to "self-destruct.sh" example.
|
||
|
||
12) In "Testing and Branching" subsection of "Loops and Branches" chapter,
|
||
Improved "isalpha.sh" example (added integer test function).
|
||
|
||
13) In "System and Administrative Commands" chapter:
|
||
Added "passwd" entry, with in-line illustrative script.
|
||
Added "readelf" entry.
|
||
Added "size" entry.
|
||
More discussion in "Modules" subsection.
|
||
Added usage example at "dmesg" entry.
|
||
|
||
14) In "Assorted Tips" section of "Miscellany" chapter:
|
||
Added "Colorizing Scripts" section, with "ex30a.sh" and
|
||
"color-echo.sh" examples.
|
||
Added "agram.sh" example of iterated piping to a filter.
|
||
|
||
15) In "Optimizations" section of "Miscellany" chapter:
|
||
Added "avoiding unnecessary commands."
|
||
|
||
16) In "Arrays" chapter:
|
||
Added "poem.sh" example.
|
||
|
||
17) In "Regular Expressions" chapter:
|
||
Clarifications and error corrections on "Extended Regular Expressions"
|
||
section (thanks, Peter Tillier).
|
||
|
||
18) In "Tests" chapter:
|
||
Added code to "arith-tests.sh" example.
|
||
|
||
19) In "Parameter Substitution" chapter:
|
||
At "${parameter-default}", added usage when command-line parameters in a
|
||
script are "missing."
|
||
At "${paramter?err_msg}", added "usage-msg.sh" example.
|
||
|
||
20) In "Functions" chapter:
|
||
Added info to "ex60.sh" example.
|
||
|
||
21) In "Gotchas" chapter:
|
||
Added material to "badread.sh" example.
|
||
|
||
22) In "Special Characters" chapter:
|
||
Added usage examples at "*" entry.
|
||
|
||
23) In "Variable Substitution" section of "Introduction to Variables" chapter:
|
||
Added in-line example of using uninitialized variable in arithmetic
|
||
operations.
|
||
|
||
24) In "Bash Variables are Untyped" section of "Introduction to Variables"
|
||
chapter:
|
||
Rewrote "int-or-string.sh" example.
|
||
|
||
25) Renamed "Oddities" section of "Miscellany" chapter to "Recursion",
|
||
and moved it forward.
|
||
|
||
26) In "Starting off with a Sha-Bang" chapter:
|
||
Added commentary and script snippet to footnote [2].
|
||
|
||
27) Slight revision to introduction to the book.
|
||
|
||
28) In "Contributed Scripts" appendix:
|
||
Added "soundex.sh" example.
|
||
Fixed minor typo in lead-in to "obj-oriented.sh" example.
|
||
|
||
29) In "Writing Scripts" section of "Exercises" appendix:
|
||
Added "Justification" exercise to "Intermediate" section.
|
||
Added "Buffon's Needle" exercise to "Difficult" section.
|
||
Added "Chasing Spammers" exercise to "Difficult" section.
|
||
|
||
30) In "Bibliography" section:
|
||
Added Steve Parker entry.
|
||
|
||
31) Added Landon Noll epigraph to end of "Scripting With Style" chapter.
|
||
|
||
32) Various minor cleanups and additions to example scripts.
|
||
|
||
|
||
|
||
Version 1.4 (minor update)
|
||
'MANGO' release
|
||
06/16/02
|
||
|
||
1) In "Special Characters" chapter:
|
||
Added "<" and ">" ASCII comparison entry.
|
||
Added "\<" and "\>" word boundary in a regular expression entry.
|
||
Added "&>" to redirection characters.
|
||
Added "history mechanism" comment to "!" entry.
|
||
|
||
2) In "Debugging" chapter:
|
||
Added "missing-keyword.sh" example of error message, with note.
|
||
Minor language clarification.
|
||
|
||
3) In "Tests" chapter:
|
||
Added material to "ex11.sh" example.
|
||
Changed "cmp a b >/dev/null" inline example to "cmp a b &>/dev/null
|
||
(thanks Baris Cicek).
|
||
|
||
4) In "I/O" Redirection chapter:
|
||
Added "&>filename" to redirection chart.
|
||
|
||
5) In "Of Zeros and Nulls" chapter:
|
||
Added comment to "suppressing output" inline example.
|
||
|
||
6) In "External Commands and Filters" chapter:
|
||
Moved "diff", "patch", "diff3", "sdiff", "cmp", and "comm" from "Text
|
||
Processing Commands" section to "File and Archiving Commands" section, and
|
||
created a "Comparison" subsection for them.
|
||
Moved "ptx" from "Text Processing Commands" section to "File and Archiving
|
||
Commands" section.
|
||
Gave the sections descriptive subtitles.
|
||
|
||
7) In "Text Processing Commands" of "External Commands and Filters" chapter:
|
||
Added tests to "file-comparison.sh" example.
|
||
At "head", added "script-detector.sh" example.
|
||
|
||
8) In "Miscellaneous Commands" section of "External Commands" Chapter:
|
||
Added "mcookie" entry.
|
||
|
||
9) In "Math Commands" section of "External Commands" chapter:
|
||
At "bc/dc" entry, added "hexconvert.sh" and "factr.sh" (thanks, Michel
|
||
Charpentier) examples of using "dc."
|
||
|
||
10) In "List Constructs" chapter:
|
||
Minor rewriting of "ex65.sh" example.
|
||
|
||
11) In "Contributed Scripts" appendix:
|
||
Added "blank-rename.sh" example.
|
||
|
||
12) In "Writing Scripts" section of "Exercises" appendix:
|
||
Added detail to "Safe Delete" exercise and moved it to "Intermediate"
|
||
subsection.
|
||
Added "Automatically Decompressing Files" exercise ("Easy" section).
|
||
Added "Lottery Numbers" exercise ("Easy" section).
|
||
Added "Passwords" exercise ("Intermediate" section).
|
||
Added "Fog Index" exercise ("Difficult" section).
|
||
|
||
13) In the "Security Issues Section" of the "Miscellany" chapter:
|
||
Added 'Unix Scripting Malware' reference to the footnote.
|
||
|
||
14) In "Starting off with a Sha-Bang" chapter,
|
||
Fixed typo in comment in "ex2.sh" example ('wtemp' --> 'wtmp')
|
||
Thanks for pointing this out, Julien Reveret.
|
||
|
||
15) In "Internal Commands and Builtins" chapter:
|
||
At "read" entry, added in-line example of using "cat" to pipe to a
|
||
"read".
|
||
|
||
16) In "Optimizations" section of "Miscellany" chapter:
|
||
Added text.
|
||
|
||
17) Numerous typos corrected from a list sent in by Andreas Abraham (thanks!).
|
||
[Imagine that, I've been misspelling "Eratosthenes" since the 8th grade.]
|
||
|
||
|
||
|
||
|
||
Version 1.3
|
||
'TANGERINE' release
|
||
06/02/02
|
||
|
||
1) In "Arrays" chapter:
|
||
Revised the "bubble.sh" example script by splitting the array variable.
|
||
|
||
2) In "Here Documents" chapter:
|
||
Clarified introduction.
|
||
Added using a here document to comment out a block of code (thanks, Adam
|
||
Lazur for pointing this out), with "commentblock.sh" example.
|
||
Added a "self-documenting" script example ("self-document.sh").
|
||
Added using a here document to supply input to a function, with
|
||
"here-function" illustrative example.
|
||
|
||
3) In "Contributed Scripts" appendix:
|
||
Modified "life.sh" example to accept different startup file as a parameter
|
||
at invocation.
|
||
Added "makedict.sh" example.
|
||
|
||
4) In "Exercises" appendix:
|
||
Added "sum matching numbers" exercise.
|
||
|
||
5) In "Oddities" section of "Miscellany" chapter:
|
||
Added Rick Boivie's "pb.sh" script as a recursive script example.
|
||
|
||
6) In "Optimizations" section of "Miscellany" chapter:
|
||
Editing of "loops" paragraph.
|
||
Added cross-reference to "monthlypmt.sh" script.
|
||
|
||
7) In "Parameter Substitution" chapter:
|
||
Fixed typos at "${var/#patt/replacement}" and "${var/#patt/replacement}"
|
||
discussion (thank you, Dr. Claudia Neumann, for pointing this out).
|
||
|
||
8) In "Sed and Awk Mini-Primer"
|
||
Added sed script cross-reference.
|
||
|
||
9) In "Basic Commands" section of "External Commands" Chapter:
|
||
More info at "mv".
|
||
|
||
10) In "File and Archive Commands" section of "External Commands" Chapter:
|
||
More info at "md5sum".
|
||
Added "file-integrity.sh" example at "md5sum".
|
||
At "tar", added various options and clarified commentary.
|
||
More info at "bzip2".
|
||
Added "unarc/unarj/unrar" entry.
|
||
|
||
11) In "Text Processing Commands" section of "External Commands" Chapter:
|
||
Added footnote at "tr" explaining that only the GNU version recognizes
|
||
character classes.
|
||
|
||
12) In "Complex Commands" section of "External Commands" Chapter:
|
||
Added notes to example "ex45a.sh".
|
||
Fixups in "ex45.sh" and "ex45a.sh".
|
||
Corrected commentary on escaped parentheses grouping operator.
|
||
|
||
13) In "Time/Date Commands" section of "External Commands" chapter:
|
||
Added ">> newfile" at "touch".
|
||
|
||
14) In "Math Commands" section of "External Commands" chapter:
|
||
Added Rick Boivie's comments and improvements (2 sets)
|
||
to "monthlypmt.sh" example script.
|
||
|
||
15) In "Miscellaneous Commands" section of "External Commands" chapter:
|
||
Added "getopt", with "ex33a.sh" illustrative example.
|
||
|
||
16) In "Special Characters" chapter:
|
||
Clarification and added material at "-" (hyphen), including option flag.
|
||
Added mention of use as option flag at "+".
|
||
Added short definition of a "filter."
|
||
At ".", reorganized entry and
|
||
added current working directory and parent directory (..).
|
||
At "?", reorganized entry and
|
||
added "test operator" meaning.
|
||
At "$", added "end-of-line" regular expression meaning.
|
||
At "[]", added array element and regular expression meanings.
|
||
Added "$?" entry.
|
||
Added "$$" entry.
|
||
Added "^" entry.
|
||
Added "||" entry.
|
||
Added "&&" entry.
|
||
|
||
17) In "Internal Commands and Builtins" chapter:
|
||
Partially rewrote and clarified the introduction to the chapter.
|
||
Added brief discussion of what happens when 'read' lacks.
|
||
an associated variable, with "read-novar.sh" example.
|
||
At "set", added discussion of "--" option, with "set-pos.sh" example
|
||
and added discussion of "set" with no options and arguments.
|
||
At "exec", added "self-exec.sh" example.
|
||
|
||
18) In "Job Control Commands" section of
|
||
"Internal Commands and Builtins" chapter:
|
||
Added "self-destruct.sh" example at "kill."
|
||
|
||
19) In "Of Zeros and Nulls" chapter, added examples of using /dev/null.
|
||
|
||
20) In "Debugging" chapter, fixed up "online.sh" example to cope with changed
|
||
requirements of newer Linux kernels.
|
||
|
||
21) In "Aliases" chapter, added comment to "alias.sh" example, per a
|
||
suggestion by Steve Jacobson.
|
||
|
||
22) In "Gotchas" chapter:
|
||
Added piping to a "read", with "badread.sh" example.
|
||
Added note about GNU utilities in scripts.
|
||
|
||
23) In "I/O Redirection" chapter:
|
||
Clarified language in chart.
|
||
Added '>' as zero-length file truncation operator.
|
||
Added "reassign-stdout.sh" and "upperconv.sh" examples at "exec".
|
||
|
||
24) In "String Manipulation" section of "Variables Revisited" chapter:
|
||
Added instances in in-line examples.
|
||
Added end-of-string operators for 'expr'.
|
||
Small fixup in "underscore variable" inline example.
|
||
|
||
25) In "Regular Expressions" chapter:
|
||
Added '\<...\>' word boundary markers.
|
||
|
||
26) In "Quoting" chapter:
|
||
Fixed minor syntax error in "tar" example (thanks, Ian Barwick).
|
||
|
||
27) Expanded "Author's Note" section of "Endnotes" chapter.
|
||
|
||
28) Fixed minor typo in table in "Exit Codes With Special Meanings" appendix.
|
||
|
||
29) Added reference links to "environmental variables" explanation.
|
||
|
||
30) Fixed reference links to "startup files" section.
|
||
|
||
31) In "Miscellany" Chapter:
|
||
Added "Security Issues" section.
|
||
|
||
32) In "Bibliography" section:
|
||
Added Denning entry.
|
||
Added Polya entry.
|
||
Added "Shell Corner" entry.
|
||
Added "UNIX Grymoire" entry.
|
||
|
||
33) In "Copyright" appendix:
|
||
Clarified license terms with reference to "Open Publication License."
|
||
|
||
34) Various minor fixups and enhancements to example scripts.
|
||
|
||
35) Updated references to LDP site (changed from 'linuxdoc.org' to
|
||
'tldp.org').
|
||
|
||
|
||
|
||
Version 1.2 (major release)
|
||
03/31/02
|
||
|
||
1) In "Operators" subsection of "Operations and Related Topics" chapter:
|
||
Fixed comment in in-line example (thanks, Marcus Berg<72>f).
|
||
Added "gcd.sh" example at "%" (modulo) operator.
|
||
|
||
2) In "Numerical Constants" subsection of "Operations and Related Topics"
|
||
chapter:
|
||
Fixed up and enhanced "numbers.sh" example (thanks, Rich Bartell).
|
||
|
||
3) In "arithops.sh" example, fixed comment to refer to correct operation
|
||
(thanks, Marcus Berg<72>f).
|
||
|
||
4) In "Command Substitution" chapter:
|
||
Added excerpts from /etc/rc.d/rc.sysinit as examples of setting
|
||
a variable to the contents of a file using "var=`cat filename`
|
||
construction.
|
||
Added "csubloop.sh" example of setting a variable from the output of a
|
||
loop.
|
||
|
||
5) In "Basic Commands" section of "External Commands and Filters" chapter:
|
||
Added info on "-f" option at "mv" and "rm".
|
||
Added "-s" option at "cat".
|
||
|
||
6) In "Text Processing Commands" sect. of "External Commands and Filters" chapt.:
|
||
Added more info for "nl".
|
||
Rewrote "groff" as a separate entry, and added "col" and "tbl"/"eqn"
|
||
as subentries.
|
||
Added much more info on "tr".
|
||
Added more options to "grep".
|
||
|
||
7) In "Complex Commands" section of "External Commands" chapter:
|
||
Added more info at "xargs".
|
||
Added caution when using "*" with "expr" in arithmetic operation.
|
||
|
||
8) In "Miscellaneous Commands" section of "External Commands" chapter:
|
||
Added more info on "jot/seq".
|
||
Added "Linux Journal" reference at "m4".
|
||
|
||
9) In "File and Archiving Commands" section of "External Commands and Filters"
|
||
chapter:
|
||
Added "mimencode/mmencode".
|
||
More info on "cksum"/"md5sum".
|
||
Added "wstrings.sh" example at "strings" entry.
|
||
|
||
10) In "Communications Commands" section of "External Commands" chapter:
|
||
Added "mail", with "self-mailer.sh" illustrative example.
|
||
|
||
11) In "Time/Date Commands" section of "External Commands" chapter:
|
||
Added discussion of "-u" option to "date".
|
||
|
||
12) In "Special Variable Types" section of "Introduction to Variables" chapter:
|
||
Improved link to "bracket" notation.
|
||
Added note that "shift" command also applies to function parameters.
|
||
|
||
13) In "Internal Variables" section of "Variables Revisited" chapter:
|
||
Added info on "$@" special variable, with new in-line example.
|
||
Corrected "$DIRSTACK" listing (thanks again, Nick Drage).
|
||
At "$TMOUT", added "t-out.sh", another example of timed input (thanks,
|
||
syngin seven).
|
||
Added commentary to "am-i-root.sh" example.
|
||
|
||
14) Changed document subtitle.
|
||
|
||
15) In "Command Substitution" chapter:
|
||
Corrected word-splitting example in "caution" (thanks, Tony Richardson).
|
||
Added "stupid-script-tricks.sh" example of setting a variable to the
|
||
contents of a binary file (which has no useful applications).
|
||
|
||
16) In "Internal Commands and Builtins" chapter:
|
||
Clarified "ex43.sh" example (thanks, Tony Richardson).
|
||
Clarified explanation and example of "echo" eating linefeeds in a
|
||
command fed to it.
|
||
More info on "keywords" topic.
|
||
|
||
17) In "Special Characters" chapter:
|
||
Added in-line example of embedding Ctl-H's in a variable.
|
||
More info on '-' as an option to certain commands.
|
||
Added "background-loop.sh" example at "&" (run command in background).
|
||
|
||
18) In "Bash, version 2" chapter:
|
||
Added "resistor-inventory.sh" example of database using indirect variable
|
||
referencing.
|
||
|
||
19) Changed name of example "rot13_2.sh" to "rot14.sh" because otherwise SGML
|
||
conversion seems to experience namespace confusion.
|
||
|
||
20) In "Quoting" chapter:
|
||
Added header notes to "\" escape usage listing.
|
||
Added in-line example on behavior of "\".
|
||
Slight revisions to "escaped.sh" example.
|
||
|
||
21) In "Internal Variables" section of "Variables Revisited" Chapter:
|
||
Added usage example for "$GROUPS".
|
||
|
||
22) In "Gotchas" chapter:
|
||
Added mixing up integer and string comparison operators.
|
||
|
||
23) In "While Loops" subsection of "Loops and Branches" chapter:
|
||
Added clarifying statement as to when "while loops" are used.
|
||
Added "userlist.sh" example of command substitution in generating
|
||
"[list]" in "for loop".
|
||
|
||
24) In "System and Administrative Commands" chapter:
|
||
Added "rmmod".
|
||
added "sudo".
|
||
Added commentary on "debugfs".
|
||
|
||
25) In "Exercises" Appendix:
|
||
Reorganization into two distinct subsections.
|
||
Added a sample script to annotate.
|
||
Added a script code snippet to fix up.
|
||
Added a few more script writing problems, including the very difficult
|
||
"Playfair Cipher".
|
||
|
||
26) Simplified "wf.sh" example.
|
||
|
||
27) In "Starting off with a Sha-Bang" chapter:
|
||
Fixed typo in "ex2.sh" example script (thanks, David Kimbro for
|
||
bringing this to my attention).
|
||
|
||
28) In "Arrays" chapter:
|
||
Rewrote confusing language in introductory paragraph.
|
||
Added "stackex.sh" example for emulating data structures.
|
||
Added in-line example of loading an array with the contents of a text
|
||
file.
|
||
|
||
29) In "Tests" chapter:
|
||
Clarification of why semicolon needed when "if" and "then" are on same
|
||
line.
|
||
Added material to "ex10.sh" example.
|
||
|
||
30) In "Here Documents" chapter:
|
||
Modified "ex69.sh" example, per message from Jess Thrysoee relaying to me
|
||
clarification from Bram Moolenaar.
|
||
|
||
31) In "I/O Redirection" chapter:
|
||
Fixed comment on in-line example on closing file descriptors.
|
||
(Thanks, Matthieu Lucotte)
|
||
Made the data file for redirection examples, "names.data", visible.
|
||
|
||
32) In "Assorted Tips" section of "Miscellany" chapter:
|
||
Added repeated piping of the output of a filter back to that same filter.
|
||
Added alternative method of having a function return a value to the body
|
||
of the script, with "multiplication.sh" example showing how.
|
||
Added method of having a function "return" multiple values,
|
||
with illustrative "sum-product.sh" example.
|
||
Added "tolower()" function to function library.
|
||
Added methods of passing an array to a function, and returning an array
|
||
from a function to the main body of a script (with example
|
||
"array-function.sh").
|
||
|
||
33) In "Contributed Scripts" appendix:
|
||
Added "collatz.sh" example.
|
||
Added "life.sh" example (Conway's "Game of Life").
|
||
|
||
34) In "Exit Codes" appendix:
|
||
Added footnote with more information about out of range exit codes
|
||
(thanks for tweaking my curiosity about this, Akira Huang).
|
||
|
||
35) In "Sed Micro-Primer" appendix:
|
||
Added use of backslash as newline.
|
||
Added example of operation(s) over an address range.
|
||
|
||
36) In "Bibliography" section:
|
||
Added Pickover entry.
|
||
|
||
37) Clarifications in "Copyright" appendix.
|
||
|
||
38) Various minor edits to various example scripts.
|
||
|
||
|
||
|
||
Version 1.1 release (major release)
|
||
01/06/02
|
||
|
||
1) Fix up comments in "weirdvars.sh" example.
|
||
|
||
2) In "Variables" chapter, slight wording change in first paragraph.
|
||
|
||
3) Slight changes to "ex9.sh" example.
|
||
|
||
4) Added redirection as an alternative remedy to the script hang problem with
|
||
background commands in "Job Control Commands" section of "Internal
|
||
Commands" chapter.
|
||
|
||
5) In "Text Processing Commands" section of "External Commands" chapter:
|
||
Added "-q" option at "grep", with in-line example.
|
||
Added usage example for "cut".
|
||
Much more information on "uniq -c", and added "wf.sh" example.
|
||
|
||
6) In "Functions" chapter:
|
||
Added more info on oversize (> 256) return values.
|
||
Modified "ex62.sh" example.
|
||
Reorganized "Local Variables" section.
|
||
Added note that before function call, all variables within functions
|
||
are local, not just those explicitly declared as such.
|
||
|
||
7) Add section on "Shell Scripting Under Windows" to "Miscellany" chapter.
|
||
|
||
8) In "String Manipulation" section of "Variables Revisited" chapter:
|
||
Bugfix in comment in "%%" substring removal example.
|
||
Added "cvt.sh" example at "%%" substring removal discussion.
|
||
Added subsection on using "awk" functionality for string manipulation,
|
||
with added "substring-extraction.sh" example.
|
||
|
||
9) In "$RANDOM" section of "Variables Revisited" chapter:
|
||
Removed superfluous "note" icon at beginning of section.
|
||
Added example of using "awk" rand() function to generate random numbers.
|
||
|
||
10) In "Command Substitution" chapter:
|
||
Added discussion and example of extending Bash toolset.
|
||
Added footnote about what exactly constitutes a "command".
|
||
|
||
11) In "System and Administrative Commands" chapter:
|
||
Added "lastlog" command.
|
||
More info on "route" and "netstat".
|
||
Fixed reference to "crond" at "logrotate".
|
||
Added "tmpwatch".
|
||
Added "sar".
|
||
|
||
12) In "Miscellaneous Commands" section of "External Commands" chapter,
|
||
added more info and an example to "dd".
|
||
|
||
13) In "Math Commands" section of "External Commands" chapter:
|
||
Added an alternative method of invoking 'bc', with "alt-bc.sh" example.
|
||
Added using "awk" math commands, with "hypotenuse.sh" example.
|
||
|
||
14) In "Archiving Commands" section of "External Commands" chapter,
|
||
added footnote to "tar".
|
||
|
||
15) In "Bibliography" section:
|
||
Cleaned up cross reference to University of Alberta site.
|
||
Added comp.unix.shell newsgroup reference.
|
||
|
||
16) Made corrections to "symlinks.sh" and "symlinks2.sh" examples,
|
||
per Dominik 'Aeneas' Schnitzer.
|
||
|
||
17) In "Starting Off With a Sha-Bang" chapter, clarified footnote explaining
|
||
"magic numbers", per Stanislav Brabec's suggestion.
|
||
|
||
18) In "I/O Redirection" chapter, added stdout redirection instance, with
|
||
example.
|
||
|
||
19) In "Sed and Awk Micro-Primer" appendix:
|
||
Added $filename to in-line examples.
|
||
Fixup on "END" command block description.
|
||
|
||
20) Added semicolons as necessary to terminate commands in Perl examples.
|
||
|
||
21) Added "History Commands" appendix.
|
||
|
||
|
||
|
||
|
||
|
||
Version 1.0 (stable!), released 10/14/01
|
||
|
||
1) Quoted "$LOGFILE" in in-line example in "Scripting With Style" subsection
|
||
of "Miscellany" chapter.
|
||
|
||
2) Added missing "/" in first footnote in Chapter 2 (thanks, Stepan Kasal).
|
||
|
||
3) Additional comments for "primes.sh" contrib script.
|
||
Fixup in "ex72.sh" contrib script.
|
||
|
||
4) In "Job Control Commands" section of "Internal Commands and Builtins" chapter:
|
||
Additional comment for footnote to "enable -f".
|
||
Additional material on "wait" (preventing script hang after background
|
||
command).
|
||
|
||
5) Added "Oddities" section to "Miscellany" chapter.
|
||
o Script calling itself recursively, with illustrative example
|
||
("recurse.sh").
|
||
o Moved "Shell Wrappers" section from "Starting Off With a Sha-Bang"
|
||
chapter to "Miscellany" chapter.
|
||
|
||
6) In "Local Variables and Recursion" section of "Functions" chapter:
|
||
Defined "recursion" in more detail.
|
||
|
||
7) Modified in-line example in "Special Variable Types" section of
|
||
"Introduction to Variables and Parameters". Thanks, John Villalovos for
|
||
bringing a side effect of parameter substitution to my attention.
|
||
|
||
8) In "System and Administrative Commands" chapter:
|
||
Added "setserial".
|
||
Added "MAKEDEV".
|
||
Added "mkbootdisk".
|
||
Added "tcpdump".
|
||
Added "strip".
|
||
Added "chkconfig".
|
||
Added "hdparm".
|
||
Added "badblocks".
|
||
Added "lsdev".
|
||
More info on "uname".
|
||
Added "top" to "Job Control" subsection.
|
||
Moved "mknod" to "Filesystem" subsection.
|
||
Moved "ps" and "pstree" from "Internal and Builtin" job control
|
||
commands to this chapter.
|
||
|
||
9) In "Arrays" chapter, added "unset" for removing array elements or an
|
||
entire array.
|
||
|
||
10) Added "Exercises" appendix.
|
||
|
||
11) In "Special Characters" chapter:
|
||
Added "EOF" as attribute of "Ctl-D" control character.
|
||
Added "(( ))".
|
||
Added "?".
|
||
Added ";;".
|
||
Added field separator usage for ":".
|
||
Added info on pipes.
|
||
|
||
12) In "System Commands" chapter, changed "cron" to more technically correct
|
||
"crond".
|
||
|
||
13) In "Globbing" section of "Regular Expressions" chapter, added examples of
|
||
"echo" doing filename expansion.
|
||
|
||
14) In "Test Constructs" section of "Tests" chapter:
|
||
Enhanced "arith-tests.sh" example.
|
||
Added "(( "$a" < "$b" ))" and "(( "$a" > "$b" ))" constructs.
|
||
Added "(( "$a" <= "$b" ))" and "(( "$a" >= "$b" ))" constructs.
|
||
Added "Testing Your Knowledge of Tests" section.
|
||
Added some material to "ex10.sh" example.
|
||
|
||
15) In "Complex Commands" section of "External Commands" chapter:
|
||
Added material to "ex45.sh" example.
|
||
Fixed error in description of "expr index $string"
|
||
Rewrote part of "expr" discussion.
|
||
Added "idelete.sh" example at "find" listing.
|
||
|
||
16) Added testing for condition with "assert" function in "Debugging" chapter.
|
||
Illustrative example, "assert.sh".
|
||
|
||
17) Added prepending a line to an existing file to "Assorted Tips" section of
|
||
"Miscellany" chapter.
|
||
|
||
18) Added "Bash Variables Are Untyped" section to "Variables" chapter.
|
||
Example "int-or-string.sh".
|
||
Slight modification of "ex9.sh" example.
|
||
Added special case of signal variables to "naked" variables.
|
||
|
||
19) Moved "$?" and "$$" for "Positional Parameters" subsection of "Variables
|
||
Revisited" chapter to newly created "Other Special Parameter" listing,
|
||
along with "$-", "$!", and "$_".
|
||
|
||
|
||
20) In "Variables Revisited" chapter:
|
||
Added "Manipulating Strings" section.
|
||
Swatted a couple of bugs in the first couple of drafts of this section.
|
||
Added "$GLOBIGNORE" and "$LC_CTYPE".
|
||
Added "$BASH_VERSINFO[n]".
|
||
Added "$PIPESTATUS".
|
||
More info at non-builtin Bash variables.
|
||
|
||
21) In "Arrays" chapter, added "${array:position}" construct in-line example.
|
||
|
||
22) In "Time / Date" section of "External Commands" chapter:
|
||
Rewrote and corrected part of "at" entry.
|
||
Added "zdump".
|
||
|
||
23) In "Text Processing Commands" section of "External Commands" chapter:
|
||
Added example for "cut", per idea of Oleg Philon.
|
||
Added yet another usage example for "wc".
|
||
Added "recode".
|
||
Added "zdiff" at "diff" entry.
|
||
Added "zcmp" at "cmp" entry.
|
||
Slightly revised "sort" entry.
|
||
Revisions on "grep" entry.
|
||
Added notation about "agrep".
|
||
|
||
24) In "/dev and /proc" chapter:
|
||
Reorganization into two separate sections.
|
||
Oleg Philon suggested a simplification for the "connect-stat.sh" example.
|
||
|
||
25) In "Miscellaneous Commands" section of "External Commands:
|
||
Added "banner".
|
||
Added "m4", with "m4.sh" illustrative example.
|
||
Added "make".
|
||
Added "hexdump".
|
||
|
||
26) In "File and Archiving Commands" section of "External Commands:
|
||
More info on "file" entry.
|
||
Added "znew" note at "compress / uncompress" entry.
|
||
Added "zip / unzip".
|
||
Added "vdir".
|
||
Added "shred".
|
||
|
||
27) In "Math Commands" section of "External Commands"
|
||
Corrected "EBCDCIC" to "EBCDIC". Very embarrassing.
|
||
|
||
28) In "Regular Expression" chapter:
|
||
Added "()" and "|" to extended REs.
|
||
|
||
29) In "Communications Commands" section of "External Commands" chapter:
|
||
Added "cu".
|
||
|
||
30) In "Of Zeros and Nulls" chapter, added "ramdisk.sh" example.
|
||
|
||
31) In "Appendix B", fixed error stating that "Both sed and awk use the -e
|
||
option..." Only sed does (whoops!). Thanks to Peter S Tillier for
|
||
pointing this out.
|
||
|
||
32) Clarification of version 2 of Bash in "Bash, Version 2" and
|
||
"Gotchas" chapters.
|
||
|
||
33) Slight change to "symlinks.sh" example script, as suggested by
|
||
Dominik 'Aeneas' Schnitzer.
|
||
|
||
34) Added note to "numbers.sh" example, at the suggestion of Chiron.
|
||
|
||
35) Folded "Credits" chapter into "Endnotes" chapter, as a section. It's more
|
||
logical that way.
|
||
|
||
36) Added "Preliminary Exercises" section to Chapter 2.
|
||
|
||
37) Added setting a variable to the contents of a file to "Command
|
||
Substitution" chapter.
|
||
|
||
38) In Bibliography, added Rosenblatt listing.
|
||
|
||
39) In "Command Substitution" chapter, back quotes (`...`) erroneous shown as
|
||
single quotes ('...'). Fixed. Thanks, David Lawyer.
|
||
|
||
40) Fixed ambiguity in conditional test in "rpm-check.sh" example, in "Special
|
||
Characters" chapter. Also fixed "ex9.sh". Again, thank you, David Lawyer.
|
||
|
||
41) Fixed "for loop" references (links led to wrong places).
|
||
|
||
42) In "Testing and Branching" subsection of "Loops and Branches" chapter,
|
||
added "match-string.sh" example.
|
||
|
||
43) In "Loops and Branches" chapter,
|
||
added example of "for" loop with stdout redirected to a file.
|
||
|
||
44) In "Redirected Code Blocks" section" of "I/O Redirection" chapter, added
|
||
"redir4a.sh" example, showing redirection of both "stdin" and "stdout" of
|
||
loop.
|
||
|
||
45) In "Shell Wrapper" section of "Starting Off With a Sha-Bang" chapter,
|
||
added "bashandperl.sh" example.
|
||
|
||
46) Revised the introduction to the book.
|
||
|
||
47) Last minute cleanups of various example scripts.
|
||
|
||
48) New .bashrc from Emmanuel Rouat.
|
||
|
||
|
||
|
||
|
||
|
||
|
||
Version 0.5, released 09/03/01
|
||
|
||
1) Changed the name of this file from "NEWS" to Change.log"
|
||
|
||
2) Reorganized subsections of the huge "Tutorial" chapter into separate
|
||
chapters. This is much more logical.
|
||
|
||
3) Divided main section of the book into four parts.
|
||
First paragraph of chapter 1 moved to Part 1 introduction.
|
||
|
||
4) Fixups on id tags for various subsections (Jade does not like "anchors"
|
||
nested in within certain tags).
|
||
|
||
5) In "Tools Used" section, fixed typo in "OpenJade" URL.
|
||
|
||
6) Changed chapter heading from "End Notes" to more grammatically correct
|
||
"Endnotes".
|
||
|
||
7) In "Regular Expressions" chapter:
|
||
Fixed typo ("or" -> "of").
|
||
Added subsection for POSIX character classes.
|
||
|
||
8) Enhancements to "ex73.sh" example.
|
||
|
||
9) In "File and Archiving Commands" section of "External Commands" chapter:
|
||
Added "de-rpm.sh" example of using "cpio".
|
||
Added "ar".
|
||
Reorganized into subsections.
|
||
|
||
10) Added dedication.
|
||
|
||
11) Corrected comment in "weirdvars.sh" example. Thanks, Prahad V.
|
||
|
||
12) Cleanups on "ex2.sh", "ex39.sh", "ex41.sh", and "logevents.sh" examples.
|
||
|
||
13) In "I/O Redirection" chapter, added cross references to "de-rpm.sh" and
|
||
"fifo.sh" examples.
|
||
|
||
14) In "System and Administrative Commands" chapter
|
||
Added "strace".
|
||
Added "hostid".
|
||
Added "nm".
|
||
Added "vmstat".
|
||
Added "fdformat".
|
||
Added "erase.sh" example at "stty".
|
||
More info on lock files.
|
||
Reorganization of entries into logical sections.
|
||
|
||
15) Moved "Parameter Substitution" section from "Introduction to Variables and
|
||
Parameters" chapter to "Variables Revisited". This is a fairly advanced
|
||
topic.
|
||
|
||
16) Moved "Variable Assignment" and "Special Variable Types" information from
|
||
"Variables Revisited" chapter to "Introduction to Variables and
|
||
Parameters". These are introductory topics.
|
||
|
||
17) In "Miscellaneous Commands" section of "External Commands" chapter:
|
||
Added "blot-out.sh" example for "dd".
|
||
Added footnote explaining "EBCDIC" at "dd"
|
||
Added "run-parts".
|
||
|
||
18) Changed <itemizedlist> to <variablelist> in various places, since the
|
||
Docbook stylesheet does strange things with the former.
|
||
|
||
19) In "Tests" chapter:
|
||
Fixup in footnote in "File Test Operators" subsection.
|
||
Added note that "&&", "||", "<", and ">" work within "[[ ]]" construct.
|
||
Rewrote "<" and ">" entries in "Comparison Operations" section.
|
||
|
||
20) In "Internal Commands" chapter:
|
||
Added "-r" option to "read".
|
||
Added "-f" option to "enable".
|
||
Extended "ex47.sh" example at "printf" with "sprintf" simulation.
|
||
Added more info to "cd" ("-P" option and "cd -").
|
||
Added "fg" and "bg" (how did I manage to leave these out before?).
|
||
Added "logout".
|
||
Added optional argument that "wait" may take.
|
||
Added "autoload".
|
||
Added table of "Job Identifiers".
|
||
Reorganized chapter into subsections.
|
||
|
||
21) In "Text Processing" section of "External Commands" chapter:
|
||
Added "crypto-quote.sh" example for "tr".
|
||
Added another usage example for "wc".
|
||
Added "tsort".
|
||
Added "iconv".
|
||
Added "lex" and "yacc".
|
||
|
||
22) More info added in "Aliases" chapter.
|
||
|
||
23) In "Parameter Substitution" section of "Variables Revisited" chapter:
|
||
Added usage examples on "${param+alt_value}" and "${param:+alt_value}"
|
||
Added in-line usage examples for "${var#pattern}" and "${var##pattern}".
|
||
Added "${!varprefix@}" matching.
|
||
Added "${var/#patt/replacement}" and "${var/%patt/replacement}",
|
||
with illustrative example ("var-match.sh").
|
||
|
||
24) Dedicated section to "Globbing".
|
||
Added usage examples.
|
||
|
||
25) In "Variables Revisited" chapter:
|
||
Added usage example of "declare -i" in "Typing Variables" section.
|
||
Added material to "am-i-root.sh" example.
|
||
Correction: "typeset" and "declare" are builtins, not keywords.
|
||
Added "declare" option ("var=$value").
|
||
|
||
26) Added $ LC_COLLATE, $SHLVL, and $FUNCNAME to "Variables Revisited" chapter.
|
||
Noted adding "export LC_COLLATE=C" to /etc/profile to restore customary
|
||
behavior of bracket set filename globbing.
|
||
|
||
27) Made "bubble.sh" more pedantically correct by quoting params within tests.
|
||
|
||
28) In "Assorted Tips" section of "Miscellany" chapter:
|
||
Added inline example of a definition and function library.
|
||
Added special-purpose comment headers.
|
||
|
||
29) Added "About the Author" section to "Endnotes" chapter.
|
||
|
||
30) In "Operations" section of "Operations and Related Topics" chapter:
|
||
Added "**" exponentiation operator.
|
||
Added note that Bash integers are of type 32-bit signed long, with
|
||
in-line example.
|
||
Added comma linking operator.
|
||
Fixed and enhanced "&&" and "||" entries.
|
||
|
||
31) In "Parameter Substitution" section of "Variables Revisited" chapter,
|
||
added "${!varprefix*}" expansion.
|
||
|
||
32) In "Communications Commands" section of "External Commands" chapter,
|
||
Added "whois".
|
||
Added "ping".
|
||
Added "finger".
|
||
Added "vacation".
|
||
Added "ftp".
|
||
Added "telnet".
|
||
Added "rsh".
|
||
Added "rlogin".
|
||
Added "ssh".
|
||
Added footnote defining "daemon".
|
||
Reorganized commands into subsections.
|
||
|
||
33) In "Complex Commands" section of "External Commands" chapter, added
|
||
usage example of "expr $string :" operations.
|
||
|
||
34) Clean up example scripts, and made them more stylistically consistent.
|
||
Fixed error in "ex22a.sh".
|
||
Fixed error in "arith-tests.sh".
|
||
|
||
35) Fixed erroneous reference to "ex74.sh" in "Of Zeros and Nulls" chapter
|
||
(should be "ex57.sh").
|
||
|
||
36) Corrections and additions to "DOS Batch Files" appendix, sent in by
|
||
Marc-Jano Knopp.
|
||
|
||
37) In "Functions" chapter, noted that 256 is the largest positive
|
||
integer return value, and added "return-test.sh" illustrative example.
|
||
Showed how to "evade" this restriction, with "max2.sh" example.
|
||
|
||
38) Branched off "function redirection" into a separate sub-subsection.
|
||
|
||
39) Added integer variable test to "Assorted Tests" section of "Miscellany"
|
||
chapter.
|
||
|
||
40) Added "days-between.sh" example to "Contributed Scripts" appendix.
|
||
|
||
41) Added "using same name for a function and a variable" to "Gotchas"
|
||
chapter.
|
||
|
||
42) In "Special Characters" chapter:
|
||
Fixed "pipes" example to reflect GNU syntax of "tr" (thanks, Elias Assman).
|
||
Added note to "dot" character that in another context, it can be part of a
|
||
Regular Expression.
|
||
Added "$", variable substitution.
|
||
Added "&", run job in background.
|
||
Added "%", modulo and pattern matching operator.
|
||
Added "/", filename path separator and division operator.
|
||
Added "=", assignment and string test operator.
|
||
Added "+", arithmetic addition and Regular Expression operator.
|
||
Added "~+", print working directory.
|
||
Added "~-", print previous working directory.
|
||
Added "control characters".
|
||
Reordered listings.
|
||
|
||
43) In "Arrays" chapter, added comment to "bubble.sh" example.
|
||
|
||
44) Added portability note to "ex51.sh".
|
||
|
||
45) Removed redundant and partially incorrect "relational tests" subsection
|
||
from "Operators" section of "Operations and Related Topics" chapter.
|
||
|
||
46) In "Basic Commands" section of "External Commands" chapter:
|
||
More options to "ls".
|
||
|
||
47) Added "Portability Issues" section to "Miscellany" chapter.
|
||
|
||
48) In "Bibliography":
|
||
Updated Rick Hohensee assembler link.
|
||
Added Sheer book listing.
|
||
|
||
49) Added "Effective Awk Programming", to Bibliography.
|
||
|
||
|
||
|
||
|
||
|
||
======================================================================================
|
||
|
||
|
||
Version 0.4, released 07/09/01
|
||
|
||
Comments: Complete revision. The document is now the equivalent of a
|
||
300-page book.
|
||
|
||
Changes from version 0.3:
|
||
|
||
1) Substituted Emmanuel Rouat's new, improved Linux-specific .bashrc
|
||
file for the old one.
|
||
|
||
2)
|
||
In "External Filters, Programs, and Commands" section:
|
||
More info on "sleep".
|
||
Added "usleep".
|
||
More info on "diff", with note about using it to recursively compare
|
||
directories.
|
||
Added "diff3".
|
||
Added "sdiff".
|
||
Added "cmp".
|
||
Added example using "cmp", and cross referenced it to "exit status".
|
||
Added "hwclock/clock".
|
||
Added "locate/slocate".
|
||
Added "whatis", with example script.
|
||
Added "whereis".
|
||
Added "od".
|
||
Added "unexpand".
|
||
Added "install".
|
||
Added "crypt".
|
||
Added "write".
|
||
Added "compress/uncompress".
|
||
Added "gettext".
|
||
Added "printenv".
|
||
Added "tput".
|
||
More info on "fold" (-s option).
|
||
More info on "patch".
|
||
More info on "join".
|
||
More info on "tar".
|
||
More info on "tr".
|
||
More info on "dd".
|
||
More info on "logger".
|
||
More options for "cat".
|
||
More options for "cp".
|
||
Added cautionary note to "tar".
|
||
Added --count and --invert-match options to "grep".
|
||
Extra options and code snippets for "find".
|
||
Using "echo" to feed a command sequence into a pipe and set a variable,
|
||
with illustrative code snippets.
|
||
Added subsection for "Terminal Control Commands" (tput, clear, reset,
|
||
script).
|
||
Added subsection for "Math Commands" (factor, bc/dc).
|
||
|
||
3) Moved subsection on "Here Documents" to right after "I/O Redirection" (much
|
||
more logical).
|
||
|
||
4) Added more reasons not to use shell scripts.
|
||
|
||
5) Added info about the "widtools" (widget tools) package to "Assorted Tips"
|
||
subsection of "Miscellany".
|
||
|
||
6) Corrected "Born-Again Shell" to "Bourne-Again Shell" (thanks to Jan
|
||
Svenungson for pointing this out).
|
||
|
||
7) In "System and Administrative Commands" section:
|
||
Added "dumpe2fs".
|
||
Added "tune2fs".
|
||
Added "fdisk".
|
||
Added "mke2fs".
|
||
Added "fsck", "e2fsck", and "debugfs".
|
||
Added script using "fdisk" and "mke2fs".
|
||
Added "df".
|
||
Added "du".
|
||
Added "mesg".
|
||
Added tip.
|
||
Added "procinfo".
|
||
Added "ac"
|
||
Added "last"
|
||
Added "tset"
|
||
Added "getty" and "agetty".
|
||
Added "chown/chgrp".
|
||
Added "useradd/userdel".
|
||
Added "logrotate".
|
||
Added "dump/restore".
|
||
Added "stat".
|
||
Added "rdist".
|
||
Added "losetup".
|
||
Added "lastcomm".
|
||
Added "mkswap".
|
||
Added "swapon/swapoff".
|
||
Added "newgrp".
|
||
More info on "chroot".
|
||
More info on "netstat".
|
||
More info on "ifconfig".
|
||
More info on "route".
|
||
More info and example added on "mount".
|
||
Added note to "umount".
|
||
Usage example on "lsmod".
|
||
Removed inappropriate spacing in "wall" listing and added note.
|
||
|
||
8) In "Internal Commands" section:
|
||
Added "pstree".
|
||
Added "type".
|
||
Added "help".
|
||
Added footnote on "forking".
|
||
More info on "kill".
|
||
Added example to "unset".
|
||
More options and info added to "read".
|
||
|
||
9) Additional clarification of "for" loops.
|
||
|
||
10) Added using C-like syntax in a "for" loop to "Loops" section,
|
||
with illustrative example.
|
||
Did the same with a "while" loop.
|
||
Cross-references to examples in "Miscellany / Assorted Tips" section.
|
||
|
||
11) Added using command substitution to generate [list] in a "for" loop.
|
||
Same for a "case" construct.
|
||
Examples added.
|
||
|
||
12) In "Variables Revisited" section, added C-type variable manipulation,
|
||
using the ((...)) construct [Chet Ramey's Easter Egg, actually borrowed
|
||
from ksh93].
|
||
|
||
13) In "Gotchas" section,
|
||
Added scripts with DOS-type newlines.
|
||
Added script invoked with "/bin/sh" maybe not fully Bash-compatible.
|
||
|
||
14) In "Files" section, added ~/.bash_logout.
|
||
|
||
15) In "Variables Revisited" section,
|
||
Moved note about certain variables not internal to Bash to a more logical location.
|
||
Added short note about using /dev/urandom to generate (useless) random numbers.
|
||
Added $LINENO to internal variables.
|
||
Added illustrative script ("am-i-root.sh") to "UID" discussion.
|
||
Fixed "dubugging" typo.
|
||
|
||
16) In "Bibliography" section,
|
||
Added four sites for example shell scripts.
|
||
Added reference to Rick Hohensee's shell-scripted virtual machine + assembler.
|
||
|
||
17) Added "mail-format.sh" to "Contributed Scripts" appendix.
|
||
|
||
18) In "Tests" section:
|
||
Clearer definition of what "test" actually means.
|
||
Add info about "-g", "-u", and "-k" flags.
|
||
Clarified examples of "integer tests" (used if [ "$a" XX "$b" ] to illustrate).
|
||
|
||
19) Fixed syntax error in "ex45.sh" (embarrassing).
|
||
|
||
20) Added piping the output of a "for" loop to a command.
|
||
|
||
21) Mention /usr/include/sysexits.h as an attempt at systematizing exit status
|
||
numbers.
|
||
|
||
22) Added "string.sh", a "Contrib Script" by Noah Friedman.
|
||
|
||
23) Alphabetized listing of internal Bash variables in "Variables Revisited"
|
||
section. It looks more professional now.
|
||
|
||
24) Added subsection on "Nested Loops" to "Loops" section.
|
||
Added illustrative example script.
|
||
|
||
25) Added subsection on "Nested if/then Condition Tests" to "Tests" section.
|
||
|
||
26) In "Here Documents" section,
|
||
Added - option.
|
||
Added passing parameters to body of here document, with examples.
|
||
Added disabling parameter replacement by quoting or escaping.
|
||
|
||
27) In "Special Characters" section,
|
||
Added info on "-" redirection operator.
|
||
Added quotes ("").
|
||
Added strong quotes ('').
|
||
Added escape (\).
|
||
Added backticks (`).
|
||
Added using ":" for comment line (not recommended).
|
||
Added "*".
|
||
Added "$*" and "$@".
|
||
Piping the output of command(s) to a script.
|
||
More info on "!" operator.
|
||
Annotated Alan Cox's one-liner script.
|
||
Added "_" (underscore).
|
||
|
||
28) Reorganized "Loops" section; created new subsection and reshuffled.
|
||
|
||
29) Added instance of "unset" to when a variable appears "naked" (without the
|
||
$ prefix). Thanks to Florian Wisser for pointing this out.
|
||
|
||
30) Rewrote "Command Substitution" section (formerly named "Backticks").
|
||
Split off "Arithmetic Expansion" as a separate section, and added
|
||
material.
|
||
|
||
31) Added "bc" and "dc" to "External Filters" section, with elegant
|
||
illustrative script by Heiner Steven.
|
||
Added more info on "bc", with "monthlypmt.sh" illustrative example.
|
||
|
||
32) Added new section on "/dev and /proc".
|
||
Added illustrative examples.
|
||
|
||
33) Made a number of corrections and clarifications, as pointed out by Heiner
|
||
Steven. Thanks!
|
||
Some UNIX flavors take a 4-byte magic number...
|
||
Too many script headers on one line in "magic number" example listing.
|
||
Example "ex2.sh", added comment that "> filename" is equivalent to "cat /dev/null > filename".
|
||
Example "ex2.sh", quoted parameter.
|
||
Omitting [list] in a "for" loop assumes "$@", rather than "$*".
|
||
Clarified that a "flag" acts as a semaphore, rather than as a signal.
|
||
Added comment that {code block} does not launch a subshell to
|
||
"Special Characters" section.
|
||
At his suggestion, added a couple of more examples on "~" in
|
||
"Special Characters" section.
|
||
Added his "allprofs" script to "Subshells" section (with modifications
|
||
by HOWTO author).
|
||
Noted that some substitution operators come from ksh93.
|
||
Noted that a line of code in a script ending in a pipe character does
|
||
not require an escape to continue to the next line.
|
||
Code snippet on how to redirect "read" through an entire file, line by
|
||
line.
|
||
Added note that "declare" is Bash-specific.
|
||
Added code snippet explaining use of $IFS with "read"
|
||
Added alternate example of redirected "while" loop to "I/O Redirection"
|
||
section.
|
||
|
||
34) Added comments to "Subshells" section.
|
||
|
||
35) In "strip-comments.sh" example script, changed "=" to "-eq" (bugfix).
|
||
|
||
36) Changed all instances of "white space" to "whitespace" for consistency
|
||
(picky, picky).
|
||
|
||
37) Added pitfalls of variables in a subshell with illustrative example to
|
||
"Gotchas" section.
|
||
|
||
38) Added using Bash-specific functionality in a Bourne shell script on a
|
||
generic UNIX machine to "Gotchas" section.
|
||
|
||
39) Added another example to "List Constructs" section.
|
||
|
||
40) Added using positional paramters > $9, using {bracket} notation (thanks,
|
||
Philippe Martin).
|
||
|
||
41) Added -N and -t file tests to "Tests" section.
|
||
|
||
42) In "Arrays" section:
|
||
Added "q-function.sh" (Hofstadter's Q-function) as an illustrative
|
||
example.
|
||
Added "twodim.sh" simulation of a two-dimensional array.
|
||
|
||
43) Added two new entries to "Bibliography" section.
|
||
|
||
44) Added more info in "Quoting" section.
|
||
|
||
45) Bugfix: removed an extraneous header from "source/dot" command in "Special
|
||
Characters" section.
|
||
|
||
46) Added a caution about confusing REs with "globbing" to "Regular
|
||
Expressions" section.
|
||
|
||
47) In "Loops" Section:
|
||
Added filename "globbing" in for-loop [list].
|
||
Added "break N", breaking out of multiple loop levels.
|
||
Added "continue N", continuing at a higher loop level.
|
||
Added footnote to "Loop Control Commands" subsection noting that
|
||
"break" and "continue" are shell builtins.
|
||
|
||
48) Removed commented-out SGML code for article header. That makes it official
|
||
that this document is a book.
|
||
|
||
49) Added new appendix on "Converting DOS Batch Files to Shell Scripts".
|
||
|
||
50) Added "findstring.sh", illustrative example for generating [list] in a
|
||
"for" loop with command substitution and for "strings" command in
|
||
"External Filters, Programs, and Commands" section.
|
||
|
||
51) More info on "exit status".
|
||
|
||
52) Added appendix for "Exit Codes With Special Meanings".
|
||
|
||
53) Added "!" to "Special Characters" section.
|
||
|
||
54) Added "==" to "Tests" section.
|
||
|
||
55) Added a couple of examples and more explanation to "Regular
|
||
Expressions" section.
|
||
|
||
56) Extra notes on $BASH_VERSION.
|
||
|
||
57) In "Functions" section:
|
||
Added directing the stdin of a function, with illustrative example.
|
||
Added footnote to "return" command, noting that it is a Bash builtin.
|
||
|
||
58) Added "[[ ]]" construct to "Tests" section.
|
||
|
||
59) In "bubble.sh", fixed spelling of "Zaire" and changed "Kashmir" to "Kenya"
|
||
(it was pointed out that Kashmir is not a country).
|
||
|
||
60) Added "file-info.sh", illustrative example of a variable containing the
|
||
[list] in a "for" loop.
|
||
|
||
61) Added a section on "Scripting With Style", stylistic guidelines.
|
||
* Script and function headers added.
|
||
* Descriptive names for variables added.
|
||
|
||
62) Added "copy-cd.sh", a script for copying data CDs, to "Contributed
|
||
Scripts" appendix.
|
||
|
||
63) In "Loops" section, separated "Loop Control Commands" ("break" and "continue")
|
||
into a separate subsection.
|
||
|
||
64) Added note to "Tests" section that after "if", "test" or test brackets not
|
||
strictly necessary. Similarly, test brackets do not necessarily require an
|
||
"if" when used with "list constructions".
|
||
|
||
65) Once more, checked all the examples for stylistic correctness.
|
||
|
||
66) In "Variables Revisited" section:
|
||
Added "random-test.sh", testing the randomness of RANDOM.
|
||
Added "seeding-random.sh", reseeding the RANDOM generator.
|
||
|
||
67) Reshuffled some commands into different subsections in "External
|
||
Filters, Programs, and Commands" section.
|
||
|
||
68) Added "isalpha.sh" example to "case" constructs in "Loops" section.
|
||
|
||
69) Added inline example in "Regular Expressions" section.
|
||
|
||
70) Moved "ex50.sh" from "pr" to "fmt" in "External Filters, Programs, and
|
||
Commands" section.
|
||
|
||
71) Added "du.sh" example to "tr" in "External Filters, Programs, and
|
||
Commands" section.
|
||
|
||
72) Clarification on ${var#pattern}, ${var%pattern} variable substitution
|
||
in "Variables" section, and added "patt-matching.sh" example to
|
||
illustrate.
|
||
|
||
73) Clarifications on "ex14.sh" example.
|
||
|
||
74) In "Internal Commands and Builtins", fixed explanation on
|
||
"getopts" and associated "ex33.sh" to make usage consistent with
|
||
accepted usage. (Thanks, Ueli Strasser)
|
||
|
||
75) Fixed typos:
|
||
("suppress" --> "suppresses") in "Here Documents section.
|
||
("inderect" --> "indirect") in "Variables Revisited" section.
|
||
"Option" left out in "type" discussion.
|
||
|
||
76) More on "%" (modulo) operator in "Operations" section.
|
||
|
||
77) Added "> &FD" and "n<>filename" to "I/O Redirection" section.
|
||
|
||
78) Fixed bug in "ex2.sh" example (removed "or-list"),
|
||
and added cautionary not on "or lists".
|
||
|
||
79) More explanation on meaning of "keyword".
|
||
Noted that "!" is a keyword.
|
||
|
||
80) Moved "printf" and "eval" from "External Commands" to "Internal
|
||
Commands" section.
|
||
|
||
81) Fixed up some cross-reference links.
|
||
|
||
82) In "Sha-bang" section:
|
||
Added footnote with self-deleting script example.
|
||
Added footnote about invoking script with "sh scriptname" turning off
|
||
Added footnote about invoking a script with "./scriptname".
|
||
Bash-specific extensions.
|
||
Minor cleanups.
|
||
|
||
83) Cleaned up "filename" referenced.
|
||
Made references to "stdin" and "stdout" consistent (<filename>).
|
||
|
||
84) Added footnote about "dotfiles".
|
||
|
||
85) Noted that "logname" is not exact equivalent to "whoami", with example.
|
||
Correction: "trap 2" changes to "trap '' 2" in "Debugging" section.
|
||
Thank you, Nick Drage.
|
||
|
||
86) Fixed typos pointed out by Hyun Jin Chan.
|
||
Typo in "ex13.sh".
|
||
Typo in "ex41.sh".
|
||
In "Here Documents" section, changed
|
||
"feeding input into non-interactive programs" to
|
||
"feeding input into interactive programs".
|
||
|
||
87) Added footnote about "magic numbers" used in the context hard-wired
|
||
constants in "Scripting With Style" section.
|
||
|
||
88) Added "End Notes" chapter, which includes "Author's Note" and "Tool Used
|
||
to Produce This Book".
|
||
|
||
89) Added footnote about shell script naming conventions to "Why Shell
|
||
Programming?" section of Chapter 1.
|
||
|
||
90) Changed all <errorcode> tags to the more appropriate <returnvalue>.
|
||
|
||
91) Added info about Korean translation of the document to "Copyright"
|
||
appendix.
|
||
|
||
92) Added "${#variable}" construct to "Parameter Substitution" subsection in
|
||
"Introduction to Variables and Parameters" section, mentioning exceptional
|
||
cases of "${#*}" and"${#@}".
|
||
|
||
93) Reorganized "I/O Redirection" section (subdivided into subsections).
|
||
|
||
94) Reorganized "Functions" section (subdivided into subsections).
|
||
|
||
95) Added example snippets to "Process Substitution" section.
|
||
|
||
96) Added Nick Drage's comments to "online.sh" in "Debugging" section.
|
||
|
||
97) Tidied up "Operations and Related Topics" section.
|
||
|
||
98) Fixed typos in "ex79.sh" ("suite" -> "suit").
|
||
|
||
99) Fixed other minor typos in the document.
|
||
|
||
100) St<53>phane Chazelas sent in long lists of corrections and suggestions.
|
||
Bug fixes, improvements, and comments on "ex2.sh" example.
|
||
Bug fixes and improvements to "ex3.sh" example.
|
||
Improvement on "ex4.sh", "ex5.sh", and "ex14.sh" examples.
|
||
Suggestion for "col-totaler.sh" example.
|
||
Code snippet on use of "case" for parsing command-line args.
|
||
In "brace expansion" discussion, pointed out that spaces permitted when
|
||
quoted or escaped.
|
||
Improved "ex8.sh" to read more than one line (more useful as an
|
||
example).
|
||
Resolve ambiguity about "-", which is not a Bash operator.
|
||
Suggested workarounds for filenames starting with "-" used with "-"
|
||
redirection operator.
|
||
Added safer alternatives to "ex58.sh".
|
||
In "Why Shell Programming?" section, modified footnote to state that
|
||
user-written scripts with ".sh" extension should be Bourne shell
|
||
compliant.
|
||
In "Command Substitution" section:
|
||
Added notes.
|
||
Added explanation in code snippet on command output.
|
||
Note that newline deletion may result from word splitting.
|
||
Added example snippets of trailing newline deletion.
|
||
In "Special Characters" section:
|
||
Fixed typo at beginning of "#" (comment) listing.
|
||
Added note about "#" not denoting a comment in certain constructs.
|
||
"${parameter?err_msg}, ${parameter:?err_msg}"
|
||
Added note that non-interactive script exits with code 127.
|
||
Added note about escaping "#" in echo statements.
|
||
Added caution about variable value starting with "-n".
|
||
More on "~" expansion.
|
||
Changed "noclobber" environmental variable (obsolete) to option.
|
||
Added "array initialization" to "()" listing.
|
||
Added notes to "brace expansion".
|
||
Added notes and made corrections to "ex6.sh" example.
|
||
Added note and example demonstrating that a code block in braces
|
||
may run as a subshell.
|
||
Clarification on "pipes".
|
||
Note on Alan Cox's directory copy method.
|
||
Noted that ":" is a shell builtin.
|
||
Noted that ": >>" applies only to regular files.
|
||
Fixed error about "code block" { ... }.
|
||
Added note about variables defined within (...) not being visible to
|
||
rest of script.
|
||
Fixed error on "{}\" construct, and added note.
|
||
Change to "uppercase.sh" in-line example.
|
||
Added "{#array}" as string length of first element of array.
|
||
Added cautionary note about reserved exit status codes to "Exit Status" section.
|
||
In "Variables" section:
|
||
Added comments and clarifications to "ex7.sh".
|
||
Added comments and clarifications to "ex9.sh".
|
||
Added info per his comments on the $'...' string expansion construct.
|
||
In "Quoting" section:
|
||
Added more examples of escaping a newline in variable assignment.
|
||
Clarified and corrected info about quoting variables "echoed", with
|
||
Added illustrative examples.
|
||
Replaced flawed example snippet ("bash$ echo [Ff]irst")
|
||
Fixed bug, changed ' to ` in referencing within double quotes.
|
||
Clarified and corrected "toggling on" special meanings of characters
|
||
by escaping.
|
||
In "Tests" section:
|
||
Added detailed explanation about "if/then" construct, "[", and "test".
|
||
Added clarification about "[", "[[" , and "test".
|
||
Added arithmetic tests using "(( ))".
|
||
Added notes to "ex10.sh" example.
|
||
Clarification on "ex12.sh", and moved it to "External Filters..." section.
|
||
Pointed out that one should always quote a string being tested.
|
||
Clarified what happens when erroneously putting a space in an
|
||
assignment statement.
|
||
Added example on using arithmetic operations (arithops.sh).
|
||
Clarification and corrections on "-t" test option.
|
||
Clarification on "-r" test option.
|
||
Clarification on "-w" test option.
|
||
Clarification on "-g" test option.
|
||
Clarification on "-u" test option.
|
||
Clarification on "-k" test option.
|
||
Clarification on "-n" test option.
|
||
Clarification on "str-test.sh" example.
|
||
Clarification and example on "==".
|
||
Clarification on pattern matching with "!=".
|
||
Clarification on "&&" and "||" comparison operators.
|
||
Fixup on "arith-tests.sh" example.
|
||
Clarification and corrections on "ex14.sh" example.
|
||
In "Operations" section:
|
||
Fixed "=" in-line example.
|
||
Fixed "+=" and "*=" example snippets.
|
||
Fixed typo: 'if "Xstring1" = "Xstring2" ] is safer,'.
|
||
Retitled subsections to avoid reader confusion.
|
||
Added example snippet on using "&&" and "||" in an arithmetic
|
||
context.
|
||
Added note to "arith-ops.sh".
|
||
Added note to "and-or.sh".
|
||
Fixed typo (lost space) in in-line "&&" example.
|
||
Clarified "numbers.sh" example.
|
||
Clarification on "&&" and "||".
|
||
In "Variables Revisited" section:
|
||
More clarifications and example snippets + "ifs.sh" example for "$IFS".
|
||
Clarified use of "$PATH" variable.
|
||
Cleared up confusion on "$PPID".
|
||
Cleared up confusion on "$@".
|
||
Added "incompat.sh" and "ifs-empty.sh" examples on inconsistent
|
||
"$*" and "$@" behavior.
|
||
Plugged a possible hole in "wipedir.sh" example script and added
|
||
comments.
|
||
Added "timeout.sh", another example of timed input.
|
||
Explanation (footnote) on environmental variables.
|
||
Explanation (footnote) on parameter $0.
|
||
Corrected "declare -f" listing.
|
||
Clarification on "ind-ref.sh" example.
|
||
Clarification on $SHELL variable.
|
||
Clarification on $HOSTNAME variable.
|
||
Added "col-totaler2.sh" as an example of indirect references.
|
||
Fixed typo "that that".
|
||
Fixup on "ex17.sh".
|
||
Fixup on "ex20.sh".
|
||
Added comment to "ex21.sh".
|
||
In "Loops" section:
|
||
Fixed error: semicolon *after* [list].
|
||
Additional clarification in "ex22a.sh" example.
|
||
Quoted arguments in [list] in for-loop illustration.
|
||
Removed reference to REs in filename globbing.
|
||
Fixup and note added to "list-glob.sh" example.
|
||
Added note to "bin-grep.sh" example.
|
||
Added note to "ex24.sh" example.
|
||
Correction on "ex26a.sh" example.
|
||
In "case" constructs:
|
||
Noted that variable quoting not mandatory.
|
||
Corrected and clarified comment in command line parameter testing.
|
||
Changed "regular expression" filtering to "globbing" filtering.
|
||
Improved "isalpha.sh" example.
|
||
In footnote, cleared up some confusion about builtins.
|
||
Moved 'basename', 'dirname', and 'factor' from "Internal Commands"
|
||
to "External Filters, Programs, and Commands" section.
|
||
Minor clarification on "read-redir.sh" example.
|
||
Alternatives added to "realname.sh" example.
|
||
In "Internal Commands and Builtins" section:
|
||
Corrections on "ps", "suspend", "command", and "builtin".
|
||
Moved "echo", "cd", and "let" here from "External Commands"
|
||
section.
|
||
Note on "echo" deleting linefeeds in command output.
|
||
Added in-line examples for "echo".
|
||
Correction on "find" (-exec).
|
||
Added "col-totaler3.sh" as an example of using "export" to
|
||
pass a variable to an embedded awk script.
|
||
Removed "stop" (how the heck did a "csh" command sneak in?).
|
||
Removed "." from examples of builtins.
|
||
Minor fixup on "ex33.sh" example.
|
||
Added cautionary note on "eval".
|
||
Added examples ("rot13_2.sh") to "eval".
|
||
Added long note to "jobs" command clarifying difference between jobs
|
||
and processes.
|
||
Added in-line example on "printf".
|
||
Clarified "keyword" definition.
|
||
Fixed typos in "read" and "find" command subsections.
|
||
In "External Filters, Programs, and Commands" section:
|
||
Clarifications on "chmod" and "chattr".
|
||
Added alternative method in "ex57.sh" example.
|
||
Clarification on "ex42.sh" example.
|
||
Clarification on "ex44.sh" example.
|
||
Clarification on "ex45.sh" example.
|
||
Option "-c" to "uniq" discussed.
|
||
Correction on "cut".
|
||
Clarification on "colrm".
|
||
Clarification on "join".
|
||
Clarification on "head", and added example "rnd.sh".
|
||
Concise form of "lookup.sh".
|
||
Clarification on "gs".
|
||
Added notes on "wc" (and fixup of example).
|
||
At "grep":
|
||
Additional minor fixups.
|
||
Note in "grp.sh" script.
|
||
Added usage examples for "-c" and "-z" options.
|
||
Added note on "time" about it becoming a reserved word.
|
||
Clarification and corrections on "tr".
|
||
Clarification in "ex49.sh" and "rot13.sh".
|
||
Added alternative code to "lowercase.sh".
|
||
Added note to "fmt" about Kamil Toman's "par" utility.
|
||
Added note to "line-number.sh" script about '-ba' option to 'nl'.
|
||
Clarification and fixup on "pr".
|
||
Added note to "zcat".
|
||
Added alternative code to "strip-comments.sh".
|
||
Fixed "lp".
|
||
Added two usage examples for "yes".
|
||
Added altenative methods to "find" in-line example.
|
||
Fixed format in "cat/tac" in-line example.
|
||
Added long note to "xargs".
|
||
Added note to "touch", and link from ":" in "Special Characters"
|
||
section.
|
||
Fixup on "zcat" in "gzip" subsection, and fixed typo there.
|
||
At "dd":
|
||
Added usage examples".
|
||
Fixed comments "dd-keypress.sh".
|
||
Fixed typo on "grep".
|
||
Explanatory note on "-maxdepth" option for "grep".
|
||
In "System Commands" section:
|
||
Moved "shopt" to "Internal Commands and Builtins".
|
||
More info on "who".
|
||
Correction and clarification on "hostname".
|
||
More info on "env".
|
||
Added "lsof".
|
||
Clarification on "pidof".
|
||
Moved "exec" to "Internal Commands and Builtins" and made some
|
||
corrections in the commentary.
|
||
Using "stty" to detect keypress, with illustrative example.
|
||
Fixup on "chgrp".
|
||
Fixup on "nice".
|
||
Fixup on "sync".
|
||
Added "createfs" example to illustrate "losetup".
|
||
At "stty", added long sidebar explaining canonical mode in terminals.
|
||
Fixup and additional illustrations on example.
|
||
Additional commentary on "ifconfig" code snippets.
|
||
Clarifications in "Arithmetic Expansion" section.
|
||
In "I/O Redirection" section:
|
||
Added note to "redir1.sh" example.
|
||
Added note to "redir2.sh" example.
|
||
Clarifications and notes added on "redir2a.sh", "redir3.sh",
|
||
"redir4.sh", and "redir5.sh" examples.
|
||
Added ": >" file truncation note.
|
||
Added examples (programlisting) of word splitting.
|
||
Added example of newline deletion.
|
||
Fixups (removed extraneous spaces in redirection operators in example
|
||
snippets).
|
||
Added alternative forms of operators that close file descriptors.
|
||
Added note and code snippet to "Closing File Descriptors" subsection.
|
||
Added "logevents.sh" example of using redirection operations in event
|
||
logging.
|
||
Added example snippet for "[j]<>filename".
|
||
In "Gotchas" section:
|
||
Fixed errors in using bad variable names.
|
||
Stylistic notes added.
|
||
Added note about attempting to use "-" as redirection operator.
|
||
Added notes and in-line example snippets about mixing up "=" and "-eq".
|
||
Correction on making script "suid".
|
||
Corrections and explanatory notes in "Regular Expressions" section.
|
||
Notes about "+" and curly brackets in "gawk".
|
||
Note and example ("newline.sh") about using "." to match newlines.
|
||
Footnote about matching dotfiles with globbing.
|
||
In "Subshells" section:
|
||
Fixup on in-line example.
|
||
Added example of subshell redirection.
|
||
Setting up a "dedicated environment" for a command group.
|
||
Added comment to code snippet illustrating parallel processes.
|
||
Added note about I/O redirection to subshells.
|
||
In "Functions" section:
|
||
Fix up and elaborate "ex60.sh" example.
|
||
Example ("ref-params.sh") of passing reference parameters to functions.
|
||
Comments and example on recursion.
|
||
Note and example snippet on declaring functions before calling them.
|
||
Note and example snippet on nested function.
|
||
Note and example snippet on function declarations in unlikely places.
|
||
Note and example snippet on using dedicated variables for return values.
|
||
Note and example snipptets on an alternative method of redirecting
|
||
the stdin of a function.
|
||
In "List Constructs" section:
|
||
Note and example snippets on operator precedence in compound
|
||
statements.
|
||
In "Arrays" section:
|
||
Added notes to "ex67.sh".
|
||
Added alternative implementation to "ex68.sh".
|
||
Added notes and example snippet on ${xxx[@]} and ${xxx[*]} notation.
|
||
Added notes to "twodim.sh" example.
|
||
Added "{#array}" as string length of first element of array.
|
||
Added "empty-array.sh" example.
|
||
In "Files" section, clarification on "/etc/profile".
|
||
In "Exit and Exit Status" section, added clarifying notes in in-line
|
||
example.
|
||
In "Here Documents" section:
|
||
Added note to "ex71.sh".
|
||
Fixup on "ex71c.sh".
|
||
Added note and example on "anonymous here documents".
|
||
Removed caution about pagers not working in a here document.
|
||
Added note about temporary files used by here documents.
|
||
In "Zeroes and Nulls" section, added note about ": >" alternate to
|
||
"cat /dev/null >".
|
||
In "Process Substitution" section:
|
||
Fixed error in note about not leaving space between ">(command)".
|
||
Changed "(command)>" to correct ">(command)".
|
||
Added example snippets.
|
||
In "Debugging" section:
|
||
Added commentary after "test24, another buggy script".
|
||
Correction on "exit" sending signal 0.
|
||
Added note and example ("vartrace.sh") in trapping discussion.
|
||
Notes added to "online.sh".
|
||
In "Miscellany" section:
|
||
Added using "[[ ]]" and "(( ))" in comparisons.
|
||
Corrections in discussion of interactive shells, plus
|
||
illustrative example.
|
||
In "Contributed Scripts" appendix:
|
||
Added "primes.sh" to demonstrate that arrays are not need to
|
||
generate prime numbers.
|
||
Added comments to "manview.sh"
|
||
Added comment to "tree.sh"
|
||
Added "obj-oriented.sh" example of object-oriented programming in a script.
|
||
Fixed error in comment in "pw.sh"
|
||
Notes on "string.sh".
|
||
In "Sed and Awk Micro-Primer" section, corrections, clarifications,
|
||
additions, and more examples.
|
||
In "Sample .bashrc File" appendix, correction pointing out that only
|
||
interactive shells read ".bashrc".
|
||
In "Sha-Bang" section:
|
||
Added note about the "#!" line being interpreted as a comment
|
||
by the command interpreter.
|
||
Added note about script needing read, as well as execute permission.
|
||
Added note about starting a "README" file with "#!/bin/more".
|
||
In "/dev and /proc" section:
|
||
Added note that /dev/sndstat has been eliminated as of the 2.3
|
||
kernel.
|
||
Clarification on virtual devices.
|
||
Simplified code snippets illustrating "extracting data" from /proc files.
|
||
Noted that /dev is not a filesystem.
|
||
Added commentary to "pid-identifier.sh" example.
|
||
Fixed error in footnote: entries in /dev do take up some space.
|
||
In "Options" section:
|
||
Clarified "-c" option.
|
||
Added note to "-u" option.
|
||
Fixed typo (--arg1arg2) on "--" (changed to "-- arg1 arg2")
|
||
In "Converting DOS Batch Files" section:
|
||
Removed unnecessary variable from "viewdata.sh" example.
|
||
Fixups on tables of DOS batch file / shell script equivalents.
|
||
In "Scripting With Style" section:
|
||
Fixup on example script.
|
||
Noted that "exit status" of a script is available to the parent process
|
||
of that script, not necessarily the shell.
|
||
Rewritten version of "example 3-2".
|
||
Added "A Detailed Introduction to I/O Redirection" appendix.
|
||
Added "Localization" appendix.
|
||
Made corrections.
|
||
|
||
|
||
|
||
|
||
======================================================================================
|
||
|
||
Version 0.3, released 02/12/01
|
||
|
||
Comments: Another major improvement. The HOWTO is nearly book length,
|
||
still evolving toward becoming a GUIDE.
|
||
|
||
Changes from version 0.2:
|
||
|
||
1) Fixed:
|
||
Renamed Example A-2 in Appendix A (Contributed Scripts appendix) to
|
||
"encryptedpw". It had previously been named "manview", duplicating
|
||
the title of Example A-1.
|
||
|
||
2) In Chapter 1, the reader is now advised to use the example scripts
|
||
(something-or-other.sh), as an alternative to laboriously
|
||
cutting-and-pasting from rendered HTML.
|
||
|
||
3) In "Special Characters" section, added brace expansion {xxx,yyy,zzz...}.
|
||
|
||
4) Deleted the erroneous statement that the "set -r" option cannot be
|
||
invoked from within a script.
|
||
|
||
5) Added section for "restricted shells" with additional info.
|
||
|
||
6) Added a couple of script options.
|
||
|
||
7) Fixed minor bug in code snippet in "Interactive Scripts" section.
|
||
|
||
8) More info on interactive scripts.
|
||
|
||
9) Fixed an error confusing '$#' with '$*' in "Loops" section and in ex23.sh.
|
||
|
||
10) Added Antek Sawicki's random password script in contrib scripts.
|
||
|
||
In "External Filters, Programs, and Commands" section:
|
||
------------------------------------------------------
|
||
11) More accurately described the "{} \;" arguments to "find" command. Thanks
|
||
to Jim Van Zandt for pointing this out.
|
||
|
||
12) Added note to "xargs" that "echo" is default command. Again thanks
|
||
to Jim Van Zandt.
|
||
|
||
13) Fixed error claiming "diff" needs sorted files. Jim Van Zandt again.
|
||
|
||
14) Cleared up ambiguity about "colrm".
|
||
|
||
15) More info on "umask" and corrections.
|
||
|
||
16) Added "mkfifo".
|
||
------------------------------------------------------
|
||
|
||
17) Added cross-reference on "&&".
|
||
|
||
18) Added cross-reference to embedded sed script.
|
||
|
||
19) Added example of embedded awk script (col-totaler.sh).
|
||
|
||
20) Fixed clumsy wording in sed and awk description.
|
||
|
||
21) Added "su" to "System and Administrative Commands" section.
|
||
|
||
22) Added Jim Van Zandt's "daily backup" example script
|
||
to "Contrib-Scripts" appendix.
|
||
|
||
23) Enhanced example 66 (ex66.sh) on arrays with more methods of initializing
|
||
array variables.
|
||
|
||
24) Corrected "Siever" entry in bibliography.
|
||
|
||
25) Added Jordi Sanfeliu's "tree" script to "Contrib-Scripts" appendix.
|
||
|
||
26) Added Robbins' "Bash Reference Card" to bibliography.
|
||
|
||
27) Added reference to Duarte's sed tutorial in bibliography.
|
||
|
||
28) Added "rn.sh", file rename utility to "Contrib-Scripts" appendix.
|
||
|
||
29) Added "initializing multiple variables on same line" to ex9.sh.
|
||
|
||
30) Fixed title on "ex52.sh".
|
||
|
||
31) Added a case when not to use shell scripts, in intro.
|
||
|
||
32) Added shell script as embedded command in another script, Tcl or wish
|
||
script, etc. to "Miscellany / Assorted Tips" section.
|
||
|
||
33) Added download link for latest version of document to intro.
|
||
|
||
34) Added "id" to "System and Administrative Commands" section.
|
||
|
||
35) Added "stty" to "System and Administrative Commands" section.
|
||
|
||
36) Added "strip-comments.sh" example to illustrate "file" command,
|
||
and "rot13.sh" example to "tr" command, in "External Filters" section.
|
||
|
||
37) Added "modular approach" sidebar to Chapter 2, section 1.
|
||
|
||
38) Added example cross-references to use of REs in scripts by sed,
|
||
awk, and Perl.
|
||
|
||
39) More info and clarification on command substitution and arithmetic
|
||
expansion in "Backticks" section.
|
||
|
||
40) Corrected "Bibliography" section entry for Ben Okopnik's introductory
|
||
Bash scripting articles in "Linux Gazette".
|
||
|
||
41) Added "Bibliography" section entries for "Bash-Prompt HOWTO" and
|
||
"Bash-Programming-Intro HOWTO".
|
||
|
||
42) Added $OLDPWD, $BASH_VERSION, $DIRSTACK, $HOSTNAME, $PPID, $MACHTYPE,
|
||
$HOSTTYPE, $OSTYPE, $UID, $EUID, $SHELLOPTS, $IGNOREEOF, and $GROUPS
|
||
to internal Bash variables in "Variables Revisited" section.
|
||
|
||
43) Added info on the "-" operator (may also be interpreted as "old
|
||
working directory", depending on context).
|
||
|
||
44) Added collecting favorite definitions and functions into "library file" to
|
||
"Miscellany / Assorted Tips" section.
|
||
|
||
45) Added cross reference from "dot" command to "source", later on in
|
||
tutorial.
|
||
|
||
46) In "Special Characters" section, noted that a command may not follow
|
||
a comment on the same line.
|
||
|
||
47) Added section on "Aliases", including two example scripts.
|
||
|
||
48) Added discussion of "for" loops with multiple parameters in each [list]
|
||
element to "Loops Section".
|
||
|
||
49) Added discussion of "while" loops with multiple conditions to "Loops
|
||
Section".
|
||
|
||
50) Added cross-reference to mention of "getopts" in "while loops" discussion.
|
||
|
||
51) Added cross-reference on "exec" in "System and Administrative Commands"
|
||
section back to use of "exec" in "find" command sequence in "External
|
||
Filters, Programs, and Commands" section. Added other cross-references in
|
||
this section.
|
||
|
||
52) Added footnote about fd 5 being reserved to "I/O Redirection" section.
|
||
|
||
53) Additional discussion in "I/O Redirection" section.
|
||
|
||
54) Added using "exec" to redirect stdin to "I/O Redirection" section.
|
||
|
||
55) Added "redir1.sh", example of I/O redirection using "exec".
|
||
|
||
56) Added "redir2.sh", example of I/O redirected "while" loop.
|
||
|
||
57) Added "redir3.sh", example of I/O redirected "until" loop.
|
||
|
||
58) Added "redir4.sh", example of I/O redirected "for" loop.
|
||
|
||
59) Added "redir5.sh", example of I/O redirected "if/then" test.
|
||
|
||
60) Added "wipedir.sh" example to $PWD listing in "Variables Revisited"
|
||
section.
|
||
|
||
61) More cross-references in "I/O Redirection" section.
|
||
|
||
62) Added "grp.sh", 'grep' emulation script, after 'grep' listing
|
||
in "External Filters, Programs and Commands" section.
|
||
|
||
63) Added "nice", "arch", "users" , "logname", "dmesg", "groups",
|
||
"hostname", and "pidof" to "System and Administrative Commands"
|
||
section.
|
||
|
||
64) Added "bzip2", "sq", "rev", "strings", "pathchk" and references to
|
||
"egrep", "fgrep" , "groff, gs, TeX", "column", "look", "ptx",
|
||
"chattr", "cal", "nslookup", "traceroute", "dig", "rx/sx", "rz/sz",
|
||
"uucp", and "sum, cksum, md5sum" to "External Filters, Programs and
|
||
Commands" section. Also added illustrative examples for "column"
|
||
and "look".
|
||
|
||
65) Added bibliography entries for GNU "gawk" reference manual and "groff"
|
||
tutorial. Also for I/O reference on UAlberta site.
|
||
|
||
66) Added cross-references to script examples to "zcat" and "mv"
|
||
commands" in "External Filters, Programs and Commands" section.
|
||
|
||
67) Clarification on [ -n $string ] string test operator. Added illustrative
|
||
example (str-test.sh).
|
||
|
||
68) Added "lp" and related commands to "External Filters, Programs and
|
||
Commands" section.
|
||
|
||
69) Added double-quoting variables to "Gotchas" section.
|
||
|
||
70) Added more xrefs to examples in "Variables Revisited" section.
|
||
|
||
71) Added "PS3" and "PS4" to "Variables Revisited" section.
|
||
|
||
72) Added enabling script options from #! header to "Options" section.
|
||
|
||
73) Added double backslash (\\) to "Quoting" section.
|
||
|
||
74) Added "Sed and Awk Micro-primer" appendix.
|
||
|
||
75) Fuller explanation of differences between "$*" and "$@" in "Variables
|
||
Revisited" section. Also added example to illustrate this,
|
||
"arglist.sh".
|
||
|
||
76) More cross-references to examples in "System and Administrative Commands"
|
||
section.
|
||
|
||
77) Added more detail to description of $PATH, in "Variables Revisited"
|
||
section.
|
||
|
||
78) Added more detail to "Files" section.
|
||
|
||
79) Added "command", "enable", , "builtin", "host", and "vrfy" to
|
||
"Internal Commands and Builtins" section.
|
||
|
||
80) Moved "umask" from "External Filters, Programs, and Commands" to "System
|
||
and Administrative Commands" section.
|
||
|
||
81) Rearranged the entries in "External Filters, Programs and Commands" in
|
||
somewhat more logical order and subdivided the section into logical
|
||
subsections.
|
||
|
||
82) Moved discussion of embedded Perl scripts from "System and Administrative
|
||
Commands" section to "Shell Wrappers" subsection.
|
||
|
||
83) Added example .bashrc file, thanks to Emmanuel Rouat.
|
||
|
||
84) Many minor changes not listed above.
|
||
|
||
|
||
|
||
|
||
====================================================================
|
||
|
||
Version 0.2, released 10/30/00.
|
||
|
||
Comments: This is a major improvement over 0.1.
|
||
|
||
Changes from version 0.1:
|
||
|
||
|
||
Bugfixes
|
||
|
||
1) fixed if [ cond1 && cond2 ] ==> if [ cond1 ] && [ cond2 ]
|
||
if [ cond1 || cond2 ] ==> if [ cond1 ] || [ cond2 ]
|
||
Added -a and -o options
|
||
if [ cond1 -a cond2 ]
|
||
if [ cond1 -o cond2 ]
|
||
|
||
Added 'and-or.sh' as new example to illustrate && and ||.
|
||
|
||
|
||
2) Corrected ex6.sh, added $'s in front of {USER?} and {MAIL?},
|
||
and added additional explanatory material.
|
||
|
||
3) Noted that "-" is not a bash option.
|
||
|
||
|
||
Other changes
|
||
|
||
4) ex55.sh: added note that 'killall' is Red Hat specific
|
||
|
||
5) Added to 'Gotchas':
|
||
interchanging -eq and =
|
||
starting variables with a digit
|
||
|
||
6) Substituted for Samuel Johnson quote at beginning:
|
||
"...there are dark corners in the Bourne shell, and people use all of them."
|
||
--Chet Ramey
|
||
|
||
7) Added reference to /usr/doc/initscripts-X.XX/sysconfig.txt just after
|
||
ex. 3-52.
|
||
|
||
8) Added reference to 'nl' in "External Filters" section and illustrative
|
||
example.
|
||
|
||
9) Added material to 'cat' listing.
|
||
|
||
10) Added:
|
||
cd source-directory
|
||
tar cf - . | (cd ../target-directory; tar xzf -)
|
||
to Alan Cox example as an alternative.
|
||
|
||
11) Added material & example to {}
|
||
|
||
12) Added "Renaming file extensions" example
|
||
to pattern matching section.
|
||
|
||
13) Added "Bash F.A.Q." and "sed F.A.Q." to references.
|
||
|
||
14) Added missing line in "Tests" section.
|
||
|
||
15) Revised the 'abstract'.
|
||
|
||
16) Added <revhistory> element.
|
||
|
||
17) Reorganized:
|
||
Moved two examples placed erroneously in 'backticks' section
|
||
to where they belong.
|
||
|
||
18) Fleshed out section on 'subshells'.
|
||
Added 2 examples.
|
||
|
||
19) Rewrote text to first 'variables' section.
|
||
|
||
20) Added "rpm-check.sh" example to "code blocks" discussion.
|
||
|
||
21) Added "online.sh" example to "trap" discussion.
|
||
|
||
22) Expanded "I/O Redirection" section
|
||
Definition of 'file descriptor' added.
|
||
More on file descriptors 3 - 9.
|
||
|
||
23) Expanded "Regular Expression" section.
|
||
|
||
24) Added explanation of signals to "debugging" section.
|
||
|
||
25) Added SECONDS and REPLY to internal variables listing (plus illustrative
|
||
examples).
|
||
|
||
26) Added 'ulimit' to administrative commands listing.
|
||
|
||
27) Added more information on 'trap' in 'Debugging' section.
|
||
|
||
28) Fixed erroneous '==' reference in 'Variables Revisited section.
|
||
|
||
29) Added 'jobs', 'ps', and 'nohup' to 'Administrative Commands' section.
|
||
|
||
30) Added additional entries to file tests in 'Tests' section.
|
||
|
||
31) Added additional entries and much more detail in 'Options' section.
|
||
|
||
32) More detail on 'grep'.
|
||
|
||
33) More detail on 'export'.
|
||
|
||
34) Added entries to file and string tests.
|
||
|
||
35) Added 'uptime' to 'System and Administrative Commands' section.
|
||
|
||
36) Added '~' to 'Special Characters' section.
|
||
|
||
37) Added material to 'Backquotes' section.
|
||
|
||
38) Added 'which' to 'External Filters and Commands' section.
|
||
|
||
39) More detail on parameters to functions.
|
||
|
||
40) More detail on arrays.
|
||
|
||
41) More detail on 'at'.
|
||
|
||
42) More detail on $RANDOM. Expanded example.
|
||
|
||
43) Added example script to demonstrate timed input.
|
||
|
||
44) Added 'Representation of Numerical Constants' subsection to 'Operations'
|
||
section.
|
||
|
||
45) Added "eval var1=\$$var2" indirect reference notation to 'Variables
|
||
Revisited' section.
|
||
|
||
46) Reorganized:
|
||
Moved 'Parameter Substition' discussion from 'Special Characters' section
|
||
to 'Variables' section.
|
||
Added extra illustrative code snippets.
|
||
|
||
47) Added bubble sort example to 'Arrays' section.
|
||
|
||
48) Added %= operator to 'Operations' section.
|
||
|
||
49) Added reference to 'whoami' to 'System and Administrative Commands'
|
||
section.
|
||
|
||
50) More detail and an additional example for 'Quoting' section.
|
||
|
||
51) Added info on using pattern match operator, ${var/patt/}, for deletion.
|
||
|
||
52) More detail on 'touch' and 'read' in 'External Filters'.
|
||
|
||
53) More detail on 'null' operator (:).
|
||
|
||
54) Some of the preexisting examples revised, with more material.
|
||
|
||
55) 'Miscellany' section added.
|
||
subsection 'Interactive Scripts'
|
||
subsection 'Optimizations'
|
||
subsection 'Assorted Tips'
|
||
|
||
56) Contrib script section added.
|
||
4 scripts so far.
|
||
|
||
57) Expanded 'Credits' section.
|
||
|
||
|
||
58) Many other corrections, minor changes, and additions.
|
||
|
||
|
||
|
||
====================================================================
|
||
|
||
Version 0.1 released 14 June, 2000.
|