logo资料库

Advanced Bash-Scripting Guide(中文版).pdf

第1页 / 共590页
第2页 / 共590页
第3页 / 共590页
第4页 / 共590页
第5页 / 共590页
第6页 / 共590页
第7页 / 共590页
第8页 / 共590页
资料共590页,剩余部分请下载后查看
第一部分 热身
第1 章 为什么使用shell 编程
第2 章 带着一个Sha-Bang 出发(Sha-Bang 指的是#!)
2.1 调用一个脚本
2.2 初步的练习
第二部分 基本
第3 章 特殊字符
3-1. 代码块和I/O 重定向
3-2. 将一个代码块的结果保存到文件
3-3. 在后台运行一个循环
3-4. 备份最后一天所有修改的文件.
第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.2.1 使用awk 来操作字符串
9.2.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
第17 章 Here Documents
17.1. Here Strings
第18 章 休息时间
第四部分 高级
第19 章 正则表达式
19.1 一个简要的正则表达式介绍
第20 章 子shell(Subshells)
第21 章 受限shell(Restricted Shells)
第22 章 进程替换
第23 章 函数
23.1. 复杂函数和函数复杂性
23.2. 局部变量
23.2.1. 局部变量使递归变得可能.
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.9. 移植话题
33.10. 在Windows 下进行Shell 编程
第34 章 Bash, 版本 2 和 3
34.1. Bash, 版本2
34.2. Bash 版本3
后记
作者后记
关于作者
哪里可以取得帮助?
制作这本书的工具
硬件
软件和排版软件
译者序 毫无疑问,UNIX/Linux 最重要的软件之一就是 shell,目前最流行的 shell 被称为 Bash(Bourne Again Shell),几乎所有的 Linux 和绝大部分的 UNIX 都可以使用 Bash。作为系统与用户之间的交互接口,shell 几乎是你在 UNIX 工作平台上最亲密的朋友,因此,学好 shell,是学习 Linux/UNIX 的的开始,并且它 会始终伴随你的工作学习。 shell 是如此地重要,但令人惊奇的是,介绍 shell 的书没有真正令人满意的。所幸的是,我看到了 这本被人称为 abs 的书,这本书介绍了 bash 大量的细节和广阔的范围,我遇到的绝大部分的技术问题 --无论是我忘记的或是以前没有发现的--都可以在这本书里找到答案。这本使用大量的例子详细地介绍 了 Bash 的语法,各种技巧,调试等等的技术,以循序渐进的学习方式,让你了解 Bash 的所有特性, 在书中还有许多练习可以引导你思考,以得到更深入的知识。无论你是新手还是老手,或是使用其他 语言的程序员,我能肯定你能在此书用受益。而本书除了介绍 BASH 的知识之外,也有许多有用的关 于 Linux/UNIX 的知识和其他 shell 的介绍。 在看到本书的英文版后,我决定把它翻译出来,在 Linuxsir 论坛上结识了译者之一杨春敏共同翻 译这本书,600 多页的书是本大部头的书,我们花了 6 个月的业余时间才翻译完了。 关于版权的问题,英文版的作者 Mendel Cooper 对英文版的版权做了详细的约定,请参考: Appendix Q. Copyright。中文版版权由译者杨春敏和黄毅共同所有,在遵守英文版版权相应条款的条 件下,欢迎在保留本书译者名字和版权说明以非盈利的方式自由发布此中文版,以盈利目的的所有行 为必须联系英文作者和两位中文译者以获得许可。 本书得以成稿,我(黄毅)要多谢我的女朋友,本该给予她的时间我用来了翻译,多谢你的理解, 你是一个很棒的女朋友! 译者 杨春敏 黄毅 2006.5.15
Advanced Bash-Scripting Guide <<高级 Bash 脚本编程指南>> 一本深入学习 shell 脚本艺术的书籍 Version 3.7.2 2005/11/16 作者:Mendel Cooper mail:thegrendel@theriver.com 这本书假定你没有任何脚本或一般程序的编程知识,但是如果你有相关的知识,那么你将很容易 达到中高级的水平...all the while sneaking in little snippets of UNIX? wisdom and lore(这句不知道怎么译).你可以把本书作为教材,自学手册,或者你获得 shell 脚本技术的文档. 书中的练习和例子脚本中的注释将会与读者有更好的互动,但是最关键的前提是: 想真正学习脚本编程的唯一途径就是编写脚本. 这本书也可作为教材来讲解一般的编程概念. 下载本书最新版本,http://personal.riverusers.com/~thegrendel/abs-guide-3.7.tar.bz2, 这是一个以 tar 和 bzip2 进行打包的,并且是以 HTML 来发行的.当然,你也可以获得本书的 pdf 版本 在 http://www.tldp.org/LDP/abs/abs-guide.pdf.可以在 http://personal.riverusers.com/~thegrendel/Change.log 中查看修订历史. 译者:杨春敏,黄毅 mail:chunmin.yang@gmail.com 一直想好好学习一下 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.8.1. 被感染的脚本 33.8.2. 隐藏 Shell 脚本源码 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.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 产生伪随机数
分享到:
收藏