| | 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 |