
本书从实际的应用场景出发,深入浅出地介绍了编写 Shell脚本所包含的各项常用技术,使读者在不知不觉中就能掌握 Shell脚本的编写和使用技巧,是 Shell脚本编程开发初学者的绝佳首选。
本书分为 18章,分别介绍了 Linux系统基本知识,Shell编程基础,Shell编程的常用语法知识,如变量、特殊符号、文件处理、分支结构和循环结构、正则表达式、grep命令、sed编辑器、gawk编辑器等,如何对 Shell脚本的执行进行控制和优化,最后通过两个应用实例,加深读者对 Linux系统下 Shell编程的认识,提高读者的编程能力。
本书适用于 Shell编程初学者和 Linux系统管理的初学者,可以作为日常学习的教材,还可以作为日常管理的参考书。
为何选择 Bash Shell?
Linux系统的发布版本目前有很多,而 Debian系列的 Ubuntu系统是使用率较高的 Linux系统,在 Ubuntu系统中默认安装的 Bash也是所有 Linux系统中使用率较高的脚本语言,因此本书采用 Linux Bash来讲解脚本语言编程与应用。
本书真的适合你吗?
本书旨在帮助那些刚接触 Linux系统以及 Shell编程的“新人”,提供 Shell编程中的常用语法以及使用率较高的知识;本书涉及 Shell编程中的变量使用、条件结构、循环结构、函数、正则表达式、grep命令、sed编辑器、gawk编辑器的常用方式,读者可以根据自己的需要选择全部学习或只学习部分内容。
本书是一本全面的 Shell脚本编程技术书,是比较实用的 Shell编程案例书,部分实例和框架在下面给读者做一个预览。
涉及的示例和案例
使用 Shell操作 MySQL数据库 函数的嵌套使用
系统内存监控 数组在函数中的应用
系统硬盘空间监控 循环结构的使用
进程空闲监控 循环结构的控制
日志定时备份 条件结构的使用
计算器模拟 测试命令的使用
后台程序运行过程控制 设备文件的挂载和卸载
前台程序暂停及继续执行 输入输出的重定向
使用键盘发送信号控制进程的执行 引号的使用
正则表达式的使用 元字符的使用
gawk编辑器的使用 通配符的使用
sed编辑器的使用 管道的使用
算术运算的实现 位置变量的使用
函数的递归调用 环境变量的使用
本书特点
.本书介绍的知识以及实例来自于多位“奋斗”在 Linux系统中的开发人员和实施维护人员,结合众人多年对 Shell脚本编程的了解和独特见解,因此本书的实用性是非常强的。书中所述内容不管是对理论知识的介绍,还是具体实例的开发,都是从实际应用角度出发,精心选择在实际项目中使用的实例进行细致的讲解和分析。
.深入浅出、轻松易学,以实例为主线,激发读者的阅读兴趣,让读者能够真正学习到在 Linux系统下如何使用 Shell脚本解决实际问题。
.贴近读者、贴近实际,本书中的实例大部分都紧跟一个知识点,做到理论和实际相结合,用大量的实例说明如何使用讲述的知识来编写 Shell脚本,从而解决实际问题。
面向读者
. Linux系统 Shell编程初学者 . Linux环境开发人员 . Linux系统管理员 .网络管理员 .服务器管理员
资源下载
本书配套示例脚本包下载地址(请注意字母大小写和数字)如下:
http://pan.baidu.com/s/1bnER5SF 如果下载有问题,请发邮件到电子邮箱 booksaga@163.com,邮件标题为“求 bash脚本”。
本书第 1~15章由南阳理工学院的马玉军编写,第 16~18章由郝军编写,其他参与编写的人员还有李光明、史帅、庞国威、娄晓东、郭刚、李兰英、林龙、张泽娜、李春城、宋楠、李为民、祝明慧、周瑞、潘承恩、殷龙。
编者 2014年 9月
目 录
第 1章学习 Shell的背景知识——Linux系统 .1
1.1 Linux系统基础 1
1.1.1 Linux系统的发展. 1
1.1.2 Linux系统和 Windows系统的区别 2
1.1.3 Linux的启动过程. 2
1.2 Linux文件系统基础介绍 5
1.2.1 必须了解的节点 inode 6
1.2.2 Linux系统文件结构. 7
1.3 学会 Linux系统的基本使用 .10
1.3.1 系统的登录与退出 10
1.3.2 系统基本选项配置 12
1.3.3 文本编辑器的使用 13
1.4 走进 Shell .18
1.4.1 什么是 Shell. 19
1.4.2 Shell在 Linux系统中的作用. 19
1.4.3 Shell的种类. 20
1.5 小结.21
第 2章迈出 Shell脚本编程第一步 22
2.1 Shell脚本语言概述 .22
2.1.1 Shell脚本语言的定义. 22
2.1.2 Shell终端的基本使用. 23
2.1.3 Shell终端菜单的使用. 23
2.2 Shell命令格式介绍 .24
2.2.1 Shell命令格式. 24
2.2.2 命令行界面介绍 25
2.2.3 如何获取帮助 26
2.3 第一个 Shell程序:Hello,Bash Shell! 28
2.3.1 创建 Shell脚本 28
2.3.2 Shell脚本中的格式介绍. 31
2.3.3 如何执行 Shell程序 32
2.4 小结.33
第 3章 Shell常用命令大演练 34
3.1 Shell命令使用基础 .34
3.1.1 文件类型 34
3.1.2 绝对路径和相对路径 35
3.1.3 文件属性和文件权限 36
3.1.4 用户和用户组 36
3.1.5 特殊介绍 39
3.2 用户和用户组管理.40
3.2.1 用户管理常用命令 40
3.2.2 用户组管理常用命令 43
3.2.3 其他常用命令 45
3.3 文件和操作.48
3.3.1 文件操作常用命令 48
3.3.2 操作常用命令 52
3.3.3 文件权限管理常用命令 56
3.3.4 查找文件常用命令 58
3.4 系统管理相关.60
3.4.1 网络操作常用命令 60
3.4.2 系统资源管理常用命令 63
3.4.3 磁盘信息查看常用命令 66
3.5 小结.67
第 4章 Shell脚本中的变量68
4.1 变量的简单使用.68
4.1.1 变量的使用 68
4.1.2 变量的输入和输出 70
4.1.3 变量的输出命令 echo . 74
4.2 Shell中特殊变量的使用 .78
4.2.1 位置参数介绍 78
4.2.2 $@和$*的区别 79
4.3 环境变量的使用.80
4.3.1 Shell中的环境变量. 80
4.3.2 环境变量的配置文件 83
4.3.3 全局环境变量和本地环境变量 86
4.3.4 环境变量的设定 87
4.3.5 环境变量的取消 89
4.4 小结.89
第 5章 Shell脚本中的特殊符号.90
5.1 引号的使用.90
5.1.1 单引号的使用 90
5.1.2 双引号的使用 91
5.1.3 倒引号的使用 92
5.2 通配符和元字符.93
5.2.1 使用通配符 93
5.2.2 使用元字符 96
5.3 管道.99
5.4 其他特殊字符介绍.100
5.4.1 后台运行符 100
5.4.2 括号 101
5.4.3 分号 103
5.5 小结.103
第 6章 Linux中的文件处理 .105
6.1 Linux中的文件类型 105
6.1.1 设备文件 106
6.1.2 设备文件的挂载和卸载 107
6.1.3 链接文件 111
6.1.4 文件描述符 113
6.2 标准输入、输出与错误.114
6.2.1 标准输入 114
6.2.2 标准输出和标准错误 114
6.3 重定向.114
6.3.1 重定向的定义 115
6.3.2 输入重定向 115
6.3.3 输出重定向 117
6.4 合并标准输出和标准错误 119
6.5 小结.120
第 7章 Shell脚本中的分支结构.121
7.1 测试命令的使用.121
7.1.1 测试命令的基础结构 121
7.1.2 测试文件类型 123
7.1.3 测试字符串 127
7.1.4 测试数值 128
7.1.5 复合测试条件 129
7.2 if分支结构 .131
7.2.1 if -then结构. 131
7.2.2 if -then-else结构 132
7.2.3 嵌套结构 134
7.3 case多条件分支结构.136
7.3.1 case结构基础 137
7.3.2 在 Shell脚本中使用 case结构. 138
7.3.3 select命令的使用 139
7.4 小结.140
第 8章 Shell中的循环结构142
8.1 for循环 .142
8.1.1 使用 for-in结构. 142
8.1.2 C式 for结构 . 145
8.2 while命令的使用.148
8.2.1 使用 while结构. 148
8.2.2 多条件的 while结构. 149
8.2.3 使用 until命令 149
8.3 命令的嵌套.151
8.3.1 for命令的嵌套 151
8.3.2 while命令的嵌套 154
8.3.3 until命令的嵌套 . 156
8.4 循环控制符.157
8.4.1 使用 break中断. 157
8.4.2 使用 continue继续 159
8.5 小结.160
第 9章 Shell中的函数 .162
9.1 函数的基本用法.162
9.1.1 函数的创建与使用 162
9.1.2 函数的参数 164
9.2 函数的返回值.165
9.2.1 返回值基础 165
9.2.2 函数的默认返回值 166
9.2.3 return命令的使用. 167
9.2.4 使用函数的返回值 168
9.3 函数中的全局变量和局部变量 169
9.3.1 全局变量 169
9.3.2 局部变量 170
9.4 数组与函数.171
9.4.1 数组作为函数参数 171
9.4.2 数组作为函数返回值 172
9.5 脚本函数递归.173
9.6 函数的嵌套调用.174
9.7 小结.176
第 10章 Shell脚本编写技巧177
10.1 脚本编写规范.177
10.1.1 命名规范 177
10.1.2 注释风格 178
10.1.3 其他需要注意的规范 180
10.2 脚本优化.181
10.2.1 Shell脚本优化原则. 181
10.2.2 提供足够的提示信息 182
10.3 脚本使用技巧.184
10.3.1 命令选项说明 184
10.3.2 算术运算 184
10.3.3 高级算术运算 187
10.4 小结.188
第 11章正则表达式 189
11.1 正则表达式基础.189
11.1.1 正则表达式的定义 189
11.1.2 正则表达式的分类 190
11.2 基本正则表达式的常用符号 190
11.2.1 使用点字符匹配单字符 190
11.2.2 使用定位符 191
11.2.3 使用“*”匹配字符串中的单字符或其重复序列 193
11.2.4 使用“\”屏蔽一个特殊字符的含义. 194
11.3 扩展正则表达式的常用符号 195
11.3.1 使用“[]”匹配一个范围或集合 . 195
11.3.2 使用“\{\}”匹配模式结果出现的次数 196
11.3.3 问号的使用 197
11.4 小结.197
第 12章 Shell中的文本搜索工具——grep家族 199
12.1 grep的基础使用 199
12.1.1 grep命令的基本使用方式 199
12.1.2 grep选项 200
12.1.3 行数 201
12.1.4 大小写敏感 202
12.1.5 显示非匹配行 203
12.1.6 查询多个文件或多个关键字 205
12.2 grep和正则表达式 206
12.2.1 模式范围以及范围组合 206
12.2.2 定位符的使用 207
12.2.3 字符匹配 208
12.2.4 模式出现几率 209
12.2.5 匹配特殊字符 210
12.3 grep命令的扩展使用 211
12.3.1 类名的使用 211
12.3.2 egrep命令的使用 212
12.3.3 fgrep命令的使用 213
12.4 grep命令使用实例 214
12.4.1 搜索——查找特定或文字 214
12.4.2 使用 ps命令检索特定的进程 215
12.5 小结.216
第 13章 sed编程 217
13.1 认识 sed 217
13.1.1 sed工作模式 . 217
13.1.2 sed常用指令 . 218
13.1.3 sed常用选项 . 219
13.1.4 sed地址范围 . 220
13.2 sed编辑器常用命令 221
13.2.1 替换命令的使用 221
13.2.2 删除命令的使用 223
13.2.3 文本的添加和替换 224
13.3 高级 sed编程 .225
13.3.1 同时处理多行数据 225
13.3.2 sed编辑器的空间 . 226
13.3.3 sed编辑器的反向 . 227
13.3.4 重定向 sed的输出 228
13.4 小结.229
第 14章 gawk编程230
14.1 gawk概述 .230
14.1.1 gawk基本介绍 230
14.1.2 gawk基本使用 232
14.2 变量的使用.234
14.2.1 内置变量的使用 234
14.2.2 自定义变量的使用 236
14.2.3 数组的使用 237
14.3 结构的使用.238
14.3.1 条件结构的使用 238
14.3.2 循环结构的使用 241
14.3.3 循环结构控制语句 243
14.4 函数的使用.244
14.4.1 算术函数的使用 244
14.4.2 字符串处理函数的使用 246
14.4.3 时间函数的使用 247
14.5 小结.249
第 15章脚本控制 250
15.1 Linux信号控制 250
15.1.1 Linux信号机制简介. 250
15.1.2 使用 Shell脚本操作信号 252
15.2 进程的控制.254
15.2.1 后台运行符介绍 254
15.2.2 运行进程的控制 255
15.2.3 nohup命令的使用. 257
15.3 脚本运行的优先级.258
15.3.1 优先级介绍 258
15.3.2 使用 nice指定优先级 . 259
15.3.3 使用 renice重置优先级 260
15.4 小结.261
第 16章脚本运行的优化 .262
16.1 添加窗口.262
16.1.1 dialog软件的安装. 262
16.1.2 dialog命令的帮助选项. 263
16.1.3 dialog命令的使用. 264
16.2 dialog常用窗口的使用 .268
16.2.1 消息窗口 268
16.2.2 yesno窗口 . 269
16.2.3 文本框的使用 271
16.2.4 菜单的使用 272
16.3 颜色的使用.273
16.4 创建菜单.276
16.4.1 在 Shell脚本中创建菜单 277
16.4.2 创建子菜单函数 278
16.4.3 脚本的整合 279
16.5 小结.280
第 17章 Shell实战之系统管理 281
17.1 系统监测.281
17.1.1 系统监控基础 281
17.1.2 Ubuntu自带的系统监控工具. 284
17.1.3 监控脚本的编写 286
17.2 计划任务的实现.287
17.2.1 at命令的使用 287
17.2.2 atq命令的使用 292
17.2.3 cron的使用 293
17.3 网络管理.295
17.3.1 网络配置 295
17.3.2 服务器的安装 299
17.4 日志管理.301
17.4.1 日志简介 302
17.4.2 守护进程 syslogd. 303
17.4.3 日志的备份操作 305
17.4.4 日志的定时操作 306
17.5 小结.307
第 18章 Shell实战之数据库操作.308
18.1 Linux系统中的数据库 308
18.1.1 SQLite简介. 308
18.1.2 SQLite的图形化操作. 311
18.1.3 MySQL简介 314
18.2 SQL语句 316
18.2.1 SQL语言基本介绍. 316
18.2.2 基本的 SQL操作 317
18.2.3 在 Shell脚本中执行 SQL语句 319
18.3 图书管理系统中数据库操作实例 320
18.3.1 数据库操作基本流程 321
18.3.2 创建表 321
18.3.3 增加图书信息 322
18.3.4 修改图书信息 323
18.3.5 删除图书信息 324
18.4 小结.324