文件名称:Advanced Bash-Scripting Guide <<高级Bash 脚本编程指南>>
文件大小:635KB
文件格式:GZ
更新时间:2013-04-14 08:24:41
Advanced Bash-Scripting Guide <<高级Bash 脚本编程指南>>
目录
++++
第一部分. 热身
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. Tests
7.1. Test 结构
7.2. 文件测试操作
7.3. 其他比较操作
7.4. 嵌套的if/then 条件test
7.5. 检查你的test 知识
8. 操作符和相关的主题
8.1. 操作符
8.2. 数字常量
第三部分. 超越基本
9. 变量重游
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 Documents
17.1. Here Strings
18. 休息时间
Part 4. 高级
19. 正则表达式
19.1. 一个简要的正则表达式介绍
19.2. 通配
20. 子shell(Subshells)
21. 受限shell(Restricted Shells)
22. 进程替换
23. 函数
23.1. 复杂函数和函数复杂性
23.2. 局部变量
23.3. 不使用局部变量的递归
24. 别名(Aliases)
25. 列表结构
26. 数组
27. /dev 和 /proc
27.1. /dev
27.2. /proc
28. 关于Zeros 和Nulls
29. 调试
30. 选项
31. Gotchas
32. 脚本编程风格
32.1. 非官方的Shell 脚本风格
33. 杂项
33.1. 交互式和非交互式的shells 和脚本
33.2. Shell 包装
33.3. 测试和比较: 另一种方法
33.4. 递归
33.5. 彩色脚本
33.6. 优化
33.7. 各种小技巧
33.8. 安全话题
33.8.1. 被感染的脚本
33.8.2. 隐藏Shell 脚本源码
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.4. 制作这本书的工具
35.4.1. 硬件
35.4.2. 软件和排版软件
35.5. Credits
Bibliography
A. Contributed Scripts
B. Reference Cards
C. A Sed and Awk Micro-Primer
C.1. Sed
C.2. Awk
D. Exit Codes With Special Meanings
E. A Detailed Introduction to I/O and I/O Redirection
F. Standard Command-Line Options
G. Important Files
H. Important System Directories
I. Localization
J. History Commands
K. A Sample .bashrc File
L. Converting DOS Batch Files to Shell Scripts
M. Exercises
M.1. Analyzing Scripts
M.2. Writing Scripts
N. Revision History
O. Mirror Sites
P. To Do List
Q. Copyright
表格清单:
11-1. 作业标识符
30-1. Bash 选项
33-1. 转义序列中数值和彩色的对应
B-1. Special Shell Variables
B-2. TEST Operators: Binary Comparison
B-3. TEST Operators: Files
B-4. Parameter Substitution and Expansion
B-5. String Operations
B-6. Miscellaneous Constructs
C-1. Basic sed operators
C-2. Examples of sed operators
D-1. "Reserved" Exit Codes
L-1. Batch file keywords / variables / operators, and their shell equivalents
L-2. DOS commands and their UNIX equivalents
N-1. Revision History
例子清单:
2-1. 清除:清除/var/log 下的log 文件
2-2. 清除:一个改良的清除脚本
2-3. cleanup:一个增强的和广义的删除logfile 的脚本
3-1. 代码块和I/O 重定向
3-2. 将一个代码块的结果保存到文件
3-3. 在后台运行一个循环
3-4. 备份最后一天所有修改的文件.
4-1. 变量赋值和替换
4-2. 一般的变量赋值
4-3. 变量赋值,一般的和比较特殊的
4-4. 整型还是string?
4-5. 位置参数
4-6. wh,whois 节点名字查询
4-7. 使用shift
5-1. echo 一些诡异的变量
5-2. 转义符
6-1. exit/exit 状态
6-2. 否定一个条件使用!
7-1. 什么情况下为真?
7-2. 几个等效命令test,/usr/bin/test,[],和/usr/bin/[
7-3. 算数测试使用(( ))
7-4. test 死的链接文件
7-5. 数字和字符串比较
7-6. 测试字符串是否为null
7-7. zmore
8-1. 最大公约数
8-2. 使用算术操作符
8-3. 使用&&和||进行混合状态的test
8-4. 数字常量的处理
9-1. $IFS 和空白
9-2. 时间输入
9-3. 再来一个时间输入
9-4. Timed read
9-5. 我是root?
9-6. arglist:通过$*和$@列出所有的参数
9-7. 不一致的$*和$@行为
9-8. 当$IFS 为空时的$*和$@
9-9. 下划线变量
9-10. 在一个文本文件的段间插入空行
9-11. 利用修改文件名,来转换图片格式
9-12. 模仿getopt 命令
9-13. 提取字符串的一种可选的方法
9-14. 使用参数替换和error messages
9-15. 参数替换和"usage"messages
9-16. 变量长度
9-17. 参数替换中的模式匹配
9-18. 重命名文件扩展名
9-19. 使用模式匹配来分析比较特殊的字符串
9-20. 对字符串的前缀或后缀使用匹配模式
9-21. 使用declare 来指定变量的类型
9-22. 间接引用
9-23. 传递一个间接引用给awk
9-24. 产生随机数
9-25. 从一副扑克牌中取出一张随机的牌
9-26. 两个指定值之间的随机数
9-27. 使用随机数来摇一个骰子
9-28. 重新分配随机数种子
9-29. 使用awk 产生伪随机数
9-30. C 风格的变量处理
10-1. 循环的一个简单例子
10-2. 每个[list]元素带两个参数的for 循环
10-3. 文件信息:对包含在变量中的文件列表进行操作
10-4. 在for 循环中操作文件
10-5. 在for 循环中省略[list]
10-6. 使用命令替换来产生for 循环的[list]
10-7. 对于二进制文件的一个grep 替换
10-8. 列出系统上的所有用户
10-9. 在目录的所有文件中查找源字串
10-10. 列出目录中所有的符号连接文件
10-11. 将目录中的符号连接文件名保存到一个文件中
10-12. 一个C 风格的for 循环
10-13. 在batch mode 中使用efax
10-14. 简单的while 循环
10-15. 另一个while 循环
10-16. 多条件的while 循环
10-17. C 风格的while 循环
10-18. until 循环
10-19. 嵌套循环
10-20. break 和continue 命令在循环中的效果
10-21. 多层循环的退出
10-22. 多层循环的continue
10-23. 在实际的任务中使用"continue N"
10-24. 使用case
10-25. 使用case 来创建菜单
10-26. 使用命令替换来产生case 变量
10-27. 简单字符串匹配
10-28. 检查是否是字母输入
10-29. 用select 来创建菜单
10-30. 用函数中select 结构来创建菜单
11-1. 一个fork 出多个自己实例的脚本
11-2. printf
11-3. 使用read,变量分配
11-4. 当使用一个不带变量参数的read 命令时,将会发生什么?
11-5. read 命令的多行输入
11-6. 检测方向键
11-7. 通过文件重定向来使用read
11-8. 管道输出到read 中的问题
11-9. 修改当前的工作目录
11-10. 用"let"命令来作算术操作.
11-11. 显示eval 命令的效果
11-12. 强制登出(log-off)
11-13. 另一个"rot13"的版本
11-14. 在Perl 脚本中使用eval 命令来强制变量替换
11-15. 使用set 来改变脚本的位置参数
11-16. 重新分配位置参数
11-17. Unset 一个变量
11-18. 使用export 命令传递一个变量到一个内嵌awk 的脚本中
11-19. 使用getopts 命令来读取传递给脚本的选项/参数.
11-20. "Including"一个数据文件
11-21. 一个没什么用的,source 自身的脚本
11-22. exec 的效果
11-23. 一个exec 自身的脚本
11-24. 在继续处理之前,等待一个进程的结束
11-25. 一个结束自身的脚本.
12-1. 使用ls 命令来创建一个烧录CDR 的内容列表
12-2. Hello or Good-bye
12-3. 删除当前目录下文件名中包含一些特殊字符(包括空白)的文件..
12-4. 通过文件的 inode 号来删除文件
12-5. Logfile: 使用 xargs 来监控系统 log
12-6. 把当前目录下的文件拷贝到另一个文件中
12-7. 通过名字Kill 进程
12-8. 使用xargs 分析单词出现的频率
12-9. 使用 expr
12-10. 使用 date 命令
12-11. 分析单词出现的频率
12-12. 那个文件是脚本?
12-13. 产生10 进制随机数
12-14. 使用 tail 命令来监控系统log
12-15. 在一个脚本中模仿 "grep" 的行为
12-16. 在1913 年的韦氏词典中查找定义
12-17. 检查列表中单词的正确性
12-18. 转换大写: 把一个文件的内容全部转换为大写.
12-19. 转换小写: 将当前目录下的所有文全部转换为小写.
12-20. Du: DOS 到 UNIX 文本文件的转换.
12-21. rot13: rot13, 弱智加密.
12-22. Generating "Crypto-Quote" Puzzles
12-23. 格式化文件列表.
12-24. 使用 column 来格式化目录列表
12-25. nl: 一个自己计算行号的脚本.
12-26. manview: 查看格式化的man 页
12-27. 使用 cpio 来拷贝一个目录树
12-28. 解包一个 rpm 归档文件
12-29. 从 C 文件中去掉注释
12-30. Exploring /usr/X11R6/bin
12-31. 一个"改进过"的 strings 命令
12-32. 在一个脚本中使用 cmp 来比较2 个文件.
12-33. basename 和 dirname
12-34. 检查文件完整性
12-35. Uudecod 编码后的文件
12-36. 查找滥用的连接来报告垃圾邮件发送者
12-37. 分析一个垃圾邮件域
12-38. 获得一份股票报价
12-39. 更新 Fedora Core 4
12-40. 使用 ssh
12-41. 一个可以mail 自己的脚本
12-42. 按月偿还贷款
12-43. 数制转换
12-44. 使用 "here document" 来调用 bc
12-45. 计算圆周率
12-46. 将10 进制数字转换为16 进制数字
12-47. 因子分解
12-48. 计算直角三角形的斜边
12-49. 使用 seq 来产生循环参数
12-50. 字母统计
12-51. 使用getopt 来分析命令行选项
12-52. 一个拷贝自身的脚本
12-53. 练习dd
12-54. 记录按键
12-55. 安全的删除一个文件
12-56. 文件名产生器
12-57. 将米转换为英里
12-58. 使用 m4
13-1. 设置一个新密码
13-2. 设置一个擦除字符
13-3. 关掉终端对于密码的echo
13-4. 按键检测
13-5. Checking a remote server for identd