Shell Programming in Unix, Linux and OS X, 4th edition
Published by Addison-Wesley Professional (August 31, 2016) © 2017
- Stephen G. Kochan
- Patrick Wood
eTextbook
- Available for purchase from all major ebook resellers, including InformIT.com.
- To request a review copy, click on the "Request a Review Copy" button.
- A print text (hardcover or paperback)Â
- Free shipping
- Also available for purchase as an ebook from all major ebook resellers, including InformIT.com
Shell Programming in Unix, Linux and OS X (the Fourth Edition of Kochan and Wood's classic Unix Shell Programming tutorial) can help any modern Unix, Linux, or OS X user get more done faster with their operating system of choice. One of the world's most respected Unix programming books, it has been updated throughout to fully address today's widely-used platforms, including Oracle Solaris, Mac OS X and Linux.
- Shows today's Unix, Linux and Mac OS X users how to automate tasks and develop powerful shell scripts
- Offers complete instructions for the standard Bourne shell, plus Bash and Korn shells too
- Fully reflects today's most widely used Unix-based platforms: Oracle Solaris, Mac OS X, and Linux
- Includes additional information requested by readers and instructors over the years
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
Stephen Kochan is the author or co-author of several best-selling titles on Unix and the C language, including Programming in C, Programming in Objective-C, Topics in C Programming, and Exploring the Unix System. He is a former software consultant for AT&T Bell Laboratories, where he developed and taught classes on Unix and C programming.
Patrick Wood is the CTO of the New Jersey location of Electronics for Imaging. He was a member of the technical staff at Bell Laboratories when he met Mr. Kochan in 1985. Together they founded Pipeline Associates, Inc., a Unix consulting firm, where he was vice president. They co-authored Exploring the Unix System, Unix System Security, Topics in C Programming, and Unix Shell Programming.
Need help? Get in touch