《Linux Bash编程与脚本应用实战》从实际的应用场景出发,深入浅出地介绍了编写 Shell脚本所包含的各项常用技术,使读者在不知不觉中就能掌握 Shell脚本的编写和使用技巧,是 Shell脚本编程开发初学者的绝佳首选。
目录
- 第1章学习Shell的背景知识——Linux系统.1
- 1.1Linux系统基础1
- 1.1.1Linux系统的发展.1
- 1.1.2Linux系统和Windows系统的区别2
- 1.1.3Linux的启动过程.2
- 1.2Linux文件系统基础介绍5
- 1.2.1必须了解的节点inode6
- 1.2.2Linux系统文件结构.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.2Shell在Linux系统中的作用.19
- 1.4.3Shell的种类.20
- 1.5小结.21
- 第2章迈出Shell脚本编程第一步22
- 2.1Shell脚本语言概述.22
- 2.1.1Shell脚本语言的定义.22
- 2.1.2Shell终端的基本使用.23
- 2.1.3Shell终端菜单的使用.23
- 2.2Shell命令格式介绍.24
- 2.2.1Shell命令格式.24
- 2.2.2命令行界面介绍25
- 2.2.3如何获取帮助26
- 2.3第一个Shell程序:Hello,BashShell!28
- 2.3.1创建Shell脚本28
- 2.3.2Shell脚本中的格式介绍.31
- 2.3.3如何执行Shell程序32
- 2.4小结.33
- 第3章Shell常用命令大演练34
- 3.1Shell命令使用基础.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 [2]
- 4.1变量的简单使用.68
- 4.1.1变量的使用68
- 4.1.2变量的输入和输出70
- 4.1.3变量的输出命令echo.74
- 4.2Shell中特殊变量的使用.78
- 4.2.1位置参数介绍78
- 4.2.2$@和$*的区别79
- 4.3环境变量的使用.80
- 4.3.1Shell中的环境变量.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.1Linux中的文件类型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 [2]
- 7.1.5复合测试条件129
- 7.2if分支结构.131
- 7.2.1if-then结构.131
- 7.2.2if-then-else结构132
- 7.2.3嵌套结构134
- 7.3case多条件分支结构.136
- 7.3.1case结构基础137
- 7.3.2在Shell脚本中使用case结构.138
- 7.3.3select命令的使用139
- 7.4小结.140
- 第8章Shell中的循环结构142
- 8.1for循环.142
- 8.1.1使用for-in结构.142
- 8.1.2C式for结构.145
- 8.2while命令的使用.148
- 8.2.1使用while结构.148
- 8.2.2多条件的while结构.149
- 8.2.3使用until命令149
- 8.3命令的嵌套.151
- 8.3.1for命令的嵌套151
- 8.3.2while命令的嵌套154
- 8.3.3until命令的嵌套.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.3return命令的使用.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.1Shell脚本优化原则.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.1grep的基础使用199
- 12.1.1grep命令的基本使用方式199
- 12.1.2grep选项200
- 12.1.3行数201
- 12.1.4大小写敏感202
- 12.1.5显示非匹配行203
- 12.1.6查询多个文件或多个关键字205
- 12.2grep和正则表达式206
- 12.2.1模式范围以及范围组合206
- 12.2.2定位符的使用207
- 12.2.3字符匹配208 [2]
- 12.2.4模式出现几率209
- 12.2.5匹配特殊字符210
- 12.3grep命令的扩展使用211
- 12.3.1类名的使用211
- 12.3.2egrep命令的使用212
- 12.3.3fgrep命令的使用213
- 12.4grep命令使用实例214
- 12.4.1目录搜索——查找特定目录或文字214
- 12.4.2使用ps命令检索特定的进程215
- 12.5小结.216
- 第13章sed编程217
- 13.1认识sed217
- 13.1.1sed工作模式.217
- 13.1.2sed常用指令.218
- 13.1.3sed常用选项.219
- 13.1.4sed地址范围.220
- 13.2sed编辑器常用命令221
- 13.2.1替换命令的使用221
- 13.2.2删除命令的使用223
- 13.2.3文本的添加和替换224
- 13.3高级sed编程.225
- 13.3.1同时处理多行数据225
- 13.3.2sed编辑器的空间.226
- 13.3.3sed编辑器的反向.227
- 13.3.4重定向sed的输出228
- 13.4小结.229
- 第14章gawk编程230
- 14.1gawk概述.230
- 14.1.1gawk基本介绍230
- 14.1.2gawk基本使用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.1Linux信号控制250
- 15.1.1Linux信号机制简介.250
- 15.1.2使用Shell脚本操作信号252
- 15.2进程的控制.254
- 15.2.1后台运行符介绍254
- 15.2.2运行进程的控制255
- 15.2.3nohup命令的使用.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.1dialog软件的安装.262
- 16.1.2dialog命令的帮助选项.263
- 16.1.3dialog命令的使用.264
- 16.2dialog常用窗口的使用.268
- 16.2.1消息窗口268
- 16.2.2yesno窗口.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.2Ubuntu自带的系统监控工具.284
- 17.1.3监控脚本的编写286
- 17.2计划任务的实现.287
- 17.2.1at命令的使用287
- 17.2.2atq命令的使用292
- 17.2.3cron的使用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.1Linux系统中的数据库308
- 18.1.1SQLite简介.308
- 18.1.2SQLite的图形化操作.311
- 18.1.3MySQL简介314
- 18.2SQL语句316
- 18.2.1SQL语言基本介绍.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 [2]