[2013.9.10--2013.10.10]
主要目录
第一部分. 热身
1. 为什么使用shell编程?
2. 带着一个Sha-Bang出发(Sha-Bang指的是#!)
2.1. 调用一个脚本
2.2. 初步的练习
第二部分. 基本
3. 特殊字符
4. 变量和参数的介绍
4.1. 变量替换
4.2. 变量赋值
4.3. Bash变量是不区分类型的
4.4. 特殊的变量类型
5. 引用
5.1. 引用变量
5.2. 转义
6. 退出和退出状态码
7. 条件判断
7.1. 条件测试结构
7.2. 文件测试操作符
7.3. 其他比较操作符
7.4. 嵌套的if/then条件测试
7.5. 检测你对测试知识的掌握情况
8. 操作符与相关主题
8.1. 操作符
8.2. 数字常量
第三部分. 进阶
9. 变量重游 2013.9.16
9.1. 内部变量
9.2. 操作字符串
9.3. 参数替换
9.4. 指定变量的类型: 使用declare或者typeset
9.5. 变量的间接引用
9.6. $RANDOM: 产生随机整数
9.7. 双圆括号结构
10. 循环与分支
10.1. 循环
10.2. 嵌套循环
10.3. 循环控制
10.4. 测试与分支(case与select结构)
11. 内部命令与内建命令
11.1. 作业控制命令
12. 外部过滤器, 程序和命令
12.1. 基本命令
12.2. 复杂命令
12.3. 时间/日期 命令
12.4. 文本处理命令
12.5. 文件与归档命令
12.6. 通讯命令
12.7. 终端控制命令
12.8. 数学计算命令
12.9. 混杂命令
13. 系统与管理命令
13.1. 分析一个系统脚本
14. 命令替换
15. 算术扩展
16. I/O重定向
16.1. 使用exec
16.2. 代码块重定向
16.3. 重定向的应用
17. Here Document
17.1. Here String
18. 休息片刻
第四部分. 高级主题
19. 正则表达式
19.1. 一份简要的正则表达式介绍
19.2. 通配(globbing)
20. 子shell
21. 受限shell
22. 进程替换
23. 函数
23.1. 复杂函数和函数复杂性
23.2. 局部变量
23.3. 不使用局部变量的递归
24. 别名
25. 列表结构
26. 数组
27. /dev和/proc
27.1. /dev
27.2. /proc
28. Zero与Null
29. 调试
30. 选项
31. 陷阱
32. 脚本编程风格
32.1. 非官方的Shell脚本编写风格
33. 杂项
33.1. 交互与非交互式的交互与非交互式的shell和脚本
33.2. Shell包装
33.3. 测试和比较: 一种可选的方法
33.4. 递归
33.5. 将脚本"彩色化"
33.6. 优化
33.7. 各种小技巧
33.8. 安全问题
33.9. 可移植性问题
33.10. Windows下的shell脚本
34. Bash, 版本2与版本3
34.1. Bash, 版本2
34.2. Bash, 版本3
35. 后记
35.1. 作者后记
35.2. 关于作者
35.3. 译者后记
35.3.1. 杨春敏
35.3.2. 黄毅
35.4. 在哪里可以获得帮助
35.5. 用来制作这本书的工具
35.5.1. 硬件
35.5.2. 软件与排版软件
35.6. 致谢
35.7. 译者致谢