高级Bash脚本编程指南

http://tldp.org/LDP/abs/html/

高级Bash脚本编程指南
对脚本语言艺术的深入探索

本教程不承担以前的脚本或编程知识,但进展迅速走向一个中级/高级水平的指令。..一直偷偷在细小的UNIX®智慧和学识。它作为一本教科书,一本手册,自学,并作为一个参考和知识的来源,壳牌的脚本技术。练习和大量的评论实例请读者参与,在这样的前提下,真正学习脚本的唯一途径是编写脚本。
这本书是适合课堂使用的一般介绍编程的概念。
本文件被授予公共领域。没有版权!

奉献
对于安妮塔,所有魔术的来源
内容表
第1部分。景区简介
1。外壳编程!
2。从一个沙砰的开始
第2部分。基础
3。特殊字符
4。变量和参数介绍
5。引用
6。退出和退出状态
7。试验
8。操作及相关主题
第3部分。超越基本
9。另一个看变量
10。操纵变量
11。循环和分支
12。命令替换
13。运算扩展
14。休息时间
第4部分。命令
15。内部命令和内部
16。外部过滤器,程序和命令
17。系统和行政命令
第5部分。高级主题
18。正则表达式
19。这里的文件
20。输入/输出重定向
21。次壳层
22。限制壳
23。过程替换
24。功能
25。别名
26。列表构造
27。阵列
28。间接引用
29。/ dev / proc
30。网络编程
31。零点和零点
32。调试
33。选项
34。陷阱
35。风格的脚本
36。杂记
37。bash,版本2,3,和4
38。尾注
38.1。作者注
38.2。关于作者
38.3。去哪里求助
38.4。用来制作这本书的工具
38.5。信用
38.6。免责声明
参考书目
贡献脚本
参考卡片
C.一个sed和awk微底漆
c。SED
2。awk
D.解析和管理路径
具有特殊意义的退出代码
详细介绍了输入/输出和输入/输出重定向
命令行选项
1。标准命令行选项
G。bash命令行选项
重要文件
一、重要的系统目录
介绍可编程完成
K定位
历史命令
M.样本。bash_profile文件.bashrc和。
转换为脚本的批处理文件
运动
0.1。分析脚本
O。书写脚本
修订历史
下载和镜像站点
做列表
版权所有
T. ASCII表
指数
表格列表
8-1。运算符优先级
15-1。作业标识符
33-1。Bash的选项
36-1。数字表示的颜色在逃避序列
B-1。特殊壳体变量
B-2。测试运算符:二进制比较
B-3。测试运营商:文件
B-4。参数替换与扩展
B-5。字符串操作
B6。杂构造
C-1。基本命令
C-2。SED算子实例
E-1。保留退出码
N-1。批处理文件的关键字/变量/运营商,以及它们的壳等价物
N-2。DOS命令和对应的UNIX
P-1。修订历史


