第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