- 博客(0)
- 资源 (3)
- 收藏
- 关注
Linux程序设计(Beginning.Linux.Programming)
Linux程序设计(Beginning.Linux.Programming)
英文原版,清晰。
讲解的很细致,linux新手值得一看。
2012-10-29
Apress.Expert.Shell.Scripting
PART 1
■CHAPTER 1
■■■
Basic Scripting Techniques
Shell Script Debugging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3
Shell Trace Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
Simple Output Statements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
Controlling Output with Debug Levels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
Simplifying Error Checking with a Function . . . . . . . . . . . . . . . . . . . . . . . . . . 9
Manual Stepping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
■CHAPTER 2
Standard Function Library . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
13
The Library File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
Some Useful Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
Using Your Library . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
■CHAPTER 3
19
Date in Days . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Days Since Epoch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Alternatives for Finding the Date in Seconds . . . . . . . . . . . . . . . . . . .
Evaluating for the Current Day and Time . . . . . . . . . . . . . . . . . . . . . . . . . . .
■CHAPTER 4
Date and Time Manipulation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
20
22
22
Comparisons and Tests . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
The Basics of Comparisons. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
vii
viii
■C O N T E N T S
■CHAPTER 5
■CHAPTER 7
31
Testing Variables and Assigning Defaults . . . . . . . . . . . . . . . . 37
Setting Defaults. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Variable Substitution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
:= Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
= Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
:- Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
- Syntax. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
:? Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
? Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
:+ Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
+ Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
■CHAPTER 6
Accepting Command-Line Options, Switches, 37
and Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
39
40
40
40
41
41
42
42
Indirect Reference Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
Log File Monitoring with Indirect Variables . . . . . . . . . . . . . . . . . . . . . . . . . 43
The Main Monitor Loop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
■CHAPTER 8
Shell Process Tree . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
49
Process Tree Implemented Using Arrays . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
Process Tree Implemented Using Indirect Variables . . . . . . . . . . . . . . . . . 55
Bourne Shell Implementation of a Process Tree . . . . . . . . . . . . . . . . . . . . . 56
■CHAPTER 9
59
Avoiding Confusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Common Redirection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Access to User-Specified File Handles . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Descriptor Access from the Shell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
■CHAPTER 10
Data Redirection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
60
62
64
Piping Input to read
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
Line-by-Line Option 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
Line-by-Line Option 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
Line-by-Line Option 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
■C O N T E N T S
Line-by-Line Option 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
Pipe to read Directly . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
Process Input Word-by-Word . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
PART 2
■■■
■CHAPTER 11
System Interaction and Advanced
Techniques
Math from the Shell
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
expr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Internal Shell Math . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
bc. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
dc. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
■CHAPTER 12
75
76
78
78
cron . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
crontab Entries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
Environment Problems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
Output Redirection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
■CHAPTER 13 Self-Linked Scripts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
■CHAPTER 14 Throttling Parallel Processes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
Parallel Processing with ksh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
Parallel Processing with bash . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
■CHAPTER 15
Command-Line Editing and History
. . . . . . . . . . . . . . . . . . . . . . . 99
Setting Up vi Editing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
bash . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
ksh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Command and File Completion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
■CHAPTER 16
100
100
101
101
Scripting from the Command Line . . . . . . . . . . . . . . . . . . . . . . . . 103
A Few Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
ix
x
■C O N T E N T S
■CHAPTER 17
Automating User Input with expect
. . . . . . . . . . . . . . . . . . . . . . 107
A Shell Script to Customize Parameters for an expect Script . . . . . . . . . 108
An expect Script to Automate telnet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
■CHAPTER 18
User Input Timeout . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
115
Manual Timeout Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
Timeout Using stty . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
General Timeout Utility. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
■CHAPTER 19 Instant Keyboard Response . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
■CHAPTER 20 Directory Copying. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
Using cp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
Using tar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
Using find . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
Using rsync . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
A Brief Tour of the X Display Environment . . . . . . . . . . . . . . . 131
The Display . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
X Traffic Through ssh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133
X Applications Through a Third-Party System . . . . . . . . . . . . . . . . . . . . . . 133
User-Profile Entry . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
Root-Profile Entry . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
Throw a Temporary Root Window . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
X Navigation Window . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
■CHAPTER 21
■CHAPTER 22
Navigation Window Usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
Navigation Setup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142
Navigation Window . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145
■CHAPTER 23
Command-Line E-mail Attachments
. . . . . . . . . . . . . . . . . . . . . 151
uuencode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151
MIME Encoding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153
■C O N T E N T S
■CHAPTER 24
157
158
158
159
159
159
160
160
161
161
162
163
163
163
164
164
164
165
165
166
166
167
167
168
168
169
170
171
Editing Files in Place . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173
Simple Search and Replace with ed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Search and Replace Using ed, Dissected . . . . . . . . . . . . . . . . . . . . . . . . . .
Examples of ed Commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Escaping Special Characters in a File . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
■CHAPTER 26
157
Displaying Specific Fields . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Specifying the Field Separator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Simple Pattern-Matching . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Matching Fields Against Several Values . . . . . . . . . . . . . . . . . . . . . . . . . . .
Determining the Number of Fields . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Determining the Last Field . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Determining the Second-to-Last Field . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Passing Variables to awk. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Using a Variable Passed to awk in a Condition . . . . . . . . . . . . . . . . . . . . .
Displaying a Range of Fields (Main Method) . . . . . . . . . . . . . . . . . . . . . . .
Displaying a Range of Fields (Alternate Method). . . . . . . . . . . . . . . . . . . .
Determining the Length of a String Using awk . . . . . . . . . . . . . . . . . . . . .
Determining the Length of a String Using expr . . . . . . . . . . . . . . . . . . . . .
Displaying a Substring with awk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Displaying a Substring with expr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Conducting Simple Search and Replace with sed . . . . . . . . . . . . . . . . . .
Disregarding Blank and Commented Lines from a File . . . . . . . . . . . . . .
Conducting Dual Search and Replace with sed. . . . . . . . . . . . . . . . . . . . .
Filtering Lines with sed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Searching for Multiple Strings with egrep . . . . . . . . . . . . . . . . . . . . . . . . .
A Clean Method of Searching the Process Table . . . . . . . . . . . . . . . . . . .
Summing Columns Using awk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Generating Random Numbers Using awk. . . . . . . . . . . . . . . . . . . . . . . . . .
Generating Random Numbers from the Shell . . . . . . . . . . . . . . . . . . . . . .
Displaying Character-Based Fields with sed . . . . . . . . . . . . . . . . . . . . . . .
Escaping Special Characters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Returning Trailing Lines from a Pattern Match Using grep . . . . . . . . . . .
Returning Preceding Lines to a Pattern Match Using grep . . . . . . . . . . .
■CHAPTER 25
Text-Processing One-Liners . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174
174
175
178
Evaluating Variables in a Flat File . . . . . . . . . . . . . . . . . . . . . . . . 181
xi
xii
■C O N T E N T S
■CHAPTER 27 Read Piped Input ■CHAPTER 28 Free-Format Output Using cat . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185
■CHAPTER 29 Automating Interactive Processes . . . . . . . . . . . . . . . . . . . . . . . . 187
PART 3
■■■
■CHAPTER 30
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183
Useful Scripts
Automating E-mail with procmail . . . . . . . . . . . . . . . . . . . . . . . .
193
The .procmailrc File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194
Usage Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196
The Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196
■CHAPTER 31 Process-Management Monitor. . . . . . . . . . . . . . . . . . . . . . . . . . . . 201
■CHAPTER 32 Managing File Counts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211
File-Count Monitor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211
Testing File-Count Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213
■CHAPTER 33 Processes Running from inittab . . . . . . . . . . . . . . . . . . . . . . . . . . 215
■CHAPTER 34 Automatic RCS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219
■CHAPTER 35 Colorful /proc Reporting ■CHAPTER 36 Password-Aging Notification . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223
231
Script Initialization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232
Processing Begins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234
Determine Password Age . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236
■CHAPTER 37 A Pseudo–shadow File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241
■CHAPTER 38 Linux Gold-System Build . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245
■C O N T E N T S
■CHAPTER 39
System Snapshots . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251
Snapshot Script . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253
Snapshot Promotion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255
Creating the Latest Snapshot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258
Final Thoughts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258
■CHAPTER 40 Removing Large Files and Log Rolling . . . . . . . . . . . . . . . . . . . 261
■CHAPTER 41 Core Finder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265
■CHAPTER 42 Network Adapter Failover . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267
Check the Network . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 270
Switch the Interfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271
■APPENDIX A Test Switches . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273
■APPENDIX B Special Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275
■APPENDIX C Other Shell-Scripting Resources . . . . . . . . . . . . . . . . . . . . . . . . . 277
Manual Pages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277
Books . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277
Scripting Books . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278
Supplementary Books . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278
Shell Resources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278
Online Resources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279
■INDEX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281
2012-07-31
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人