第1部分 基本脚本编程技术 2
第1章 shell脚本的错误检测 2
1.1 shell跟踪选项 2
1.2简单输出语句 5
1.3根据调试层次控制输出 6
1.4用函数简化错误检查 7
1.5手动单步执行 9
第2章 标准函数库 10
2.1库文件 10
2.2一些有用的函数 11
2.3使用库 13
第3章 日期和时间操作 14
3.1用天数来计算日期 14
3.1.1自从纪元以来的天数 15
3.1.2以秒计算日期的其他方法 16
3.2评估当前日期和时间 17
第4章 比较和测试 19
比较的基本原理 19
第5章 接受命令行选项、开关和参数 23
第6章 测试变量和设置默认值 27
6.1设置默认值 27
6.2变量替换 28
6.2.1:=句法 29
6.2.2=句法 29
6.2.3:-句法 30
6.2.4-句法 30
6.2.5:?句法 30
6.2.6?句法 31
6.2.7:+句法 31
6.2.8+句法 31
第7章 非直接引用变量 32
7.1用非直接变量监控日志文件 32
7.2主监控循环 33
第8章shell进程树 37
8.1用数组实现进程树 38
8.2用非直接变量实现进程树 42
8.3用Boume shell实现进程树 43
第9章 数据重定向 45
9.1避免错误 45
9.2普通重定向 46
9.3访问用户指定的文件句柄 48
9.4从shell中访问描述符 49
第10章 管道输入读 50
10.1逐行选项1 51
10.2逐行选项2 52
10.3逐行选项3 52
10.4逐行选项4 53
10.5直接管道读 54
10.6逐字处理输入 55
第2部分 系统交互与高级技术 58
第11章 shell中的数学 58
11.1 expr 58
11.2 bc 60
11.3 dc 61
第12章 cron 62
12.1 crontab条目 62
12.2环境问题 63
12.3输出重定向 64
第13章 自链接脚本 66
第14章 对并行进程的数量控制 68
14.1用ksh实现并行进程 69
14.2用bash实现并行进程 73
第15章 命令行编辑和历史命令 75
15.1建立vi编辑环境 76
15.1.1 bash 76
15.1.2 ksh 76
15.2命令和文件补全 77
第16章 从命令行编写脚本 78
例子 78
第17章 用expect实现用户输出自动化 81
17.1为expect脚本定制参数的一个shell脚本 81
17.2让telnet的expect脚本自动执行 85
第18章 用户输入超时 88
18.1手动实现超时 88
18.2使用stty实现超时 90
18.3一般的超时功能 91
第19章 即时键盘响应 92
第20章 目录的复制 95
20.1使用cp 95
20.2使用tar 96
20.3使用find 96
20.4使用rsync 97
第21章 X显示环境概述 99
21.1 display变量 99
21.2使用ssh处理X流量 100
21.3通过第三方系统的X应用 101
21.4用户-Profile项 103
21.5根-Profile项 105
21.6弹出一个临时的根窗口 106
第22章 X导航窗口 108
22.1导航窗口的作用 108
22.2建立导航 109
22.3浏览窗口 111
第23章 命令行电子邮件附件 116
23.1 uuencode 116
23.2 MIME编码 117
第24章 单行文本处理 120
24.1显示特殊域 120
24.2指定域分隔符 121
24.3简单的模式匹配 121
24.4几个值的匹配域 121
24.5确定域的数目 122
24.6确定最后一个域 122
24.7确定倒数第二个域 122
24.8给awk传送变量 123
24.9在一定条件下使用给awk传送的变量 123
24.10显示域的范围 (主要方法) 124
24.11显示域的范围 (备选方法) 124
24.12使用awk确定串的长度 125
24.13使用expr确定串的长度 125
24.14使用awk显示一个子串 125
24.15使用expr显示一个子串 125
24.16使用sed进行简单的查找和替换 126
24.17忽略文件中的空行和注释行 126
24.18使用sed进行双查找和替换 126
24.19使用sed过滤行 127
24.20使用egrep查找多个串 127
24.21查找进程表的一个清理方法 128
24.22使用awk进行列求和计算 128
24.23使用awk产生随机数字 129
24.24从shell中产生随机数字 129
24.25使用sed显示基于字符的域 129
24.26特殊字符转义 130
24.27使用grep从一个模式匹配中返回末尾行 131
24.28使用grep返回模式匹配之前的行 132
第25章 在适当的位置编辑文件 134
25.1使用ed进行简单的查找和替换 134
25.2使用ed查找和替换、分割 135
25.3 ed命令的例子 136
25.4对一个文件中的特殊字符转义 138
第26章 平面文件中的变量赋值 141
第27章 读取管道输入 143
第28章 使用cat的自由格式输出 145
第29章 自动交互处理 147
第3部分 有用的脚本实例 152
第30章 使用procmail自动处理邮件 152
30.1 .procmailrc文件 153
30.2使用示例 155
30.3代码 155
第31章 进程管理监视器 158
第32章 管理文件的计数 166
32.1文件计数监视器 166
32.2测试文件数目的计算方法 167
第33章 从inittab执行进程 169
第34章 自动RCS 171
第35章 带颜色的/proc报告 174
第36章 口令老化通知 180
36.1脚本初始化 181
36.2开始处理 183
36.3确定口令年龄 184
第37章 伪shadow文件 189
第38章 搭建Linux金系统 193
第39章 系统快照 199
39.1快照脚本 200
39.2快照升级 202
39.3创建最新快照 205
39.4最后的想法 205
第40章 删除大文件和日志滚动 207
第41章 核心探测器 210
第42章 网络适配器故障转移 212
42.1检查网络 214
42.2转换接口 215
附录A测试开关 217
附录B特殊参数 219
附录C shell脚本编程的其他资源 220
C.1手册 220
C.2图书 220
C.2.1脚本编程图书 221
C.2.2补充图书 221
C.3 shell资源 221
C.4网络资源 221