前言 10
场景说明 11
基础知识简介 14
Linux 14
Linux产生与发展 14
Linux特点和优势 15
Shell 16
Shell脚本语言与编译型语言的差异 17
Shell分类 18
Shell使用 19
项目一 初识Linux Shell 20
[学习目标] 20
任务1.1 构建开发环境 22
任务1.2 vi/vim编辑器 33
1.2.1 vim使用实例 34
1.2.2 vim按键说明 36
任务1.3 Shell常用命令 41
1.3.1 基础命令 41
1.3.2 文件、目录操作命令 42
1.3.3 系统管理命令 52
1.3.4 关机/重启/退出 53
1.3.5 安装操作命令 53
1.3.6 用户操作命令 54
1.3.7 网络下载命令 55
1.3.8 服务操作命令 57
任务1.4 Shell脚本 58
1.4.1 第一个shell脚本:Hello World 58
1.4.2 脚本介绍 59
1.4.3 shell程序结构 59
1.4.4 shell脚本运行 60
任务1.5 Shell案例:打印有色彩的文本 61
任务1.6 Shell案例:图案打印 62
练习(每题10分,共计100分) 66
项目二 Shell变量 67
[学习目标] 67
任务2.1 Linux环境变量 68
2.1.1 查看环境变量 69
任务2.2 Shell变量 70
2.2.1 定义变量 70
2.2.2 使用变量 70
2.2.3 只读变量 71
2.2.4 删除变量 72
任务2.3 特殊符号 72
任务2.4 Shell案例:显示系统信息: 78
练习(每题12.5分,共计100分) 80
项目三 Shell传递参数 81
[学习目标] 81
任务3.1 Shell传递参数 82
任务3.2 Shell案例:参数比较 85
任务3.3Shell案例:通过参数描述变量 86
练习(前两题每题30分,第三题40分,共计100分) 87
项目四 Shell数组 89
[学习目标] 89
任务4.1 定义数组 90
任务4.2 使用数组 90
任务4.3 Shell案例:数组的使用 92
练习(100分) 95
项目五 Shell运算符 96
[学习目标] 96
任务5.1 Shell基本运算符 97
5.1.1 运算符 97
5.1.2 算术运算符 97
5.1.3 关系运算符 99
5.1.4 布尔运算符 101
5.1.5 逻辑运算符 103
5.1.6 字符串运算符 104
5.1.7 文件测试运算符 106
任务5.2 Shell案例:计算器 109
练习(每题25分,共计100分) 111
项目六 Shell命令输出 112
[学习目标] 112
任务6.1 Shell echo命令 113
任务6.2 Shell printf命令 116
任务6.3 Shell test命令 119
任务6.4 Shell案例:查看系统资源使用情况 122
练习(每题20分,共计100分) 125
项目七 Shell流程控制 126
[学习目标] 126
任务7.1 Shell流程控制 127
7.1.1 if 判断语句 127
7.1.2 for 循环语句 130
7.1.3 while 循环语句 131
7.1.4 until 循环语句 134
7.1.5 case多选语句 135
7.1.6 跳出循环体 137
任务7.2 Shell案例:重复执行命令和简单计算器 139
任务7.3 Shell案例:使用三种循环结构打印九九乘法表 141
练习(前两题每题30分,第三题40分,共计100分) 144
项目八 Shell函数 146
[学习目标] 146
任务8.1 Shell函数 147
8.1.1 Shell中函数的定义 147
8.1.2 函数参数 150
任务8.2 Shell案例 151
8.2.1 指定多个文件的行数 151
8.2.2 当前目录的所有文件 153
练习(每题50分,共计100分) 156
项目九 Shell输入/输出重定向 158
[学习目标] 158
任务9.1 linux文件描述符 159
任务9.2 Shell输入/输出重定向 160
9.2.1 输出重定向 160
9.2.2 输入重定向 163
9.2.3 重定向深入讲解 164
任务9.2 Shell案例:通过重定向测试批量添加ip 166
练习(每题25分,共计100分) 169
项目十 Shell文件包含 171
[学习目标] 171
任务10.1 Shell文件包含 172
任务10.2 Shell案例:查找最大文件 172
练习(每题50分,共计100分) 174
项目十一 Shell文本处理命令 175
[学习目标] 175
任务11.1 学习和使用grep 176
任务11.2 学习和使用sed 179
任务11.3 学习和使用cut 183
任务11.4 学习和使用awk 185
练习(第一题10分,第2-7每题15分,共计100分) 188
项目十二 Shell的调试 189
[学习目标] 189
任务12.1 使用trap命令 190
任务12.2 使用tee命令 192
任务12.3 使用“调试钩子” 193
任务12.4 使用Shell的执行选项 194
练习(每题50分,共计100分) 196
项目十三 Shell综合案例一(lnmp+wordpress) 197
[学习目标] 197
任务13.1 手动安装Linux Nginx Mysql PHP和WordPress 198
13.1.1 准备工作 198
13.1.2 安装Mysql5.6.29 199
13.1.3 安装PHP5.5.12 202
13.1.4 安装Nginx1.10 205
13.1.5 安装WordPress 206
13.1.6 启动网页 207
任务13.2 脚本安装Linux Nginx Mysql PHP 和WordPress 207
13.2.1 初始化安装脚本编写 207
13.2.2 Mysql安装脚本的编写 209
13.2.3 PHP安装脚本的编写 211
13.2.4 Nginx安装脚本的编写 213
13.2.5 WordPress安装脚本的编写 214
13.2.6 验证wordpress 216
练习(每题50分,共计100分) 218
项目十四 shell综合案例二(安装Openstack) 219
[学习目标] 219
任务14.1 手动安装Openstack 220
什么是Openstack 220
14.1.1基本环境准备 222
14.1.2 安装mysql数据库服务 225
14.1.3 安装keystone认证服务 226
14.1.4 安装glance镜像服务 230
14.1.5 安装nova计算服务 233
14.1.6 安装neutron网络服务 238
14.1.7 安装dashboard服务 248
任务14.2 脚本安装openstack 250
14.2.1 基本环境脚本的编写 255
14.2.2 mysql脚本的编写 256
14.2.3 keystone脚本的编写 258
14.2.4 glance脚本的编写 263
14.2.5 nova脚本的编写 266
14.2.6 neutron脚本的编写 270
14.2.7 dashboard脚本的编写 279
14.2.8 验证登录,使用openstack 280
附录Shell编码规范说明 295
1. 什么时候使用shell 295
2.Shell文件和解释器调用 295
3.环境 296
4.注释 296
5.格式 298
6.特性及错误 304
7.命名转换 308
8.调用命令 311
1