Sams Publishing, 2004. — 432 p.
With the proliferation of Linux as both a server and desktop operating system, users are looking for more advanced methods of getting up and running quickly and efficiently solving problems. The most powerful way of achieving this is to employ the command line interface known as the shell. Bash, the Bourne Again Shell, is the most popular Linux shell today.
Linux Shell Scripting with Bash emphasizes professional scripting solutions through the use of structured programming and standard Linux development tools. The book focuses on the Linux environment and the robust tool set therein. Because the shell relies on the operating system for its functionality this is the ideal methodology to learn shell scripting and sets the book apart from general scripting titles. Promoting good programming practices with real-world scripts, which are readable, extendable, and easy to debug, this book will be an essential asset to any Linux user.
The Linux EnvironmentThe Origin of Linux
Files and File Systems
Directories
Inodes and Links
Pipe and Socket Files
Device Files
Operating the ShellBash Keywords
Command Basics
Command-Line Editing
Variable Assignments and Displaying Messages
Multiple Commands
Command History
Directory Commands
Specialized Navigation and History
The Colon Command
Reference Section
Files, Users, and Shell CustomizationListing Files
printf Command
Getting Help
Fixing the Display
Working with Files
Working with People
Shell Aliases
The Bash Hash Table
Customizing Your Prompt
Long Command Lines
Customizing Command-Line Editing
Your Session Profile
Reference Section
Script BasicsCreating a Script
Creating a Well-Behaved Script
The Header
Global Declarations
Sanity Checks
The Main Script
Cleanup
Stopping a Script
Reading Keyboard Input
Basic Redirection
Standard Output, Error, and Input
Built-In Versus Linux Commands
The Set and Shopt Commands
Reference Section
VariablesVariable Basics
Predefined Variables
The Effect of Quotations
Variable Attributes
Arrays
Exporting Variables and the Linux Environment
The eval Command
story.bash:A Story Generator
Reference Section
ExpressionsExpansions
The Basic if Command
File Expressions
Multiple Tests
Strings
Arithmetic Expressions
Logical Expressions
Relational Operations
Bitwise Operations
Self-Referential Operations
Other let Features
temperature.bash: Converting Fahrenheit to Celsius
Arithmetic Tests
Pattern Recognition
Globbing Options
Filename Brace Expansion ( \{..\} )
Dollar Sign Substitutions
Arithmetic Expression Substitution ( ((..)) )
mixer.bash: HTML Color Mixer
Reference Section
Compound CommandsCommand Status Codes
if Command
case Command
while Loop
until Loop
for Loops
Embedded let ( ((..)) )
Grouping Commands ( \{..\} )
report.bash: Report Formatter
Debugging and Version ControlShell Debugging Features
Debug Traps
Version Control (CVS)
Creating Transcripts
Watching Running Scripts
Timing Execution with Time
Creating Man Pages
Source Code Patches
Shell Archives
Reference Section
Parameters and SubshellsPositional Parameters
The getopts Command
The getopt Command
Subshells
Reference Section
Job Control and SignalsJob Control
Signals
The suspend Command
Traps
Exit Handlers
The killall Command
Being Nice
Process Status
Reference Section
Text File BasicsWorking with Pathnames
File Truncation
Identifying Files
Creating and Deleting Files
Moving and Copying Files
More Information About Files
Transferring Files Between Accounts (wget)
Transferring Files with FTP
Transferring Files with Secure FTP (sftp)
Verifying Files
Splitting Large Files
Tabs and Spaces
Temporary Files
Lock Files
Named Pipes
Process Substitution
Opening Files
Using head and tail
File Statistics
Cutting
Pasting
Columns
Folding
Joining
Merging
Reference Section
Text File ProcessingFinding Lines
Locating Files
Finding Files
Sorting
Character Editing (tr)
File Editing (sed)
Compressing Files
Reference Section
Console ScriptingThe Linux Console
The Console Keyboard
The Console Display
tput
select Menus
Custom Menus
Reference Section
Functions and Script ExecutionRunning Scripts
The Linux Execution Environment
The Source Command (.)
Switching Scripts with exec
Writing Recurring Scripts
Writing Continually Executing Scripts
Shell Functions
Local Variables
Recursion and Nested Functions
Function Attributes
Reference Section
Shell SecurityThe Basic Linux Security Model
Knowing Who You Are (id)
Transferring Ownership (chown/chgrp)
Changing Access Rights (chmod)
Default Access Rights (umask)
setuid/setgid and Scripts
The chroot Command
Resource Limits (ulimit)
Restricted Shells
Secure File Deletion (wipe)
Reference Section
Network ProgrammingSockets
Client-Server and Peer-to-Peer
Network Clients
CGI Scripting
CGI Environment Variables
Processing Forms
Basic Web Page Stripping (lynx)
Reference Section
Data Structures and DatabasesAssociative Arrays Using Bash Arrays
Hash Tables Using Bash Arrays
Binary Trees Using Bash Arrays
Working with PostgreSQL Databases (psql)
Working with MySQL Databases
Reference Section
Final TopicsThe echo Command
More Uses for set
Date Conversions
Completions
Locales
The du Command
Memory Usage
noclobber and Forced Overwriting
The fc Command
! Word Designators and Modifiers
Running Scripts from C
Journey’s End
Reference Section
Appendices:A Complete Example
Summary of Bash Built-In Commands
Bash Options
Error Codes
Signals
ASCII Table