A Web Edition is an online learning product that you view in your web browser while connected to the Internet. Some Web Editions include additional interactive features, such as videos, quizzes, or live code editing. Read the product description for more details. A Web Edition will be accessible from your Account page after purchase.
Viewing a Web Edition requires a web browser that fully supports HTML5. Supported platforms are:
Also available in other formats.
Register your product to gain access to bonus material or receive a coupon.
Shell Programming in Unix, Linux and OS X
The Fourth Edition of Unix Shell Programming
(This is the web edition of the book which is provided for free with purchase and registration. See inside book for details.)
Shell Programming in Unix, Linux and OS X is a thoroughly updated revision of Kochan and Wood’s classic Unix Shell Programming tutorial. Following the methodology of the original text, the book focuses on the POSIX standard shell, and teaches you how to develop programs in this useful programming environment, taking full advantage of the underlying power of Unix and Unix-like operating systems.
After a quick review of Unix utilities, the book’s authors take you step-by-step through the process of building shell scripts, debugging them, and understanding how they work within the shell’s environment. All major features of the shell are covered, and the large number of practical examples make it easy for you to build shell scripts for your particular applications. The book also describes the major features of the Korn and Bash shells.
Learn how to…
Contents at a Glance
1 A Quick Review of the Basics
2 What Is the Shell?
3 Tools of the Trade
4 And Away We Go
5 Can I Quote You on That?
6 Passing Arguments
7 Decisions, Decisions
8 ‘Round and ‘Round She Goes
9 Reading and Printing Data
10 Your Environment
11 More on Parameters
12 Loose Ends
13 Rolo Revisited
14 Interactive and Nonstandard Shell Features
A Shell Summary
B For More Information
1 A Quick Review of the Basics
Some Basic Commands
Displaying the Date and Time: The date Command
Finding Out Who’s Logged In: The who Command
Echoing Characters: The echo Command
Working with Files
Listing Files: The ls Command
Displaying the Contents of a File: The cat Command
Counting the Number of Words in a File: The wc Command
Command Options
Making a Copy of a File: The cp Command
Renaming a File: The mv Command
Removing a File: The rm Command
Working with Directories
The Home Directory and Pathnames
Displaying Your Working Directory: The pwd Command
Changing Directories: The cd Command
More on the ls Command
Creating a Directory: The mkdir Command
Copying a File from One Directory to Another
Moving Files Between Directories
Linking Files: The ln Command
Removing a Directory: The rmdir Command
Filename Substitution
The Asterisk
Matching Single Characters
Filename Nuances
Spaces in Filenames
Other Weird Characters
Standard Input/Output, and I/O Redirection
Standard Input and Standard Output
Output Redirection
Input Redirection
Pipes
Filters
Standard Error
More on Commands
Typing More Than One Command on a Line
Sending a Command to the Background
The ps Command
Command Summary
2 What Is the Shell?
The Kernel and the Utilities
The Login Shell
Typing Commands to the Shell
The Shell’s Responsibilities
Program Execution
Variable and Filename Substitution
I/O Redirection
Hooking up a Pipeline
Environment Control
Interpreted Programming Language
3 Tools of the Trade
Regular Expressions
Matching Any Character: The Period (.)
Matching the Beginning of the Line: The Caret (^)
Matching the End of the Line: The Dollar Sign $
Matching a Character Set: The [...] Construct
Matching Zero or More Characters: The Asterisk (*)
Matching a Precise Number of Subpatterns: \{...\}
Saving Matched Characters: \(...\)
cut
The -d and -f Options
paste
The -d Option
The -s Option
sed
The -n Option
Deleting Lines
tr
The -s Option
The -d Option
grep
Regular Expressions and grep
The -v Option
The -l Option
The -n Option
sort
The -u Option
The -r Option
The -o Option
The -n Option
Skipping Fields
The -t Option
Other Options
uniq
The -d Option
Other Options
4 And Away We Go
Command Files
Comments
Variables
Displaying the Values of Variables
Undefined Variables Have the Null Value
Filename Substitution and Variables
The ${variable} Construct
Built-in Integer Arithmetic
5 Can I Quote You on That?
The Single Quote
The Double Quote
The Backslash
Using the Backslash for Continuing Lines
The Backslash Inside Double Quotes
Command Substitution
The Back Quote
The $(...) Construct
The expr Command
6 Passing Arguments
The $# Variable
The $* Variable
A Program to Look Up Someone in the Phone Book
A Program to Add Someone to the Phone Book
A Program to Remove Someone from the Phone Book
${n}
The shift Command
7 Decisions, Decisions
Exit Status
The $? Variable
The test Command
String Operators
An Alternative Format for test
Integer Operators
File Operators
The Logical Negation Operator !
The Logical AND Operator -a
Parentheses
The Logical OR Operator -o
The else Construct
The exit Command
A Second Look at the rem Program
The elif Construct
Yet Another Version of rem
The case Command
Special Pattern-Matching Characters
The -x Option for Debugging Programs
Back to the case
The Null Command :
The && and || Constructs
8 'Round and 'Round She Goes
The for Command
The $@ Variable
The for Without the List
The while Command
The until Command
More on Loops
Breaking Out of a Loop
Skipping the Remaining Commands in a Loop
Executing a Loop in the Background
I/O Redirection on a Loop
Piping Data into and out of a Loop
Typing a Loop on One Line
The getopts Command
9 Reading and Printing Data
The read Command
A Program to Copy Files
Special echo Escape Characters
An Improved Version of mycp
A Final Version of mycp
A Menu-Driven Phone Program
The $$ Variable and Temporary Files
The Exit Status from read
The printf Command
10 Your Environment
Local Variables
Subshells
Exported Variables
export -p
PS1 and PS2
HOME
PATH
Your Current Directory
CDPATH
More on Subshells
The .Command
The exec Command
The (...) and { ...; } Constructs
Another Way to Pass Variables to a Subshell
Your .profile File
The TERM Variable
The TZ Variable
11 More on Parameters
Parameter Substitution
${parameter}
${parameter:-value}
${parameter:=value}
${parameter:?value}
${parameter:+value}
Pattern Matching Constructs
${#variable}
The $0 Variable
The set Command
The -x Option
set with No Arguments
Using set to Reassign Positional Parameters
The -- Option
Other Options to set
The IFS Variable
The readonly Command
The unset Command
12 Loose Ends
The eval Command
The wait Command
The $! Variable
The trap Command
trap with No Arguments
Ignoring Signals
Resetting Traps
More on I/O
<&- and >&-
In-line Input Redirection
Shell Archives
Functions
Removing a Function Definition
The return Command
The type Command
13 Rolo Revisited
Data Formatting Considerations
rolo
add
lu
display
rem
change
listall
Sample Output
14 Interactive and Nonstandard Shell Features
Getting the Right Shell
The ENV File
Command-Line Editing
Command History
The vi Line Edit Mode
Accessing Commands from Your History
The emacs Line Edit Mode
Accessing Commands from Your History
Other Ways to Access Your History
The history Command
The fc Command
The r Command
Functions
Local Variables
Automatically Loaded Functions
Integer Arithmetic
Integer Types
Numbers in Different Bases
The alias Command
Removing Aliases
Arrays
Job Control
Stopped Jobs and the fg and bg Commands
Miscellaneous Features
Other Features of the cd Command
Tilde Substitution
Order of Search
Compatibility Summary
Appendixes
A Shell Summary
B For More Information