Statistics
13
Views
0
Downloads
0
Donations
Uploader

高宏飞

Shared on 2025-12-21
Support
Share

AuthorArnold Robbins, Nelson H.F. Beebe

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.

Tags
No tags
ISBN: 0596005954
Publisher: O'Reilly Media
Publish Year: 2005
Language: 英文
Pages: 560
File Format: PDF
File Size: 7.4 MB
Support Statistics
¥.00 · 0times
Text Preview (First 20 pages)
Registered users can read the full content for free

Register as a Gaohf Library member to read the complete e-book online for free and enjoy a better reading experience.

(This page has no text content)
(This page has no text content)
Classic Shell Scripting Arnold Robbins and Nelson H. F. Beebe Beijing • Cambridge • Farnham • Köln • Sebastopol • Tokyo
Classic Shell Scripting by Arnold Robbins and Nelson H. F. Beebe Copyright © 2005 O’Reilly Media, Inc. All rights reserved. Printed in the United States of America. Published by O’Reilly Media, Inc., 1005 Gravenstein Highway North, Sebastopol, CA 95472. O’Reilly books may be purchased for educational, business, or sales promotional use. Online editions are also available for most titles (safari.oreilly.com). For more information, contact our corporate/insti- tutional sales department: (800) 998-9938 or corporate@oreilly.com. Editors: Tatiana Apandi Allison Randal Production Editor: Adam Witwer Cover Designer: Emma Colby Interior Designer: David Futato Printing History: May 2005: First Edition. Nutshell Handbook, the Nutshell Handbook logo, and the O’Reilly logo are registered trademarks of O’Reilly Media, Inc. Classic Shell Scripting, the image of a African tent tortoise, and related trade dress are trademarks of O’Reilly Media, Inc. Many of the designations used by manufacturers and sellers to distinguish their products are claimed as trademarks. Where those designations appear in this book, and O’Reilly Media, Inc. was aware of a trademark claim, the designations have been printed in caps or initial caps. While every precaution has been taken in the preparation of this book, the publisher and authors assume no responsibility for errors or omissions, or for damages resulting from the use of the information contained herein. ISBN: 978-0-596-00595-5 [LSI] [2011-03-11]
iii Table of Contents Foreword . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ix Preface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xi 1. Background . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1.1 Unix History 1 1.2 Software Tools Principles 4 1.3 Summary 6 2. Getting Started . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 2.1 Scripting Languages Versus Compiled Languages 8 2.2 Why Use a Shell Script? 9 2.3 A Simple Script 9 2.4 Self-Contained Scripts: The #! First Line 10 2.5 Basic Shell Constructs 12 2.6 Accessing Shell Script Arguments 23 2.7 Simple Execution Tracing 24 2.8 Internationalization and Localization 25 2.9 Summary 28 3. Searching and Substitutions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 3.1 Searching for Text 30 3.2 Regular Expressions 31 3.3 Working with Fields 56 3.4 Summary 65
iv | Table of Contents 4. Text Processing Tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 4.1 Sorting Text 67 4.2 Removing Duplicates 75 4.3 Reformatting Paragraphs 76 4.4 Counting Lines, Words, and Characters 77 4.5 Printing 78 4.6 Extracting the First and Last Lines 83 4.7 Summary 86 5. Pipelines Can Do Amazing Things . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87 5.1 Extracting Data from Structured Text Files 87 5.2 Structured Data for the Web 94 5.3 Cheating at Word Puzzles 100 5.4 Word Lists 102 5.5 Tag Lists 105 5.6 Summary 107 6. Variables, Making Decisions, and Repeating Actions . . . . . . . . . . . . . . . . . . 109 6.1 Variables and Arithmetic 109 6.2 Exit Statuses 120 6.3 The case Statement 129 6.4 Looping 130 6.5 Functions 135 6.6 Summary 138 7. Input and Output, Files, and Command Evaluation . . . . . . . . . . . . . . . . . . . . 140 7.1 Standard Input, Output, and Error 140 7.2 Reading Lines with read 140 7.3 More About Redirections 143 7.4 The Full Story on printf 147 7.5 Tilde Expansion and Wildcards 152 7.6 Command Substitution 155 7.7 Quoting 161 7.8 Evaluation Order and eval 162 7.9 Built-in Commands 168 7.10 Summary 175
Table of Contents | v 8. Production Scripts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177 8.1 Path Searching 177 8.2 Automating Software Builds 192 8.3 Summary 222 9. Enough awk to Be Dangerous . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223 9.1 The awk Command Line 224 9.2 The awk Programming Model 225 9.3 Program Elements 226 9.4 Records and Fields 236 9.5 Patterns and Actions 238 9.6 One-Line Programs in awk 240 9.7 Statements 244 9.8 User-Defined Functions 252 9.9 String Functions 255 9.10 Numeric Functions 264 9.11 Summary 266 10. Working with Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267 10.1 Listing Files 267 10.2 Updating Modification Times with touch 273 10.3 Creating and Using Temporary Files 274 10.4 Finding Files 279 10.5 Running Commands: xargs 293 10.6 Filesystem Space Information 295 10.7 Comparing Files 299 10.8 Summary 307 11. Extended Example: Merging User Databases . . . . . . . . . . . . . . . . . . . . . . . . . 308 11.1 The Problem 308 11.2 The Password Files 309 11.3 Merging Password Files 310 11.4 Changing File Ownership 317 11.5 Other Real-World Issues 321 11.6 Summary 323
vi | Table of Contents 12. Spellchecking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 325 12.1 The spell Program 325 12.2 The Original Unix Spellchecking Prototype 326 12.3 Improving ispell and aspell 327 12.4 A Spellchecker in awk 331 12.5 Summary 350 13. Processes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 352 13.1 Process Creation 353 13.2 Process Listing 354 13.3 Process Control and Deletion 360 13.4 Process System-Call Tracing 368 13.5 Process Accounting 372 13.6 Delayed Scheduling of Processes 373 13.7 The /proc Filesystem 378 13.8 Summary 379 14. Shell Portability Issues and Extensions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 381 14.1 Gotchas 381 14.2 The bash shopt Command 385 14.3 Common Extensions 389 14.4 Download Information 402 14.5 Other Extended Bourne-Style Shells 405 14.6 Shell Versions 405 14.7 Shell Initialization and Termination 406 14.8 Summary 412 15. Secure Shell Scripts: Getting Started . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 413 15.1 Tips for Secure Shell Scripts 413 15.2 Restricted Shell 416 15.3 Trojan Horses 418 15.4 Setuid Shell Scripts: A Bad Idea 419 15.5 ksh93 and Privileged Mode 421 15.6 Summary 422
Table of Contents | vii A. Writing Manual Pages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 423 B. Files and Filesystems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 437 C. Important Unix Commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 473 Bibliography . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 478 Glossary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 484 Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 509
(This page has no text content)
This is the Title of the Book, eMatter Edition ix Foreword Surely I haven’t been doing shell scripting for 30 years?!? Well, now that I think about it, I suppose I have, although it was only in a small way at first. (The early Unix shells, before the Bourne shell, were very primitive by modern standards, and writing substantial scripts was difficult. Fortunately, things quickly got better.) In recent years, the shell has been neglected and underappreciated as a scripting lan- guage. But even though it was Unix’s first scripting language, it’s still one of the best. Its combination of extensibility and efficiency remains unique, and the improve- ments made to it over the years have kept it highly competitive with other scripting languages that have gotten a lot more hype. GUIs are more fashionable than com- mand-line shells as user interfaces these days, but scripting languages often provide most of the underpinnings for the fancy screen graphics, and the shell continues to excel in that role. The shell’s dependence on other programs to do most of the work is arguably a defect, but also inarguably a strength: you get the concise notation of a scripting lan- guage plus the speed and efficiency of programs written in C (etc.). Using a com- mon, general-purpose data representation—lines of text—in a large (and extensible) set of tools lets the scripting language plug the tools together in endless combina- tions. The result is far more flexibility and power than any monolithic software pack- age with a built-in menu item for (supposedly) everything you might want. The early success of the shell in taking this approach reinforced the developing Unix philoso- phy of building specialized, single-purpose tools and plugging them together to do the job. The philosophy in turn encouraged improvements in the shell to allow doing more jobs that way. Shell scripts also have an advantage over C programs—and over some of the other scripting languages too (naming no names!)—of generally being fairly easy to read and modify. Even people who are not C programmers, like a good many system administrators these days, typically feel comfortable with shell scripts. This makes shell scripting very important for extending user environments and for customizing software packages.
This is the Title of the Book, eMatter Edition x | Foreword Indeed, there’s a “wheel of reincarnation” here, which I’ve seen on several software projects. The project puts simple shell scripts in key places, to make it easy for users to customize aspects of the software. However, it’s so much easier for the project to solve problems by working in those shell scripts than in the surrounding C code, that the scripts steadily get more complicated. Eventually they are too complicated for the users to cope with easily (some of the scripts we wrote in the C News project were notorious as stress tests for shells, never mind users!), and a new set of scripts has to be provided for user customization… For a long time, there’s been a conspicuous lack of a good book on shell scripting. Books on the Unix programming environment have touched on it, but only briefly, as one of several topics, and the better books are long out-of-date. There’s reference documentation for the various shells, but what’s wanted is a novice-friendly tutorial, covering the tools as well as the shell, introducing the concepts gently, offering advice on how to get the best results, and paying attention to practical issues like readability. Preferably, it should also discuss how the various shells differ, instead of trying to pretend that only one exists. This book delivers all that, and more. Here, at last, is an up-to-date and painless introduction to the first and best of the Unix scripting languages. It’s illustrated with realistic examples that make useful tools in their own right. It covers the standard Unix tools well enough to get people started with them (and to make a useful refer- ence for those who find the manual pages a bit forbidding). I’m particularly pleased to see it including basic coverage of awk, a highly useful and unfairly neglected tool which excels in bridging gaps between other tools and in doing small programming jobs easily and concisely. I recommend this book to anyone doing shell scripting or administering Unix- derived systems. I learned things from it; I think you will too. —Henry Spencer SP Systems
This is the Title of the Book, eMatter Edition Copyright © 2011 O’Reilly & Associates, Inc. All rights reserved. xi Preface The user or programmer new to Unix* is suddenly faced with a bewildering variety of programs, each of which often has multiple options. Questions such as “What pur- pose do they serve?” and “How do I use them?” spring to mind. This book’s job is to answer those questions. It teaches you how to combine the Unix tools, together with the standard shell, to get your job done. This is the art of shell scripting. Shell scripting requires not just a knowledge of the shell language, but also a knowledge of the individual Unix programs: why each one is there, and how to use them by themselves and in combination with the other programs. Why should you learn shell scripting? Because often, medium-size to large problems can be decomposed into smaller pieces, each of which is amenable to being solved with one of the Unix tools. A shell script, when done well, can often solve a problem in a mere fraction of the time it would take to solve the same problem using a con- ventional programming language such as C or C++. It is also possible to make shell scripts portable—i.e., usable across a range of Unix and POSIX-compliant systems, with little or no modification. When talking about Unix programs, we use the term tools deliberately. The Unix toolbox approach to problem solving has long been known as the “Software Tools” philosophy.† A long-standing analogy summarizes this approach to problem solving. A Swiss Army knife is a useful thing to carry around in one’s pocket. It has several blades, a screwdriver, a can opener, a toothpick, and so on. Larger models include more tools, such as a corkscrew or magnifying glass. However, there’s only so much you can do with a Swiss Army knife. While it might be great for whittling or simple carving, you * Throughout this book, we use the term Unix to mean not only commercial variants of the original Unix sys- tem, such as Solaris, Mac OS X, and HP-UX, but also the freely available workalike systems, such as GNU/ Linux and the various BSD systems: BSD/OS, NetBSD, FreeBSD, and OpenBSD. † This approach was popularized by the book Software Tools (Addison-Wesley).
This is the Title of the Book, eMatter Edition Copyright © 2011 O’Reilly & Associates, Inc. All rights reserved. xii | Preface wouldn’t use it, for example, to build a dog house or bird feeder. Instead, you would move on to using specialized tools, such as a hammer, saw, clamp, or planer. So too, when solving programming problems, it’s better to use specialized software tools. Intended Audience This book is intended for computer users and software developers who find them- selves in a Unix environment, with a need to write shell scripts. For example, you may be a computer science student, with your first account on your school’s Unix system, and you want to learn about the things you can do under Unix that your Windows PC just can’t handle. (In such a case, it’s likely you’ll write multiple scripts to customize your environment.) Or, you may be a new system administrator, with the need to write specialized programs for your company or school. (Log manage- ment and billing and accounting come to mind.) You may even be an experienced Mac OS developer moving into the brave new world of Mac OS X, where installa- tion programs are written as shell scripts. Whoever you are, if you want to learn about shell scripting, this book is for you. In this book, you will learn: Software tool design concepts and principles A number of principles guide the design and implementation of good software tools. We’ll explain those principles to you and show them to you in use throughout the book. What the Unix tools are A core set of Unix tools are used over and over again when shell scripting. We cover the basics of the shell and regular expressions, and present each core tool within the context of a particular kind of problem. Besides covering what the tools do, for each tool we show you why it exists and why it has particular options. Learning Unix is an introduction to Unix systems, serving as a primer to bring someone with no Unix experience up to speed as a basic user. By contrast, Unix in a Nutshell covers the broad swath of Unix utilities, with little or no guidance as to when and how to use a particular tool. Our goal is to bridge the gap between these two books: we teach you how to exploit the facilities your Unix system offers you to get your job done quickly, effectively, and (we hope) elegantly. How to combine the tools to get your job done In shell scripting, it really is true that “the whole is greater than the sum of its parts.” By using the shell as “glue” to combine individual tools, you can accom- plish some amazing things, with little effort. About popular extensions to standard tools If you are using a GNU/Linux or BSD-derived system, it is quite likely that your tools have additional, useful features and/or options. We cover those as well.
This is the Title of the Book, eMatter Edition Copyright © 2011 O’Reilly & Associates, Inc. All rights reserved. Preface | xiii About indispensable nonstandard tools Some programs are not “standard” on most traditional Unix systems, but are nevertheless too useful to do without. Where appropriate, these are covered as well, including information about where to get them. For longtime Unix developers and administrators, the software tools philosophy is nothing new. However, the books that popularized it, while still being worthwhile reading, are all on the order of 20 years old, or older! Unix systems have changed since these books were written, in a variety of ways. Thus, we felt it was time for an updated presentation of these ideas, using modern versions of the tools and current systems for our examples. Here are the highlights of our approach: • Our presentation is POSIX-based. “POSIX” is the short name for a series of for- mal standards describing a portable operating system environment, at the pro- grammatic level (C, C++, Ada, Fortran) and at the level of the shell and utilities. The POSIX standards have been largely successful at giving developers a fight- ing chance at making both their programs and their shell scripts portable across a range of systems from different vendors. We present the shell language, and each tool and its most useful options, as described in the most recent POSIX standard. The official name for the standard is IEEE Std. 1003.1–2001.* This standard includes several optional parts, the most important of which are the X/Open Sys- tem Interface (XSI) specifications. These features document a fuller range of his- torical Unix system behaviors. Where it’s important, we’ll note changes between the current standard and the earlier 1992 standard, and also mention XSI-related features. A good starting place for Unix-related standards is http://www.unix.org/.† The home page for the Single UNIX Specification is http://www.unix.org/ version3/. Online access to the current standard is available, but requires regis- tration at http://www.unix.org/version3/online.html. Occasionally, the standard leaves a particular behavior as “unspecified.” This is done on purpose, to allow vendors to support historical behavior as extensions, i.e., additional features above and beyond those documented within the standard itself. • Besides just telling you how to run a particular program, we place an emphasis on why the program exists and on what problem it solves. Knowing why a pro- gram was written helps you better understand when and how to use it. • Many Unix programs have a bewildering array of options. Usually, some of these options are more useful for day-to-day problem solving than others are. For each * A 2004 edition of the standard was published after this book’s text was finalized. For purposes of learning about shell scripting, the differences between the 2001 and 2004 standard don’t matter. † A technical frequently asked questions (FAQ) file about IEEE Std. 1003.1–2001 may be found at http://www. opengroup.org/austin/papers/posix_faq.html. Some background on the standard is at http://www.opengroup. org/austin/papers/backgrounder.html.
This is the Title of the Book, eMatter Edition Copyright © 2011 O’Reilly & Associates, Inc. All rights reserved. xiv | Preface program, we tell you which options are the most useful. In fact, we typically do not cover all the options that individual programs have, leaving that task to the program’s manual page, or to other reference books, such as Unix in a Nutshell (O’Reilly) and Linux in a Nutshell (O’Reilly). By the time you’ve finished this book, you should not only understand the Unix toolset, but also have internalized the Unix mindset and the Software Tools philosophy. What You Should Already Know You should already know the following things: • How to log in to your Unix system • How to run programs at the command line • How to make simple pipelines of commands and use simple I/O redirectors, such as < and > • How to put jobs in the background with & • How to create and edit files • How to make scripts executable, using chmod Furthermore, if you’re trying to work the examples here by typing commands at your terminal (or, more likely, terminal emulator) we recommend the use of a POSIX- compliant shell such as a recent version of ksh93, or the current version of bash. In particular, /bin/sh on commercial Unix systems may not be fully POSIX-compliant. Chapter 14 provides Internet download URLs for ksh93, bash, and zsh. Chapter Summary We recommend reading the book in order, as each chapter builds upon the concepts and material covered in the chapters preceding it. Here is a chapter-by-chapter sum- mary: Chapter 1, Background Here we provide a brief history of Unix. In particular, the computing environ- ment at Bell Labs where Unix was developed motivated much of the Software Tools philosophy. This chapter also presents the principles for good Software Tools that are then expanded upon throughout the rest of the book. Chapter 2, Getting Started This chapter starts off the discussion. It begins by describing compiled lan- guages and scripting languages, and the tradeoffs between them. Then it moves on, covering the very basics of shell scripting with two simple but useful shell scripts. The coverage includes commands, options, arguments, shell variables,
This is the Title of the Book, eMatter Edition Copyright © 2011 O’Reilly & Associates, Inc. All rights reserved. Preface | xv output with echo and printf, basic I/O redirection, command searching, access- ing arguments from within a script, and execution tracing. It closes with a look at internationalization and localization; issues that are increasingly important in today’s “global village.” Chapter 3, Searching and Substitutions Here we introduce text searching (or “matching”) with regular expressions. We also cover making changes and extracting text. These are fundamental opera- tions that form the basis of much shell scripting. Chapter 4, Text Processing Tools In this chapter we describe a number of the text processing software tools that are used over and over again when shell scripting. Two of the most important tools presented here are sort and uniq, which serve as powerful ways to orga- nize and reduce data. This chapter also looks at reformatting paragraphs, count- ing text units, printing files, and retrieving the first or last lines of a file. Chapter 5, Pipelines Can Do Amazing Things This chapter shows several small scripts that demonstrate combining simple Unix utilities to make more powerful, and importantly, more flexible tools. This chapter is largely a cookbook of problem statements and solutions, whose com- mon theme is that all the solutions are composed of linear pipelines. Chapter 6, Variables, Making Decisions, and Repeating Actions This is the first of two chapters that cover the rest of the essentials of the shell language. This chapter looks at shell variables and arithmetic, the important concept of an exit status, and how decision making and loops are done in the shell. It rounds off with a discussion of shell functions. Chapter 7, Input and Output, Files, and Command Evaluation This chapter completes the description of the shell, focusing on input/output, the various substitutions that the shell performs, quoting, command-line evalua- tion order, and shell built-in commands. Chapter 8, Production Scripts Here we demonstrate combinations of Unix tools to carry out more complex text processing jobs. The programs in this chapter are larger than those in Chapter 5, but they are still short enough to digest in a few minutes. Yet they accomplish tasks that are quite hard to do in conventional programming lan- guages such as C, C++, or Java™. Chapter 9, Enough awk to Be Dangerous This chapter describes the essentials of the awk language. awk is a powerful lan- guage in its own right. However, simple, and sometimes, not so simple, awk pro- grams can be used with other programs in the software toolbox for easy data extraction, manipulation, and formatting.
This is the Title of the Book, eMatter Edition Copyright © 2011 O’Reilly & Associates, Inc. All rights reserved. xvi | Preface Chapter 10, Working with Files This chapter introduces the primary tools for working with files. It covers listing files, making temporary files, and the all-important find command for finding files that meet specific criteria. It looks at two important commands for dealing with disk space utilization, and then discusses different programs for comparing files. Chapter 11, Extended Example: Merging User Databases Here we tie things together by solving an interesting and moderately challenging task. Chapter 12, Spellchecking This chapter uses the problem of doing spellchecking to show how it can be solved in different ways. It presents the original Unix shell script pipeline, as well as two small scripts to make the freely available ispell and aspell commands more usable for batch spellchecking. It closes off with a reasonably sized yet powerful spellchecking program written in awk, which nicely demonstrates the elegance of that language. Chapter 13, Processes This chapter moves out of the realm of text processing and into the realm of job and system management. There are a small number of essential utilities for man- aging processes. In addition, this chapter covers the sleep command, which is useful in scripts for waiting for something to happen, as well as other standard tools for delayed or fixed-time-of-day command processing. Importantly, the chapter also covers the trap command, which gives shell scripts control over Unix signals. Chapter 14, Shell Portability Issues and Extensions Here we describe some of the more useful extensions available in both ksh and bash that aren’t in POSIX. In many cases, you can safely use these extensions in your scripts. The chapter also looks at a number of “gotchas” waiting to trap the unwary shell script author. It covers issues involved when writing scripts, and possible implementation variances. Furthermore, it covers download and build information for ksh and bash. It finishes up by discussing shell initialization and termination, which differ among different shell implementations. Chapter 15, Secure Shell Scripts: Getting Started In this chapter we provide a cursory introduction to shell scripting security issues. Appendix A, Writing Manual Pages This chapter describes how to write a manual page. This necessary skill is usu- ally neglected in typical Unix books. Appendix B, Files and Filesystems Here we describe the Unix byte-stream filesystem model, contrasting it with more complex historical filesystems and explaining why this simplicity is a virtue.
This is the Title of the Book, eMatter Edition Copyright © 2011 O’Reilly & Associates, Inc. All rights reserved. Preface | xvii Appendix C, Important Unix Commands This chapter provides several lists of Unix commands. We recommend that you learn these commands and what they do to improve your skills as a Unix developer. Bibliography Here we list further sources of information about shell scripting with Unix. Glossary The Glossary provides definitions for the important terms and concepts intro- duced in this book. Conventions Used in This Book We leave it as understood that, when you enter a shell command, you press Enter at the end. Enter is labeled Return on some keyboards. Characters called Ctrl-X, where X is any letter, are entered by holding down the Ctrl (or Ctl, or Control) key and then pressing that letter. Although we give the letter in uppercase, you can press the letter without the Shift key. Other special characters are newline (which is the same as Ctrl-J), Backspace (the same as Ctrl-H), Esc, Tab, and Del (sometimes labeled Delete or Rubout). This book uses the following font conventions: Italic Italic is used in the text for emphasis, to highlight special terms the first time they are defined, for electronic mail addresses and Internet URLs, and in man- ual page citations. It is also used when discussing dummy parameters that should be replaced with an actual value, and to provide commentary in examples. Constant Width This is used when discussing Unix filenames, external and built-in commands, and command options. It is also used for variable names and shell keywords, options, and functions; for filename suffixes; and in examples to show the con- tents of files or the output from commands, as well as for command lines or sample input when they are within regular text. In short, anything related to computer usage is in this font. Constant Width Bold This is used in the text to distinguish regular expressions and shell wildcard pat- terns from the text to be matched. It is also used in examples to show interaction between the user and the shell; any text the user types in is shown in Constant Width Bold. For example: $ pwd User typed this /home/tolstoy/novels/w+p System printed this $
This is the Title of the Book, eMatter Edition Copyright © 2011 O’Reilly & Associates, Inc. All rights reserved. xviii | Preface Constant Width Italic This is used in the text and in example command lines for dummy parameters that should be replaced with an actual value. For example: $ cd directory This icon indicates a tip, suggestion, or general note. This icon indicates a warning or caution. References to entries in the Unix User’s Manual are written using the standard style: name(N), where name is the command name and N is the section number (usually 1) where the information is to be found. For example, grep(1) means the manpage for grep in section 1. The reference documentation is referred to as the “man page,” or just “manpage” for short. We refer both to Unix system calls and C library functions like this: open( ), printf( ). You can see the manpage for either kind of call by using the man command: $ man open Look at open(2) manpage $ man printf Look at printf(3) manpage When programs are introduced, a sidebar, such as shown nearby, describes the tool as well as its significant options, usage, and purpose. Example Usage whizprog [ options … ] [ arguments … ] This section shows how to run the command, here named whizprog. Purpose This section describes why the program exists. Major options This section lists the options that are important for everyday use of the program under discussion. Behavior This section summarizes what the program does. Caveats If there’s anything to be careful of, it’s mentioned here.
The above is a preview of the first 20 pages. Register to read the complete e-book.