Synopses & Reviews
Shell scripting skills never go out of style. It's the shell that unlocks the real potential of Unix. Shell scripting is essential for Unix users and system administrators-a way to quickly harness and customize the full power of any Unix system. With shell scripts, you can combine the fundamental Unix text and file processing commands to crunch data and automate repetitive tasks. But beneath this simple promise lies a treacherous ocean of variations in Unix commands and standards. Classic Shell Scripting is written to help you reliably navigate these tricky waters.Writing shell scripts requires more than just a knowledge of the shell language, it also requires familiarity with the individual Unix programs: why each one is there, how to use them by themselves, and in combination with the other programs. The authors are intimately familiar with the tips and tricks that can be used to create excellent scripts, as well as the traps that can make your best effort a bad shell script. With Classic Shell Scripting you'll avoid hours of wasted effort. You'll learn not only write useful shell scripts, but how to do it properly and portably.The ability to program and customize the shell quickly, reliably, and portably to get the best out of any individual system is an important skill for anyone operating and maintaining Unix or Linux systems. Classic Shell Scripting gives you everything you need to master these essential skills.
A gentle, yet concise introduction to the technology and best practices.
About the Author
Arnold Robbins, an Atlanta native, is a professional programmer and technical author. He has worked with Unix systems since 1980, when he was introduced to a PDP-11 running a version of Sixth Edition Unix. He has been a heavy AWK user since 1987, when he became involved with gawk, the GNU project's version of AWK. As a member of the POSIX 1003.2 balloting group, he helped shape the POSIX standard for AWK. He is currently the maintainer of gawk and its documentation. He is also coauthor of the sixth edition of O'Reilly's Learning the vi Editor. Since late 1997, he and his family have been living happily in Israel.
Nelson Beebe is a long time Unix user and system administrator, and has helped for years on Usenet newsgroups.
Table of Contents
Foreword; Preface; Intended Audience; What You Should Already Know; Chapter Summary; Conventions Used in This Book; Code Examples; Unix Tools for Windows Systems; Safari Enabled; We'd Like to Hear from You; Acknowledgments; Chapter 1: Background; 1.1 Unix History; 1.2 Software Tools Principles; 1.3 Summary; Chapter 2: Getting Started; 2.1 Scripting Languages Versus Compiled Languages; 2.2 Why Use a Shell Script?; 2.3 A Simple Script; 2.4 Self-Contained Scripts: The #! First Line; 2.5 Basic Shell Constructs; 2.6 Accessing Shell Script Arguments; 2.7 Simple Execution Tracing; 2.8 Internationalization and Localization; 2.9 Summary; Chapter 3: Searching and Substitutions; 3.1 Searching for Text; 3.2 Regular Expressions; 3.3 Working with Fields; 3.4 Summary; Chapter 4: Text Processing Tools; 4.1 Sorting Text; 4.2 Removing Duplicates; 4.3 Reformatting Paragraphs; 4.4 Counting Lines, Words, and Characters; 4.5 Printing; 4.6 Extracting the First and Last Lines; 4.7 Summary; Chapter 5: Pipelines Can Do Amazing Things; 5.1 Extracting Data from Structured Text Files; 5.2 Structured Data for the Web; 5.3 Cheating at Word Puzzles; 5.4 Word Lists; 5.5 Tag Lists; 5.6 Summary; Chapter 6: Variables, Making Decisions, and Repeating Actions; 6.1 Variables and Arithmetic; 6.2 Exit Statuses; 6.3 The case Statement; 6.4 Looping; 6.5 Functions; 6.6 Summary; Chapter 7: Input and Output, Files, and Command Evaluation; 7.1 Standard Input, Output, and Error; 7.2 Reading Lines with read; 7.3 More About Redirections; 7.4 The Full Story on printf; 7.5 Tilde Expansion and Wildcards; 7.6 Command Substitution; 7.7 Quoting; 7.8 Evaluation Order and eval; 7.9 Built-in Commands; 7.10 Summary; Chapter 8: Production Scripts; 8.1 Path Searching; 8.2 Automating Software Builds; 8.3 Summary; Chapter 9: Enough awk to Be Dangerous; 9.1 The awk Command Line; 9.2 The awk Programming Model; 9.3 Program Elements; 9.4 Records and Fields; 9.5 Patterns and Actions; 9.6 One-Line Programs in awk; 9.7 Statements; 9.8 User-Defined Functions; 9.9 String Functions; 9.10 Numeric Functions; 9.11 Summary; Chapter 10: Working with Files; 10.1 Listing Files; 10.2 Updating Modification Times with touch; 10.3 Creating and Using Temporary Files; 10.4 Finding Files; 10.5 Running Commands: xargs; 10.6 Filesystem Space Information; 10.7 Comparing Files; 10.8 Summary; Chapter 11: Extended Example: Merging User Databases; 11.1 The Problem; 11.2 The Password Files; 11.3 Merging Password Files; 11.4 Changing File Ownership; 11.5 Other Real-World Issues; 11.6 Summary; Chapter 12: Spellchecking; 12.1 The spell Program; 12.2 The Original Unix Spellchecking Prototype; 12.3 Improving ispell and aspell; 12.4 A Spellchecker in awk; 12.5 Summary; Chapter 13: Processes; 13.1 Process Creation; 13.2 Process Listing; 13.3 Process Control and Deletion; 13.4 Process System-Call Tracing; 13.5 Process Accounting; 13.6 Delayed Scheduling of Processes; 13.7 The /proc Filesystem; 13.8 Summary; Chapter 14: Shell Portability Issues and Extensions; 14.1 Gotchas; 14.2 The bash shopt Command; 14.3 Common Extensions; 14.4 Download Information; 14.5 Other Extended Bourne-Style Shells; 14.6 Shell Versions; 14.7 Shell Initialization and Termination; 14.8 Summary; Chapter 15: Secure Shell Scripts: Getting Started; 15.1 Tips for Secure Shell Scripts; 15.2 Restricted Shell; 15.3 Trojan Horses; 15.4 Setuid Shell Scripts: A Bad Idea; 15.5 ksh93 and Privileged Mode; 15.6 Summary; Appendix A: Writing Manual Pages; A.1 Manual Pages for pathfind; A.2 Manual-Page Syntax Checking; A.3 Manual-Page Format Conversion; A.4 Manual-Page Installation; Appendix B: Files and Filesystems; B.1 What Is a File?; B.2 How Are Files Named?; B.3 What's in a Unix File?; B.4 The Unix Hierarchical Filesystem; B.5 How Big Can Unix Files Be?; B.6 Unix File Attributes; B.7 Unix File Ownership and Privacy Issues; B.8 Unix File Extension Conventions; B.9 Summary; Appendix C: Important Unix Commands; C.1 Shells and Built-in Commands; C.2 Text Manipulation; C.3 Files; C.4 Processes; C.5 Miscellaneous Programs; Chapter 16: Bibliography; 16.1 Unix Programmer's Manuals; 16.2 Programming with the Unix Mindset; 16.3 Awk and Shell; 16.4 Standards; 16.5 Security and Cryptography; 16.6 Unix Internals; 16.7 O'Reilly Books; 16.8 Miscellaneous Books; Colophon;