最近在做一些关于图像处理方面的问题,用到了python中的PIL库对图像进行保存,代码如下
GroundImg = Image.new('RGBA', (picture_width, picture_height), 0)
GroundImg.save(save_path)
这个代码执行时遇到了以下问题:
fp = builtins.open(filename, “w+b“)FileNotFoundError: [Errno 2] No such file or directory:
查了挺多资料发现是因为:
PIL保存图片时,如果代码里的目录不存在,PIL不会创建目录,也不会主动抛出异常
将代码改为这样就可以正常运行啦
if not os.path.exists(save_path):
os.makedirs(save_path)
GroundImg = Image.new('RGBA', (picture_width, picture_height), 0)
GroundImg.save(save_path)
解决fp = builtins.open(filename, “w+b“)FileNotFoundError: [Errno 2] No such file or directory:
解决fp = builtins.open(filename, “w+b“)FileNotFoundError: [Errno 2] No such file or directory:
FileNotFoundError: [Errno 2] No such file or directory: ‘./mnist_image_label/mnist_train_jpg_6000028755_0.jpg’
在tensorflow中读取文件报错
Traceback (most recent call last):
File "Tensorflow/Test/9-26 mnist_train_ex1.py", line 43, in <module>
x_train,y_
获取当前Node.js版本的核心模块列表:
var builtins = require ( 'builtins' ) ( )
assert ( builtins . indexOf ( 'http' ) > - 1 )
获取特定Node.js版本的核心模块列表:
var builtins = require ( 'builtins' ) ( { version : '6.0.0' } )
assert ( builtins . indexOf ( 'http' ) > - 1 )
将实验模块添加到列表中:
var builtins = require ( 'builtins' ) ( { experimental : true } )
assert ( builtins . indexOf ( 'wasi' ) > - 1 )
麻省理工学
用于Web(HTML + SVG)的ReactDream内置组件
该库包含Web的全套ReactDream内置组件,包括SVG组件和HTML组件。
这是的配套库, 是React组件的Fantasy Land类型。
yarn add react-dream-web-builtins
然后是ReactDream本身的一些peerDependencies:
yarn add react recompose
import { Html , Svg } from 'react-dream-web-builtins'
import { render } from 'react-dom'
const withChildren =
const Title = Html . H1
. contramap ( ( ) => ( {
children : 'Title'
FileNotFoundError: [Errno 2] No such file or directory:'dataset//hymenoptera_data//train//ants//9715481_b3cb4114ff.jpg'
一开始以为是解析路径的问题,首先查找后确认文件存在
根据网上的解决办法:前面加r,也就是下面的代码。但是在我这个程序中依然报同样的错误,
image_path = r'dataset/hymenoptera_d..
About the Author . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .xv
About the Technical Reviewer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xvii
Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .xix
ChaPter 1
introduction to Shell Scripting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1
About This Book . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1
Conventions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2
What Shell Scripting Is . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3
What Shell Scripting Isn’t . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .5
Why Shell? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .6
The Bourne Shell Family . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .7
Why Portable? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .8
Why Not? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .9
Beyond Portability: Cleanliness and Good Living . . . . . . . . . . . . . . . .10
What’s in This Book . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .11
Introducing the Shell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .11
Interactive and Noninteractive Usage . . . . . . . . . . . . . . . . . . . . . . . . . .11
Simple Commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .12
Introducing Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .14
Introducing Quoting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .15
The printf Command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .18
What’s Next? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .20
ChaPter 2
Patterns and regular expressions . . . . . . . . . . . . . . . . . . . . . . . . .21
Shell Patterns . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .21
Pattern-Matching Basics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .22
Character Classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .24
Using Shell Patterns . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .26
Pathname Expansion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .27
Differences from Shell Patterns . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .27
Using Globs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .30
10436fmfinal 7
10/23/08 10:40:25 PM
■CONTENTS
Regular Expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .31
Basic Regular Expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .32
Backreferences . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .33
Extended Regular Expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .34
Common Extensions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .36
Replacements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .36
Using Regular Expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .37
Replacing Patterns with Regular Expressions . . . . . . . . . . . . . . . . . . .39
Common Pitfalls of Regular Expressions . . . . . . . . . . . . . . . . . . . . . . .40
What’s Next? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .41
ChaPter 3
Basic Shell Scripting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .43
Introducing Control Structures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .43
What Is Truth? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .44
Introducing Conditional Execution . . . . . . . . . . . . . . . . . . . . . . . . . . . . .47
Introducing Iteration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .52
Thinking About Control Structures . . . . . . . . . . . . . . . . . . . . . . . . . . . .55
Introducing Redirection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .56
Understanding File Descriptors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .57
Redirection Using exec . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .61
Introducing Here Documents . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .64
Redirection and Loops . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .66
What’s Next? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .68
ChaPter 4
Core Shell Features explained . . . . . . . . . . . . . . . . . . . . . . . . . . . . .69
Parsing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .70
Tokens . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .70
Words and Keywords . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .72
Command Lists . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .73
Shell Quoting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .77
Escaping Characters with a Backslash . . . . . . . . . . . . . . . . . . . . . . . .77
Escaping Characters with Single Quotes . . . . . . . . . . . . . . . . . . . . . . .79
Escaping Characters with Double Quotes . . . . . . . . . . . . . . . . . . . . . .79
Quoting Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .79
10436fmfinal 8
10/23/08 10:40:26 PM
■CONTENTS
Substitution and Expansion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .80
Substitution and Field Splitting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .80
Understanding Parameter Substitution . . . . . . . . . . . . . . . . . . . . . . . .81
Tilde Expansion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .85
Globbing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .86
What’s Next? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .87
ChaPter 5
Shells Within Shells . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .89
Understanding Processes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .89
Variables and the Environment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .90
Manipulating the Environment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .91
Temporary Changes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .92
Exploring Subshells . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .94
Subshells and External Shells . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .94
Command Substitution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .95
Implicit and Explicit Subshells . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .97
Modifying the State of the Shell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .99
Shell Builtins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .99
Shell Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .99
The eval Command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .102
The dot ( .) Command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .108
Using Shells Within Shells . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .109
When to Use an External Shell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .109
When to Use eval or dot ( .) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .111
When to Use Subshells . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .111
When to Use Command Substitution . . . . . . . . . . . . . . . . . . . . . . . . .112
Combinations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .113
What’s Next? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .115
ChaPter 6
invocation and execution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .117
Shell Invocation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .117
How UNIX Runs Scripts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .117
Shell Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .119
Using Positional Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .120
Manipulating Parameters for Fun and Profit . . . . . . . . . . . . . . . . . . .122
Shell Startup and Interactive Sessions . . . . . . . . . . . . . . . . . . . . . . . .128
10436fmfinal 9
10/23/08 10:40:26 PM
■CONTENTS
Execution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .129
More on Jobs and Tasks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .129
Understanding Runtime Behavior . . . . . . . . . . . . . . . . . . . . . . . . . . . .137
Debugging Tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .142
What’s Next? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .143
ChaPter 7
Shell Language Portability . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .145
More on Portability . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .145
Standardization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .146
Bugs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .147
Portability Issues: Welcome to the Club . . . . . . . . . . . . . . . . . . . . . . .147
Common Extensions and Omissions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .148
Other Kinds of Expansion and Substitution . . . . . . . . . . . . . . . . . . . .148
Syntax Extensions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .154
Common Omissions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .158
Common Shells and Their Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .158
Almquist Shell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .158
Bourne-Again Shell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .159
Debian Almquist Shell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .160
Korn Shell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .161
Public Domain Korn Shell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .162
Solaris /usr/xpg4/bin/sh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .163
SVR2 Bourne Shell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .164
SVR4 Bourne Shell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .164
Traditional Shell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .165
Z Shell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .166
Execution Preambles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .167
Setting Options and Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .168
Picking a Better Shell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .169
Self-Modifying Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .170
Emulating Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .172
What’s Next? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .174
10436fmfinal 10
10/23/08 10:40:27 PM
■CONTENTS
ChaPter 8
Utility Portability . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .175
Common Variations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .175
Days of Yore: System V and BSD . . . . . . . . . . . . . . . . . . . . . . . . . . . .176
GNU Arrives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .177
Standardization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .178
busybox . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .178
Shell Builtins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .179
Avoiding Unnecessary Dependencies . . . . . . . . . . . . . . . . . . . . . . . . . . . . .180
Relying on Extensions Considered Harmful . . . . . . . . . . . . . . . . . . . .181
Test with More Than One Shell on More Than One System . . . . . .182
Document Your Assumptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .182
Common Utility Issues . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .183
Public Enemy #1: echo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .183
Multiple Different Versions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .184
Archive Utilities . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .185
Block Sizes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .188
Other Common Problems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .188
What to Do When Something Is Unavailable . . . . . . . . . . . . . . . . . . . . . . . .200
Roll Your Own . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .200
Add a Missing Utility . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .201
Use Something Else . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .201
Demand a Real System . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .201
A Few Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .202
What’s Next? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .203
ChaPter 9
Bringing it all together . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .205
Robustness . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .205
Handling Failure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .205
Temporary Files and Cleanup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .208
Handling Interrupts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .210
Startup Files and Environment Variables . . . . . . . . . . . . . . . . . . . . . .211
Documentation and Comments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .212
Degrade Gracefully . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .214
Specify, and Test For, Requirements . . . . . . . . . . . . . . . . . . . . . . . . .216
Scripts That Write Scripts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .216
Building a Script for a Specific Target . . . . . . . . . . . . . . . . . . . . . . . .217
Mixing with Other Languages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .218
What’s Next? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .218
10436fmfinal 11
10/23/08 10:40:27 PM
■CONTENTS
ChaPter 10
Shell Script design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .219
Do One Thing Well . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .219
Separate Functionality . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .220
Isolate Dependencies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .220
Be Cooperative . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .221
Filters, File Manipulation, and Program Manipulation . . . . . . . . . . .221
Command-Line Options and Arguments . . . . . . . . . . . . . . . . . . . . . . . . . . .224
Designing Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .226
Options and Inputs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .228
Set Reasonable Limits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .229
Define Your Functional Scope . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .230
Define Your Target Scope . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .230
Case Study: pids . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .232
What’s Next? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .235
ChaPter 11
Mixing and Matching . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .237
Mixing Quoting Rules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .237
Embedding Shell Scripts in Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .239
Shell and make . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .239
Shell and C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .241
Embedding Code in Shell Scripts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .242
Shell and sed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .242
Shell and awk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .246
Utilities and Languages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .252
What’s Next? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .253
aPPeNdix a
the Shell Command Language . . . . . . . . . . . . . . . . . . . . . . . . . . . .255
2 . Shell Command Language . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .255
2 .1 Shell Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .255
2 .2 Quoting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .256
2 .3 Token Recognition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .258
2 .4 Reserved Words . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .260
2 .5 Parameters and Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .260
2 .6 Word Expansions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .264
2 .7 Redirection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .271
2 .8 Exit Status and Errors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .275
2 .9 Shell Commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .276
10436fmfinal 12
10/23/08 10:40:28 PM
■CONTENTS
2 .10 Shell Grammar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .285
2 .11 Signals and Error Handling . . . . . . . . . . . . . . . . . . . . . . . . . . . . .292
2 .12 Shell Execution Environment . . . . . . . . . . . . . . . . . . . . . . . . . . .293
2 .13 Pattern Matching Notation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .294
2 .14 Special Built- In Utilities . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .296
aPPeNdix B
the sh Utility . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .297
Name . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .297
Synopsis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .297
Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .297
Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .298
Operands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .298
Stdin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .299
Input Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .300
Environment Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .300
Asynchronous Events . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .303
Stdout . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .303
Stderr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .303
Output Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .303
Extended Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .303
Command History List . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .303
Command Line Editing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .303
Command Line Editing (vi- mode) . . . . . . . . . . . . . . . . . . . . . . . . . . . .304
vi Line Editing Insert Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .304
vi Line Editing Command Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .305
Exit Status . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .314
Consequences Of Errors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .314
Application Usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .314
Rationale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .316
Future Directions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .318
See Also . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .318
Change History . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .318
Issue 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .318
Issue 6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .318
10436fmfinal 13
10/23/08 10:40:28 PM
■CONTENTS
aPPeNdix C
regular expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .319
9 . Regular Expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .319
9 .1 Regular Expression Definitions . . . . . . . . . . . . . . . . . . . . . . . . . . .320
9 .2 Regular Expression General Requirements . . . . . . . . . . . . . . . .321
9 .3 Basic Regular Expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .322
9 .4 Extended Regular Expressions . . . . . . . . . . . . . . . . . . . . . . . . . . .327
9 .5 Regular Expression Grammar . . . . . . . . . . . . . . . . . . . . . . . . . . . .330
iNdex . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .339
解决fp = builtins.open(filename, “w+b“)FileNotFoundError: [Errno 2] No such file or directory: