| | Copyright |
| | Preface |
|
| | ACKNOWLEDGMENTS |
| |
Chapter 1.
Introduction to UNIX/Linux Shells |
|
| |
Section 1.1.
What Is UNIX? What Is Linux? A Little History |
|
| |
Section 1.2.
Definition and Function of a Shell |
|
| |
Section 1.3.
History of the Shell |
|
| |
Section 1.4.
System Startup and the Login Shell |
|
| |
Section 1.5.
Processes and the Shell |
|
| |
Section 1.6.
The Environment and Inheritance |
|
| |
Section 1.7.
Executing Commands from Scripts |
| |
Chapter 2.
Shell Programming QuickStart |
|
| |
Section 2.1.
Taking a Peek at Shell Scripts |
|
| |
Section 2.2.
Sample Scripts: Comparing the Major Shells |
|
| |
Section 2.3.
The C and TC Shell Syntax and Constructs |
|
| |
Section 2.4.
The Bourne Shell Syntax and Constructs |
|
| |
Section 2.5.
The Korn Shell Constructs |
|
| |
Section 2.6.
The Bash Shell Constructs |
| |
Chapter 3.
Regular Expressions and Pattern Matching |
|
| |
Section 3.1.
Regular Expressions |
|
| |
Section 3.2.
Combining Regular Expression Metacharacters |
| |
Chapter 4.
The grep Family |
|
| |
Section 4.1.
The grep Command |
|
| |
Section 4.2.
grep Examples with Regular Expressions |
|
| |
Section 4.3.
grep with Options |
|
| |
Section 4.4.
grep with Pipes |
|
| |
Section 4.5.
egrep (Extended grep) |
|
| |
Section 4.6.
fgrep (Fixed grep or Fast grep) |
|
| |
Section 4.7.
Linux and GNU grep |
|
| |
Section 4.8.
GNU Basic grep (grep –G) with Regular Expressions |
|
| |
Section 4.9.
grep –E or egrep (GNU Extended grep) |
|
| |
Section 4.10.
Fixed grep (grep –F and fgrep) |
|
| |
Section 4.11.
Recursive grep (rgrep, grep –R) |
|
| |
Section 4.12.
GNU grep with Options |
|
| |
Section 4.13.
grep with Options (UNIX and GNU) |
|
| | LAB 1: grep EXERCISE |
| |
Chapter 5.
sed, the Streamlined Editor |
|
| |
Section 5.1.
What Is sed ? |
|
| |
Section 5.2.
Versions of sed |
|
| |
Section 5.3.
How Does sed Work? |
|
| |
Section 5.4.
Regular Expressions |
|
| |
Section 5.5.
Addressing |
|
| |
Section 5.6.
Commands and Options |
|
| |
Section 5.7.
Error Messages and Exit Status |
|
| |
Section 5.8.
Metacharacters |
|
| |
Section 5.9.
sed Examples |
|
| |
Section 5.10.
sed Scripting |
|
| | LAB 2: sed EXERCISE |
| |
Chapter 6.
The awk Utility |
|
| |
Section 6.1.
What's awk? What's nawk? What's gawk? |
|
| |
Section 6.2.
awk's Format |
|
| |
Section 6.3.
How awk Works |
|
| |
Section 6.4.
Formatting Output |
|
| |
Section 6.5.
awk Commands from Within a File |
|
| |
Section 6.6.
Records and Fields |
|
| |
Section 6.7.
Patterns and Actions |
|
| |
Section 6.8.
Regular Expressions |
|
| |
Section 6.9.
awk Commands in a Script File |
|
| |
Section 6.10.
Review |
|
| | LAB 3: awk EXERCISE |
|
| |
Section 6.11.
Comparison Expressions |
|
| |
Section 6.12.
Review |
|
| | LAB 4: awk EXERCISE |
|
| |
Section 6.13.
Variables |
|
| |
Section 6.14.
Redirection and Pipes |
|
| |
Section 6.15.
Pipes |
|
| |
Section 6.16.
Review |
|
| | LAB 5: nawk EXERCISE |
|
| |
Section 6.17.
Conditional Statements |
|
| |
Section 6.18.
Loops |
|
| |
Section 6.19.
Program Control Statements |
|
| |
Section 6.20.
Arrays |
|
| |
Section 6.21.
awk Built-In Functions |
|
| |
Section 6.22.
Built-In Arithmetic Functions |
|
| |
Section 6.23.
User-Defined Functions (nawk) |
|
| |
Section 6.24.
Review |
|
| | LAB 6: nawk EXERCISE |
|
| |
Section 6.25.
Odds and Ends |
|
| | LAB 7: nawk EXERCISE |
|
| |
Section 6.26.
awk Built-In Functions |
| |
Chapter 7.
The Interactiven Bourne Shell |
|
| |
Section 7.1.
Introduction |
|
| |
Section 7.2.
The Environment |
|
| |
Section 7.3.
The Command Line |
|
| |
Section 7.4.
Shell Metacharacters (Wildcards) |
|
| |
Section 7.5.
Filename Substitution |
|
| |
Section 7.6.
Variables |
|
| |
Section 7.7.
Quoting |
|
| |
Section 7.8.
Command Substitution |
|
| |
Section 7.9.
An Introduction to Functions |
|
| |
Section 7.10.
Standard I/O and Redirection |
|
| |
Section 7.11.
Pipes |
|
| |
Section 7.12.
The here document and Input |
| |
Chapter 8.
Programming the Bourne Shell |
|
| |
Section 8.1.
Introduction |
|
| |
Section 8.2.
Reading User Input |
|
| |
Section 8.3.
Arithmetic |
|
| |
Section 8.4.
Positional Parameters and Command-Line Arguments |
|
| |
Section 8.5.
Conditional Constructs and Flow Control |
|
| |
Section 8.6.
Looping Commands |
|
| |
Section 8.7.
Functions |
|
| |
Section 8.8.
Trapping Signals |
|
| |
Section 8.9.
The Command Line |
|
| |
Section 8.10.
Shell Invocation Options |
|
| | LAB 8: BOURNE SHELL—GETTING STARTED |
|
| | LAB 9: METACHARACTERS |
|
| | LAB 10: REDIRECTION |
|
| | LAB 11: FIRST SCRIPT |
|
| | LAB 12: COMMAND-LINE ARGUMENTS |
|
| | LAB 13: GETTING USER INPUT |
|
| | LAB 14: CONDITIONAL STATEMENTS |
|
| | LAB 15: CONDITIONALS AND FILE TESTING |
|
| | LAB 16: THE case STATEMENT |
|
| | LAB 17: LOOPS |
|
| | LAB 18: FUNCTIONS |
| |
Chapter 9.
The Interactive C and TC Shells |
|
| |
Section 9.1.
Introduction |
|
| |
Section 9.2.
The Environment |
|
| |
Section 9.3.
The C/TC Shell Command Line |
|
| |
Section 9.4.
Aliases |
|
| |
Section 9.5.
Manipulating the Directory Stack |
|
| |
Section 9.6.
Job Control |
|
| |
Section 9.7.
Shell Metacharacters |
|
| |
Section 9.8.
Filename Substitution |
|
| |
Section 9.9.
Redirection and Pipes |
|
| |
Section 9.10.
Variables |
|
| |
Section 9.11.
Command Substitution |
|
| |
Section 9.12.
Quoting |
|
| |
Section 9.13.
New Features of the Interactive TC Shell |
|
| |
Section 9.14.
The TC Shell Command Line |
|
| |
Section 9.15.
TC Shell Command, Filename, and Variable Completion |
|
| |
Section 9.16.
TC Shell Spelling Correction |
|
| |
Section 9.17.
TC Shell Aliases |
|
| |
Section 9.18.
TC Shell Job Control |
|
| |
Section 9.19.
Printing the Values of Variables in the TC Shell |
|
| |
Section 9.20.
TC Shell Built-In Commands |
|
| | LAB 19: THE TC SHELL—GETTING STARTED |
|
| | LAB 20: HISTORY |
|
| | LAB 21: SHELL METACHARACTERS |
|
| | LAB 22: REDIRECTION |
|
| | LAB 23: VARIABLES AND ARRAYS |
| |
Chapter 10.
Programming the C and TC Shells |
|
| |
Section 10.1.
Introduction |
|
| |
Section 10.2.
Reading User Input |
|
| |
Section 10.3.
Arithmetic |
|
| |
Section 10.4.
Debugging Scripts |
|
| |
Section 10.5.
Command-Line Arguments |
|
| |
Section 10.6.
Conditional Constructs and Flow Control |
|
| |
Section 10.7.
Looping Commands |
|
| |
Section 10.8.
Interrupt Handling |
|
| |
Section 10.9.
setuid Scripts |
|
| |
Section 10.10.
Storing Scripts |
|
| |
Section 10.11.
Built-In Commands |
|
| | LAB 24: C/TC SHELLS—GETTING STARTED |
|
| | LAB 25: SHELL METACHARACTERS |
|
| | LAB 26: REDIRECTION |
|
| | LAB 27: FIRST SCRIPT |
|
| | LAB 28: GETTING USER INPUT |
|
| | LAB 29: COMMAND-LINE ARGUMENTS |
|
| | LAB 30: CONDITIONALS AND FILE TESTING |
|
| | LAB 31: THE switch STATEMENT |
|
| | LAB 32: LOOPS |
| |
Chapter 11.
The Interactive Korn Shell |
|
| |
Section 11.1.
Introduction |
|
| |
Section 11.2.
The Environment |
|
| |
Section 11.3.
The Command Line |
|
| |
Section 11.4.
Commenting and Filename Expansion |
|
| |
Section 11.5.
Aliases |
|
| |
Section 11.6.
Job Control |
|
| |
Section 11.7.
Metacharacters |
|
| |
Section 11.8.
Filename Substitution (Wildcards) |
|
| |
Section 11.9.
Variables |
|
| |
Section 11.10.
Quoting |
|
| |
Section 11.11.
Command Substitution |
|
| |
Section 11.12.
Functions |
|
| |
Section 11.13.
Standard I/O and Redirection |
|
| |
Section 11.14.
Pipes |
|
| |
Section 11.15.
Timing Commands |
| |
Chapter 12.
Programming the Korn Shell |
|
| |
Section 12.1.
Introduction |
|
| |
Section 12.2.
Reading User Input |
|
| |
Section 12.3.
Arithmetic |
|
| |
Section 12.4.
Positional Parameters and Command-Line Arguments |
|
| |
Section 12.5.
Conditional Constructs and Flow Control |
|
| |
Section 12.6.
Looping Commands |
|
| |
Section 12.7.
Arrays |
|
| |
Section 12.8.
Functions |
|
| |
Section 12.9.
Trapping Signals |
|
| |
Section 12.10.
Coprocesses |
|
| |
Section 12.11.
Debugging |
|
| |
Section 12.12.
The Command Line |
|
| |
Section 12.13.
Security |
|
| |
Section 12.14.
Built-In Commands |
|
| |
Section 12.15.
Korn Shell Invocation Arguments |
|
| | LAB 33: KORN SHELL—GETTING STARTED |
|
| | LAB 34: HISTORY |
|
| | LAB 35: ALIASES AND FUNCTIONS |
|
| | LAB 36: SHELL METACHARACTERS |
|
| | LAB 37: TILDE EXPANSION, QUOTES, AND COMMAND SUBSTITUTION |
|
| | LAB 38: REDIRECTION |
|
| | LAB 39: JOB CONTROL |
|
| | LAB 40: WRITING THE info SHELL SCRIPT |
|
| | LAB 41: VARIABLE EXPANSION OF SUBSTRINGS |
|
| | LAB 42: THE lookup SCRIPT |
|
| | LAB 43: USING typeset |
|
| | LAB 44: THE if/else CONSTRUCT AND THE let COMMAND |
|
| | LAB 45: THE case STATEMENT |
|
| | LAB 46: THE select LOOP |
|
| | LAB 47: AUTOLOADING FUNCTIONS |
| |
Chapter 13.
The Interactive Bash Shell |
|
| |
Section 13.1.
Introduction |
|
| |
Section 13.2.
The Environment |
|
| |
Section 13.3.
The Command Line |
|
| |
Section 13.4.
Job Control |
|
| |
Section 13.5.
Command-Line Shortcuts |
|
| |
Section 13.6.
Aliases |
|
| |
Section 13.7.
Manipulating the Directory Stack |
|
| |
Section 13.8.
Metacharacters (Wildcards) |
|
| |
Section 13.9.
Filename Substitution (Globbing) |
|
| |
Section 13.10.
Variables |
|
| |
Section 13.11.
Quoting |
|
| |
Section 13.12.
Command Substitution |
|
| |
Section 13.13.
Arithmetic Expansion |
|
| |
Section 13.14.
Order of Expansion |
|
| |
Section 13.15.
Arrays |
|
| |
Section 13.16.
Functions |
|
| |
Section 13.17.
Standard I/O and Redirection |
|
| |
Section 13.18.
Pipes |
|
| |
Section 13.19.
Shell Invocation Options |
|
| |
Section 13.20.
Shell Built-In Commands |
|
| | LAB 48: bash SHELL—GETTING STARTED |
|
| | LAB 49: JOB CONTROL |
|
| | LAB 50: COMMAND COMPLETION, HISTORY, AND ALIASES |
|
| | LAB 51: SHELL METACHARACTERS |
|
| | LAB 52: REDIRECTION |
|
| | LAB 53: VARIABLES |
| |
Chapter 14.
Programming the Bash Shell |
|
| |
Section 14.1.
Introduction |
|
| |
Section 14.2.
Reading User Input |
|
| |
Section 14.3.
Arithmetic |
|
| |
Section 14.4.
Positional Parameters and Command-Line Arguments |
|
| |
Section 14.5.
Conditional Constructs and Flow Control |
|
| |
Section 14.6.
Looping Commands |
|
| |
Section 14.7.
Functions |
|
| |
Section 14.8.
Trapping Signals |
|
| |
Section 14.9.
Debugging |
|
| |
Section 14.10.
The Command Line |
|
| |
Section 14.11.
bash Options |
|
| |
Section 14.12.
Shell Built-In Commands |
|
| | LAB 54: bash SHELL—FIRST SCRIPT |
|
| | LAB 55: COMMAND-LINE ARGUMENTS |
|
| | LAB 56: GETTING USER INPUT |
|
| | LAB 57: CONDITIONAL STATEMENTS |
|
| | LAB 58: CONDITIONALS AND FILE TESTING |
|
| | LAB 59: THE case STATEMENT |
|
| | LAB 60: LOOPS |
|
| | LAB 61: FUNCTIONS |
| |
Chapter 15.
Debugging Shell Scripts |
|
| |
Section 15.1.
Introduction |
|
| |
Section 15.2.
Style Issues |
|
| |
Section 15.3.
Types of Errors |
|
| |
Section 15.4.
Probable Causes for Syntax Errors |
|
| |
Section 15.5.
Tracing with Shell Options and the set Command |
|
| |
Section 15.6.
Summary |
| |
Chapter 16.
The System Administrator and the Shell |
|
| |
Section 16.1.
Introduction |
|
| |
Section 16.2.
The Superuser |
|
| |
Section 16.3.
Becoming a Superuser with the su Command |
|
| |
Section 16.4.
Boot Scripts |
|
| |
Section 16.5.
Summary |
| |
Appendix A.
Useful UNIX/Linux Utilities for Shell Programmers |
|
| | apropos—searches the whatis database for strings |
|
| | arch—prints the machine architecture (see uname -m) |
|
| | at, batch—executes commands at a later time |
|
| | awk—pattern scanning and processing language |
|
| | banner—makes posters |
|
| | basename—with a directory name delivers portions of the pathname |
|
| | bash—GNU Bourne Again Shell |
|
| | bc—processes precision arithmetic |
|
| | bdiff—compares two big files |
|
| | cal—displays a calendar |
|
| | cat—concatenates and displays files |
|
| | chfn—changes the finger information |
|
| | chmod—changes the permissions mode of a file |
|
| | chown—changes owner of file |
|
| | chsh—changes your login shell |
|
| | clear—clears the terminal screen |
|
| | cmp—compares two files |
|
| | compress—compress, uncompress, zcat compress, uncompress files, or display expanded files |
|
| | cp—copies files |
|
| | cpio—copies file archives in and out |
|
| | cron—the clock daemon |
|
| | crypt—encodes or decodes a file |
|
| | cut—removes selected fields or characters from each line of a file |
|
| | date—displays the date and time or sets the date |
|
| | dd—converts a file while copying it |
|
| | diff—compares two files for differences |
|
| | dos, xdos, dosexec, dosdebug—a Linux DOS emulator that runs MS-DOS and MS-DOS programs under Linux |
|
| | df—summarizes free disk space |
|
| | du—summarizes disk usage |
|
| | echo—echoes arguments |
|
| | egrep—searches a file for a pattern using full regular expressions |
|
| | expr—evaluates arguments as an expression |
|
| | fgrep—searches a file for a character string |
|
| | file—determines the type of a file by looking at its contents |
|
| | find—finds files |
|
| | finger—displays information about local and remote users |
|
| | fmt—simple text formatters |
|
| | fold—folds long lines |
|
| | ftp—file transfer program |
|
| | free—displays amount of free and used memory in the system |
|
| | fuser—identifies processes using files or sockets |
|
| | gawk—pattern scanning and processing language |
|
| | gcc, g++—GNU project C and C++ Compiler (v2.7) |
|
| | getopt(s)—parses command-line options |
|
| | grep—searches a file for a pattern |
|
| | groups—prints group membership of user |
|
| | gzip, gunzip, zcat—compresses or expands files |
|
| | head—outputs the first ten lines of a file(s) |
|
| | host—prints information about specified hosts or zones in DNS |
|
| | id—prints the username, user ID, group name, and group ID |
|
| | jsh—the standard, job control shell |
|
| | kill—sends a signal to terminate one or more processes |
|
| | killall—kills processes by name |
|
| | less—opposite of more |
|
| | line—reads one line |
|
| | ln—creates hard links to files |
|
| | logname—gets the name of the user running the process |
|
| | look—displays lines beginning with a given string |
|
| | lp—sends output to a printer (AT&T) |
|
| | lpr—sends output to a printer (UCB) |
|
| | lpstat—prints information about the status of the LP print service (AT&T) |
|
| | lpq—prints information about the status of the printer (UCB) |
|
| | ls—lists contents of directory |
|
| | mail, rmail—reads mail or sends mail to users |
|
| | mailx—interactive message processing system |
|
| | make—maintains, updates, and regenerates groups of related programs and files |
|
| | man—formats and displays the online manual pages |
|
| | manpath—determines user's search path for man pages |
|
| | mesg—permits or denies messages resulting from the write command |
|
| | mkdir—creates a directory |
|
| | more—browses or pages through a text file |
|
| | mtools—utilities to access DOS disks in UNIX |
|
| | mv—moves or renames files |
|
| | nawk—pattern scanning and processing language |
|
| | newgrp—logs into a new group |
|
| | news—prints news items |
|
| | nice—runs a command at low priority |
|
| | nohup—makes commands immune to hangups and quits |
|
| | od—octal dump |
|
| | pack, pcat, unpack—compresses and expands files |
|
| | passwd—changes the login password and password attributes |
|
| | paste—merges same lines of several files or subsequent lines of one file |
|
| | pcat—(see pack) |
|
| | pine—a Program for Internet News and E-mail |
|
| | pg—displays files one page at a time |
|
| | pr—prints files |
|
| | ping—reports if a remote system is reachable and alive |
|
| | ps—reports process status |
|
| | pstree—displays a tree of processes |
|
| | pwd—displays the present working directory name |
|
| | quota—displays users' disk usage and limits |
|
| | rcp—remote file copy |
|
| | rdate—gets the date and time via the network |
|
| | rgrep—a recursive, highlighting grep program |
|
| | rlogin—remote login |
|
| | rm—removes files from directories |
|
| | rmdir—removes a directory |
|
| | rsh—starts a remote shell |
|
| | ruptime—shows the host status of local machines |
|
| | rwho—who is logged in on local machines |
|
| | script—creates a typescript of a terminal session |
|
| | sed—streamlined editor |
|
| | size—prints section sizes in bytes of object files |
|
| | sleep—suspends execution for some number of seconds |
|
| | sort—sorts and/or merges files |
|
| | spell—finds spelling errors |
|
| | split—splits a file into pieces |
|
| | strings—finds any printable strings in an object or binary file |
|
| | stty—sets the options for a terminal |
|
| | su—become superuser or another user |
|
| | sum—calculates a checksum for a file |
|
| | sync—updates the superblock and sends changed blocks to disk |
|
| | tabs—sets tab stops on a terminal |
|
| | tail—displays the tail end of a file |
|
| | talk—allows you to talk to another user |
|
| | tar—stores and retrieves files from an archive file, normally a tape device |
|
| | tee—replicates the standard output |
|
| | telnet—communicates with a remote host |
|
| | test—evaluates an expression |
|
| | time—displays a summary of time used by this shell and its children |
|
| | timex—times a command; reports process data and system activity |
|
| | top—displays top CPU processes |
|
| | touch—updates access time and/or modification time of a file |
|
| | tput—initializes a terminal or queries the terminfo database |
|
| | tr—translates characters |
|
| | true—provides successful exit status |
|
| | tsort—topological sort |
|
| | tty—gets the name of the terminal |
|
| | umask—sets file-creation mode mask for permissions |
|
| | uname—prints name of current machine |
|
| | uncompress—restores files to their original state after they have been compressed using the compress command |
|
| | uniq—reports on duplicate lines in a file |
|
| | units—converts quantities expressed in standard scales to other scales |
|
| | unpack—expands files created by pack |
|
| | uucp—copies files to another system, UNIX-to-UNIX system copy |
|
| | uuencode, uudecode—encodes a binary file into ASCII text in order to send it through e-mail, or converts it back into its original form |
|
| | wc—counts lines, words, and characters |
|
| | what—extracts SCCS version information from a file by printing information found after the @(#) pattern |
|
| | which—locates a command and displays its pathname or alias (UCB) |
|
| | whereis—locates the binary, source, and manual page files for a command (UCB) |
|
| | who—displays who is logged on the system |
|
| | write—writes a message to another user |
|
| | xargs—constructs an argument list(s) and executes a command |
|
| | zcat—uncompresses a compressed file to standard output; Same as uncompress –c |
|
| | zipinfo—lists detailed information about a ZIP archive |
|
| | zmore—file perusal filter for crt viewing of compressed text |
| |
Appendix B.
Comparison of the Shells |
|
| |
Section B.1.
The Shells Compared |
|
| |
Section B.2.
tcsh versus csh |
|
| |
Section B.3.
bash versus sh |
| |
CD-ROM Warranty |
| |
About the CD-ROM |
| | Index |