第一部分 基础篇 1
第1章 Shell简介 1
1.1 存取权限问题 2
1.2 运行Shell脚本 3
1.3 Shell程序设计 4
1.4 Shell计数 4
1.5 Shell特性 5
1.5.1 别名 5
1.5.2 命令替换 5
1.5.3 后台处理 6
1.5.4 变量 6
1.5.5 管道 7
1.5.6 重定向 7
1.5.8 特殊字符 8
1.5.7 模式匹配 8
1.6 Shell/Perl/Tcl间的联系桥 9
1.7 小结 9
第2章 变量和运算符 10
2.1 变量替换 14
2.2 位置变量 17
2.3 进程变量 18
2.4 Bash引号规则 19
2.5 运算符 20
2.5.1 取模运算符 22
2.5.2 按位运算符 22
2.5.3 逻辑运算符 23
2.5.4 赋值运算符 23
2.6 表达式替换 24
2.7 标准Shell变量 24
2.8.1 declare 27
2.8 影响命令的变量 27
2.8.2 export命令 28
2.8.3 let命令 29
2.8.4 local命令 29
2.8.5 readonly命令 30
2.8.6 set命令 30
2.8.7 shift命令 30
2.8.8 typeset命令 30
2.8.9 unset命令 31
2.9 小结 31
第3章 过程 33
3.1 在过程内部使用变量 35
3.2 shift命令 37
3.3 建立局部过程变量 38
3.5 小结 39
3.4 过程返回值 39
第4章 脚本执行命令 41
4.1 exit命令 41
4.2 trap命令 43
4.3 if命令 46
4.4 case命令 48
4.5 for语句 49
4.6 while命令 53
4.7 until命令 55
4.8 break命令 56
4.9 continue命令 58
4.10 小结 59
第5章 控制Shell 61
5.1 创建命令表 61
5.2 创建复合命令 62
5.3 输入/输出重定向 64
5.3.1 控制输入 65
5.3.2 控制输出 66
5.3.3 管道 68
5.3.4 利用高级重定向 71
5.4 读取输入 73
5.5 使用“-”文件 76
5.6 使用设备文件 77
5.7 使用exec 78
5.8 使用eval 79
5.9 使用后台进程 81
5.10 小结 83
第6章 使用Perl 85
6.1 Perl特性 85
6.2 Perl入门 86
6.3 Perl变量 87
6.3.1 命名习惯 87
6.3.2 标量 88
6.3.3 数组 88
6.3.4 hash 89
6.4 使用静态信息 90
6.5 使用倒引号字符串 91
6.6 使用语句 92
6.6.1 运算符 92
6.6.2 函数 94
6.3.3 语句 103
6.7 使用文件 106
6.7.1 读文件 106
6.7.2 写文件 106
6.7.3 文件检测运算符 107
6.8 特殊变量 108
6.9 对象 113
6.10 使用模块 117
6.11 小结 121
第7章 使用Tcl/TK 123
7.1 Tcl的特点 123
7.2 Tcl入门 124
7.3 理解“替换”概念 126
7.3.1 变量替换 126
7.3.2 命令替换 127
7.3.3 反斜线替换 128
7.4 理解“成组”的概念 129
7.4.1 用花括号成组 129
7.4.2 用引号成组 130
7.5.2 列表 131
7.5 数据结构 131
7.5.1 简单变量 131
7.5.3 数组 132
7.6 使用语句 133
7.6.1 构建一个语句 133
7.6.2 Tcl的内置命令 134
7.6.3 expr命令 137
7.6.4 编写过程 139
7.6.5 标准控制结构 141
7.7 使用文件 144
7.7.1 读文件 144
7.7.2 写文件 145
7.8 超越Shell 146
7.9 小结 147
8.1 Bash 148
第8章 模式匹配 148
8.1.1 用于文件名的元字符 149
8.1.2 变量的元字符 150
8.1.3 case命令的元字符 151
8.1.4 元字符和for命令 152
8.2 Perl 153
8.2.1 模式分隔符 154
8.2.2 匹配运算符 154
8.2.3 替换运算符 156
8.2.4 转换运算符 157
8.3 联编运算符(=~和!~) 158
8.3.1 Perl模式匹配的元字符 159
8.3.2 字符类 163
8.3.3 量词 164
8.3.4 模式存储 166
8.3.5 模式优先 167
8.3.6 扩展语法 168
8.3.7 模式范例 171
8.4 Tcl 177
8.4.1 glob函数 177
8.4.2 string match函数 178
8.4.3 regexp函数 179
8.4.4 regsub函数 180
8.5 小结 182
8.5.1 Bash 182
8.5.2 Perl 182
8.5.3 Tcl 183
第二部分 使用工具集篇 185
第9章 检查工具 185
9.1 basename命令 186
9.2 cat命令 187
9.3 cksum命令 189
9.4 clear命令 190
9.5 col命令 190
9.6 cp命令 191
9.7 csplit命令 192
9.8 cut命令 195
9.9 date命令 197
9.10 diff命令 199
9.11 echo命令 201
9.12 env命令 203
9.13 expr命令 203
9.14 eval命令 205
9.17 find命令 206
9.16 fgrep命令 206
9.15 false命令 206
9.18 grep命令 214
9.19 groff命令 217
9.20 head命令 223
9.21 info命令 223
9.22 join命令 224
9.23 kill命令 227
9.24 less命令 228
9.25 man命令 229
9.26 mv命令 229
9.27 nl命令 230
9.28 ps命令 231
9.29 pstree命令 234
9.30 read命令 236
9.31 rm命令 237
9.32 sort命令 238
9.33 split命令 241
9.34 strings命令 242
9.35 tail命令 244
9.36 tee命令 246
9.37 test命令 247
9.38 tr命令 250
9.39 true命令 253
9.40 tty命令 253
9.41 type命令 254
9.42 uname命令 254
9.43 uniq命令 255
9.44 wc命令 257
9.45 who命令 257
9.46 write命令 258
9.47 xargs命令 259
9.48 小结 261
第10章 移植性问题 262
10.1 脚本编程语言间的命令等价 268
10.1.1 文件I/O 268
10.1.2 变量类型 270
10.1.3 循环命令 271
10.1.4 判定命令 272
10.2 不同平台间的移植 273
10.2.1 Bash 273
10.2.2 Perl和Windows32 274
10.2.3 MacPerl 276
10.2.4 Windows之下的Tcl 278
10.2.5 Mac OS之下的Tcl 279
10.3 小结 280
11.1.1 不适当的格式 281
11.1 语法错误 281
第11章 调试概念 281
11.1.2 丢失和错放了命令分隔符 282
11.1.3 错拼的词 284
11.1.4 不成对 284
11.2 运行时错误 285
11.3 崩溃 286
11.4 调试技术 286
11.4.1 Bash调试 286
11.4.2 Perl调试 288
11.4.3 打开报警 288
11.4.4 在代码中使用strict 290
11.4.5 一般调试 291
11.5 调试工具 293
11.5.1 Perl 294
11.5.2 Tcl/Expect 296
11.6 小结 300
第12章 定制工具 302
12.1 更好的find命令 302
12.2 更好的write命令 306
12.3 “安全的”delete命令 317
12.4 受限使用的注册Shell 319
12.5 用户名字是什么 324
12.6 创建适当的字母大写 326
12.7 有用的信息、提示和警告 329
12.8 文件计数 331
12.9 取代命令 331
12.10 小结 346
第三部分 附录 349
附录A Internet资源 349
附录B ASCII码表 353