实例列表
2-1。清理:清理日志文件的脚本/无功/日志
2-2。清理:一种改进的清理脚本
23。清理:一个增强和广义版本的上述脚本。
3-1。代码块和输入/输出重定向
3-2。节省代码块到文件的输出
3-3。在后台运行一个循环
3-4。备份所有文件在最后一天发生了变化
4-1。变量赋值和替换
4-2。纯变量赋值
4-3。变量赋值,纯和想象
4-4。整数还是字符串?
4-5。位置参数
4-6。WH,Whois域名查询
4-7。移位
5-1。奇怪的变量
5-2。逃离人物
5-3。检测按键
6-1。退出/退出状态
6-2。否定条件使用!
7-1。什么是真理?
7-2。等价测试,/usr/bin /测试,[ ],和/usr/bin / [
7-3。算术测试(())
7-4。断开连接的测试
7-5。运算和字符串比较
7-6。测试字符串是否为空
7-7。zmore
8-1。最大公约数
8-2。使用算术运算
8-3。使用&&和| |复合条件试验
8-4。数值常数表示
8-5。操纵变量C
9-1。如果美元和空白
9-2。定时输入
9-3。再一次,定时输入
9-4。定时读取
9-5。我是根吗?
9-6。阿格列斯:上市的论点与$ * $ @
9-7。不一致的$ *和$ @行为
9-8。*美元美元美元@当IFS是空的
9-9。下划线变量
9-10。使用声明类型变量
9-11。产生随机数
9-12。从一副牌中挑选一张牌
9-13。布朗运动仿真
9-14。随机值
9-15。带随机的单芯片
9-16。补种的随机
9-17。伪随机数,使用awk
10-1。在文本文件中插入段落之间的空白行
10-2。产生一个字符的随机字符串
10-3。转换图形文件格式,文件名更改
10-4。转换音频文件支持
10-5。仿真getopt
10-6。提取和定位子串的替代方法
10-7。使用参数替换和错误消息
10-8。参数替换和“使用”消息
10-9。变量的长度
10-10。参数替换中的模式匹配
10-11。重命名文件扩展名:
10-12。利用模式匹配来解析任意字符串
10-13。字符串的前缀或后缀的匹配模式

11-1。简单的循环
11-2。在每一个元素中有2个参数的循环
11-3。FileInfo:操作在文件列表中包含的变量
11-4。一个参数化的文件列表操作
11-5。用一个循环操作文件
11-6。在[列表]中缺少的
11-7。在命令替换循环中生成[列表]
11-8。一个二进制文件的查找替换
11-9。在系统中列出所有用户
11-10。检查所有的二进制文件在一个目录中的作者
11-11。列出目录中的符号链接
11-12。一个目录中的符号链接,保存到一个文件中
11-13。C环
11-14。在批处理模式下使用数码传真
11-15。简单循环
11-16。另一个循环
11-17。多条件循环
11-18。在一个while循环语法风格
11-19。循环
11-20。嵌套循环
11-21。中断和继续在一个循环中的作用
11-22。打破多个循环的水平
11-23。继续在一个较高的循环水平
11-24。在实际任务中继续使用
11-25。使用案例
11-26。创建菜单使用案例
11-27。使用命令替换生成变量
11-28。简单字符串匹配
11-29。检查拼音输入
11-30。使用选择创建菜单
11-31。在函数中创建菜单使用
12-1。愚蠢的剧本
12-2。从循环中产生一个变量
12-3。发现字谜
15-1。一个脚本,生成多个实例本身
15-2。printf在行动
15-3。变量赋值,使用读
15-4。当读到没有变量时会发生什么
15-5。多行输入读取
15-6。检测箭头键
7。使用读文件重定向
15-8。从管道读问题
15-9。更改当前工作目录
15-10。让我们做算术。
15-11。显示的效果评价
15-12。使用eval来选择变量之间
15-13。呼应命令行参数
15-14。强制注销
15-15。一个版本的rot13
15-16。利用位置参数设置
15-17。倒车位置参数
15-18。指定的位置参数
15-19。”“一个不可变的
15-20。利用出口来传递变量到一个嵌入式的awk脚本
15-21。使用getopts阅读选项/参数传递给脚本
15-22。”包括“数据文件
15-23。一个(无用的)脚本,来源本身
15-24。影响执行
15-25。一个脚本执行的本身
15。等待一个进程,完成前处理
15-27。一种杀死自己的剧本

16-1。使用ls燃烧光盘创建目录
16-2。你好或再见
16-3。badname,消除当前目录包含字符和空格的文件名不好。
16-4。删除一个文件的inode号
16-5。日志文件:使用xargs监控系统日志
16-6。复制当前目录下的文件到另一个目录
16-7。杀害过程的名称
16-8。使用xargs词频分析
16-9。使用表达式
16-10。使用日期
16-11。日期计算
16胜12。字频率分析
16-13。哪些文件是脚本?
16-14。产生10位随机数
16-15。用尾巴来监视系统日志
16-16。打印出存储电子邮件信息中的行
16-17。仿真grep在脚本
16-18。字谜求解
16-19。查韦氏字典定义1913
16-20。在一个列表中检查单词的有效性
16-21。向上:把文件全部转换为大写。
16-22。小写:改变工作目录下的所有文件名为小写。
16-23。杜:DOS到UNIX文本文件的转换。
16-24。rot13:超弱加密。
16-25。产生“密码引用“拼图
16-26。格式化文件列表。
16-27。使用列来格式化目录列表
16-28。NL:自编号脚本。
16-29。manview:查看格式化联机
16-30。使用cpio移动一个目录树
16-31。开箱RPM档案
16-32。从C++程序文件中剥离注释
16-33。探索/ usr / X11R6 /箱
16-34。一种“改进”的字符串命令
16-35。使用CMP脚本中比较两个文件。
16-36。basename和目录
18-37。一个脚本,它在部分中复制它自己
16-38。检查文件的完整性
16-39。uudecoding编码的文件
16-40。找出报告垃圾邮件发送者
16-41。垃圾邮件域分析
1642。获得股票报价
16-43。更新FC4
16-44。使用SSH
16-45。邮件本身的脚本
16-46。产生素数
16-47。按月支付按揭
16-48。基础转换
入院。在公元前使用这里的文件
16-50。计算
46。将一个十进制数进制
16~52。保理业务
16-53。计算一个三角形的斜边
16~54。使用SEQ产生回路参数
16-55。字母计数
其中。使用getopt来解析命令行选项
16-57。复制自己的脚本
16-58。锻炼DD
16-59。捕获击键
16-60。准备一个可启动的Raspberry Pi的SD卡
16-61。安全删除文件
16~62。文件名生成器
- 63。转换米到英里
64。用M4
17-1。设置新密码
17-2。设置擦除字符
17-3。密码:关闭终端呼应
17-4。按键检测
17-5。检查identd获取远程服务器
17-6。pidof帮助杀死进程
17-7。检查光盘图像
17-8。在文件中创建文件系统
17-9。增加一个新的硬盘
17-10。使用umask隐藏窥探一个输出文件
17-11。背光:改变(笔记本电脑)屏幕背光亮度
17-12。killall,从/etc/rc。D D /初始化。

19-1。广播:发送消息给每个登录的人
19-2。假档案:创建一个虚拟文件2
19-3。使用猫的多线信息
19-4。多行消息,用制表符抑制
19-5。可替换参数的文档
19-6。上传一个文件对sunsite传入的目录
197。参数替换
打。产生另一个脚本的脚本
19-9。这里的文件和功能
权宜之计。”匿名“这里文件
19-11。注释掉代码块
19-12。一个自我记录的脚本
19-13。前面加上一个线文件
19-14。解析邮箱
20-1。重定向stdin使用exec
20-2。重定向stdout使用exec
20-3。stdin和stdout重定向都在同一个脚本的执行
20-4。避免壳层
20-5。重定向循环
20-6。循环的交替形式
20-7。重定向到循环
20-8。重定向循环
20-9。回路(包括重定向stdin和stdout重定向)
20-10。如果/然后测试重定向
20-11。上述例子的数据文件names.data
20-12。测井事件
21-1。在一层的变量范围
2。用户配置文件列表
21-3。并行运行过程中的层
22-1。在受限模式下运行脚本
23-1。代码块重定向不分叉
23-2。重定向过程替代输出成一个圈。
24-1。简单函数
2。函数参数
24-3。功能和命令行参数传递给脚本
24-4。间接引用的函数
24-5。引用参数传递给函数
24-6。再次,引用参数传递给函数
24-7。最大值
24-8。将数字转换为罗马数字
24-9。在函数中测试大的返回值
24-10。比较大整数
24-11。实名实名
24-12。局部变量可见性
24-13。一个简单递归函数的演示
24-14。另一个简单的演示
24-15。递归,使用局部变量
最高。斐波那契数列
24-17。河内塔
25-1。在一个脚本的别名
25-2。unalias:设置和复位的别名
26-1。使用和列表来测试命令行参数
26-2。另一个命令行参数测试使用一个列表
26-30。用或列表组合以和列表
27-1。简单数组使用
27-2。格式化一首诗
27-3。各种数组运算
27-4。数组的字符串操作
27-5。将脚本的内容加载到数组中
27-6。阵列的一些特殊性质
27-7。空数组和空元素
27-8。初始化数组
27-9。复制和串联阵列
27-10。在串联阵列
27-11。气泡排序
目前取得27胜12负。嵌入式阵列和间接引用
27-13。筛法
27-14。筛法,优化
27-15。模拟一个下推栈
27-16。复杂数组应用:探索一个奇怪的数学系列
节。模拟一个二维数组,然后倾斜它
28-1。间接变量引用
28-2。通过间接引用awk
29-1。使用/ dev / TCP故障排除
29-2。演奏音乐
29-3。寻找与一个控制的过程
29。在线连接状态

30-1。打印服务器环境
30-2。地址
31-1。藏饼干罐
31-2。建立一个交换文件使用/dev/zero
31-3。创建一个虚拟磁盘
32-1。马车的脚本
32-2。遗漏关键字
可。测试脚本:另一个车
32-4。用断言测试一个条件
32-5。在出口处
32-6。清理后,控制
32-7。一个简单的执行进度条
32-8。追踪变数
32-9。运行多个进程(在一个SMP盒)
34-1。数值和字符串比较不等价
34-2。电子陷阱
34-3。管道输出的回声读取
36-1。外壳包装器
36-2。一种更为复杂的壳包装器
36-3。一个通用的外壳包装,写入日志文件
36-4。在一个awk脚本外壳包装
36-5。在另一个awk脚本外壳包装
36-6。Perl中嵌入一个bash脚本
36-7。Bash和Perl脚本相结合
36-8。Python嵌入一个bash脚本
36-9。说话的剧本
36-10。一种递归调用的(无用的)脚本
36-11。一种递归调用的(有用的)脚本
36-12。一种递归调用的另一个(有用的)脚本
36-13。“彩色”地址数据库
36-14。画一个盒子
36-15。呼应彩色文本
36-16。“赛马”的游戏
36-17。一个进度条
36-18。返回值的诡计
36-19。更多的返回值的诡计
36-20。传递和返回阵列
36-21。有趣的字谜
36-22。从外壳脚本调用的小部件
36-23。测试套件
37-1。字符串扩展
37-2。间接变量引用-新方法
37-3。简单的数据库应用程序,使用间接变量引用
37-4年。使用数组和其他弄虚作假造成四随机手牌
37-5。一个简单的地址数据库
37-6。更复杂的地址数据库
37-7。测试字符
37-8。阅读字符
37-9。使用此处设置变量
37-10。管道输入读取
37-11。负阵指标
37-12。字符串提取构造中的负参数
A-1。mailformat:格式的电子邮件
A-2。豆:一个头脑简单的文件重命名工具
A-3。重命名:重命名文件名中包含空格的空白
A-4。encryptedpw:上传到FTP站点,采用局部加密的密码
A-5。复制光盘:复制数据光盘
A-6。Collatz系列
A-7。天之间:天的日期
A-8。制作字典
A-9。探测法转换
A-10。生活游戏
A-11。生命游戏的数据文件
A-12。斩:删除的邮件和新闻邮件标题
13。密码:产生随机的8个字符的密码
A-14。先进先出:每天备份,使用命名管道
A-15。利用模算子生成素数
48。树:显示一个目录树
A-17。tree2:备用目录树的脚本
A-18。字符串函数:C风格字符串函数
A-19。目录信息
20。哈希函数库
21。上色使用Hash函数的文本
22。更多关于哈希函数
A 23。安装USB钥匙链存储设备
A-24。转换为HTML
A-25。保持博客
26。保护字符串
a-27。解密字符串
a-28。垃圾邮件识别
A-29。垃圾邮件猎杀
A-30。让wget更容易使用
31。一个播客脚本
A-32。夜间备份到火线HD
A-33。扩展光盘命令
a-34。声卡安装脚本
A-35。在文本文件中定位拆分段落
使用。插入排序
a-37。标准偏差
A-38。对共享软件作者垫文件生成器
a-39。一个网页编辑器
a-40。玫瑰花瓣
A-41。quacky:一perquackey型文字游戏
a-42。尼姆
A-43。命令行
A-44。一个通用的shell脚本作业方案
A-45。骑士之旅
A - 46。魔术广场
A-47。十五拼图
A-48。河内的塔楼,图形版
A-49。河内的塔楼,交替的图形版本
A-50。getopt-simple.sh脚本的另一个版本
a-51。用于标签扩展的版本usegetopt.sh实例附录
蛋白A52。循环通过所有可能的颜色背景
a-53。摩尔斯电码的实践
a-54。Base64编码/解码
a-55。插入文本文件中使用sed
a-56。的gronsfeld密码
安-57。数字发生器
a-58。基础知识
A-59。测试各种命令的执行时间
A-60。关联阵列与传统阵列(执行时间)
C-1。计数信的出现
J-1。对于usegetopt.sh完成剧本
M-1。bashrc文件样本。
M-2。bash_profile文件。
N-1。viewdata.bat:DOS批处理文件
N-2。viewdata.sh:viewdata.bat shell脚本的转换
T-1。一个生成ASCII表脚本
T-2。另一个ASCII表脚本
T-3。三分之一个ASCII表脚本,使用awk








posted @ 2015-09-22 13:48  chenshoubiao  阅读(2364)  评论(0编辑  收藏  举报