《Shell从入门到精通 第2版》PDF下载

  • 购买积分:13 如何计算积分?
  • 作  者:张春晓等编著
  • 出 版 社:北京:清华大学出版社
  • 出版年份:2014
  • ISBN:9787302338079
  • 页数:373 页
图书介绍:本书共15章,分3篇。第1篇Shell编程入门介绍简单的Shell程序设计、Shell编程环境搭建及变量和引用等。第2篇语法进阶全面介绍Shell编程包括条件测试和判断语句、循环结构、数组、正则表达式、基本文本处理、流编辑、文本处理利器awk命令、文件的操作及子Shell与进程处理。第3篇实战篇介绍Shell脚本调试技术及Shell编程实战等。

第1篇 认识Shell编程 2

第1章 Shell入门基础(教学视频:66分钟) 2

1.1 为什么学习和使用Shell编程 2

1.2 什么是Shell 2

1.2.1 Shell的起源 3

1.2.2 Shell的功能 4

1.2.3 Shell的分类 4

1.3 作为程序设计语言的Shell 5

1.3.1 交互式程序 5

1.3.2 创建脚本 6

1.3.3 把脚本设置为可执行 6

1.4 向脚本传递参数 7

1.4.1 Shell脚本的参数 8

1.4.2 参数扩展 9

1.5 第一个Shell程序:Hello,Bash Shell! 10

1.5.1 Shell脚本的基本元素 10

1.5.2 指定命令解读器 11

1.5.3 Shell脚本中的注释和风格 12

1.5.4 如何执行Shell程序 13

1.5.5 Shell程序的退出状态 14

1.6 小结 15

第2章 Shell编程环境的搭建(教学视频:49分钟) 16

2.1 在不同的操作系统上搭建Shell编程环境 16

2.1.1 在Windows上搭建Shell编程环境 16

2.1.2 在Linux上搭建Shell编程环境 20

2.1.3 在FreeBSD上搭建Shell编程环境 22

2.2 编辑器的选择 23

2.2.1 图形化编辑器 23

2.2.2 vi(vim)编辑器 29

2.3 系统环境的搭建 36

2.3.1 Shell配置文件 36

2.3.2 命令别名 39

2.4 小结 39

第2篇 Shell编程基础 42

第3章 变量和引用(教学视频:62分钟) 42

3.1 深入认识变量 42

3.1.1 什么是变量 42

3.1.2 变量的命名 42

3.1.3 变量的类型 43

3.1.4 变量的定义 45

3.1.5 变量和引号 48

3.1.6 变量的作用域 48

3.1.7 系统变量 51

3.1.8 环境变量 53

3.2 变量赋值和清空 55

3.2.1 变量赋值 55

3.2.2 引用变量的值 55

3.2.3 清除变量 57

3.3 引用和替换 57

3.3.1 引用 58

3.3.2 全引用 58

3.3.3 部分引用 59

3.3.4 命令替换 59

3.3.5 转义 60

3.4 小结 60

第4章 条件测试和判断语句(教学视频:77分钟) 61

4.1 条件测试 61

4.1.1 条件测试的基本语法 61

4.1.2 字符串测试 62

4.1.3 整数测试 65

4.1.4 文件测试 67

4.1.5 逻辑操作符 70

4.2 条件判断语句 71

4.2.1 使用简单的if语句进行条件判断 72

4.2.2 使用ifelse语句进行流程控制 74

4.2.3 使用ifelif语句进行多条件判断 76

4.2.4 使用exit语句退出程序 78

4.3 多条件判断语句case 80

4.3.1 多条件判断语句case的基本语法 80

4.3.2 利用case语句处理选项参数 81

4.3.3 利用case语句处理用户输入 82

4.4 运算符 83

4.4.1 算术运算符 83

4.4.2 位运算符 87

4.4.3 自增/自减运算符 89

4.4.4 数字常量的进制 91

4.5 小结 92

第5章 循环结构(教学视频:61分钟) 93

5.1 步进循环语句for 93

5.1.1 带列表的for循环语句 93

5.1.2 不带列表的for循环语句 98

5.1.3 类C风格的for循环语句 99

5.1.4 使用for循环语句处理数组 100

5.2 until循环语句 101

5.2.1 until语句的基本语法 101

5.2.2 利用until语句批量增加用户 102

5.3 while循环语句 104

5.3.1 while语句的基本语法 104

5.3.2 通过计数器控制while循环结构 104

5.3.3 通过结束标记控制while循环结构 105

5.3.4 理解while语句与until语句的区别 106

5.4 嵌套循环 107

5.5 利用break和continue语句控制循环 108

5.5.1 利用break语句控制循环 108

5.5.2 利用continue语句控制循环 110

5.5.3 分析break语句和continue语句的区别 111

5.6 小结 114

第6章 函数(教学视频:60分钟) 115

6.1 函数 115

6.1.1 什么是函数 115

6.1.2 函数的定义 116

6.1.3 函数的调用 117

6.1.4 函数链接 118

6.1.5 函数的返回值 119

6.1.6 函数和别名 121

6.1.7 再议全局变量和局部变量 123

6.2 函数参数 125

6.2.1 含有参数的函数的调用方法 125

6.2.2 获取函数参数的个数 125

6.2.3 通过位置变量接收参数值 126

6.2.4 移动位置参数 127

6.2.5 通过getopts接收函数参数 128

6.2.6 间接参数传递 129

6.2.7 通过全局变量传递数据 130

6.2.8 传递数组参数 131

6.3 函数库文件 132

6.3.1 函数库文件的定义 132

6.3.2 函数库文件的调用 133

6.4 递归函数 134

6.5 小结 137

第7章 数组(教学视频:52分钟) 138

7.1 定义数组 138

7.1.1 通过指定元素值来定义数组 138

7.1.2 通过declare语句定义数组 139

7.1.3 通过元素值集合定义数组 140

7.1.4 通过键值对定义数组 141

7.1.5 数组和普通变量 142

7.2 数组的赋值 143

7.2.1 按索引为元素赋值 143

7.2.2 通过集合为数组赋值 144

7.2.3 在数组末尾追加新元素 145

7.2.4 通过循环为数组元素赋值 146

7.3 访问数组 146

7.3.1 访问第1个数组元素 146

7.3.2 通过下标访问数组元素 147

7.3.3 计算数组的长度 147

7.3.4 通过循环遍历数组元素 149

7.3.5 引用所有的数组元素 150

7.3.6 以切片方式获取部分数组元素 150

7.3.7 数组元素的替换 153

7.4 删除数组 154

7.4.1 删除指定数组元素 154

7.4.2 删除整个数组 155

7.5 数组的其他操作 155

7.5.1 复制数组 155

7.5.2 连接数组 156

7.5.3 加载文件内容到数组 157

7.6 小结 157

第8章 正则表达式(教学视频:57分钟) 158

8.1 什么是正则表达式 158

8.1.1 为什么使用正则表达式 158

8.1.2 如何学习正则表达式 159

8.1.3 如何实践正则表达式 160

8.2 正则表达式基础 160

8.2.1 正则表达式的原理 160

8.2.2 基本正则表达式 161

8.2.3 扩展正则表达式 166

8.2.4 Peri正则表达式 168

8.2.5 正则表达式字符集 169

8.3 正则表达式应用 170

8.3.1 匹配单个字符 170

8.3.2 匹配多个字符 173

8.3.3 匹配字符串的开头或者结尾 175

8.3.4 运算符优先级 176

8.3.5 子表达式 177

8.3.6 通配符 180

8.4 grep命令 181

8.4.1 grep命令的基本语法 181

8.4.2 grep命令族简介 182

8.5 小结 182

第9章 基本文本处理(教学视频:100分钟) 183

9.1 使用echo命令输出文本 183

9.1.1 显示普通字符串 183

9.1.2 显示转义字符 184

9.1.3 显示变量 186

9.1.4 换行和不换行 187

9.1.5 显示命令执行结果 188

9.1.6 echo命令执行结果的重定向 188

9.2 文本的格式化输出 189

9.2.1 使用UNIX制表符 189

9.2.2 使用fold命令格式化行 190

9.2.3 使用fmt命令格式化段落 192

9.2.4 使用rev命令反转字符顺序 194

9.2.5 使用pr命令格式化文本页 195

9.3 使用sort命令对文本排序 198

9.3.1 sort命令的基本用法 198

9.3.2 使用单个关键字排序 200

9.3.3 根据指定的列排序 203

9.3.4 根据关键字降序排序 204

9.3.5 数值列的排序 205

9.3.6 自定义列分隔符 206

9.3.7 删除重复的行 207

9.3.8 根据多个关键字排序 208

9.3.9 使用sort命令合并文件 209

9.4 文本的统计 211

9.4.1 输出含有行号的文本行 211

9.4.2 统计行数 213

9.4.3 统计单词数和字符数 215

9.5 使用cut命令选取文本列 215

9.5.1 cut命令及其语法 216

9.5.2 选择指定的文本列 217

9.5.3 选择指定数量的字符 218

9.5.4 排除不包含列分隔符的行 219

9.6 使用paste命令拼接文本列 220

9.6.1 paste命令及其语法 220

9.6.2 自定义列分隔符 222

9.6.3 拼接指定的文本列 222

9.7 使用join命令联接文本列 223

9.7.1 join命令及其语法 224

9.7.2 指定联接关键字列 225

9.7.3 内联接文本文件 226

9.7.4 左联接文本文件 226

9.7.5 右联接文本文件 227

9.7.6 全联接文本文件 228

9.7.7 自定义输出列 229

9.8 使用tr命令替换文件内容 229

9.8.1 tr命令及其语法 229

9.8.2 去除重复出现的字符 230

9.8.3 删除空行 231

9.8.4 大小写转换 232

9.8.5 删除指定字符 232

9.9 小结 234

第10章 流编辑(教学视频:52分钟) 235

10.1 sed命令及其语法 235

10.1.1 sed命令以及语法 235

10.1.2 sed命令的工作方式 237

10.1.3 使用行号定位文本行 237

10.1.4 使用正则表达式定位文本行 238

10.2 sed命令的常用操作 239

10.2.1 sed编辑命令基本语法 239

10.2.2 选择文本 240

10.2.3 替换文本 242

10.2.4 删除文本 246

10.2.5 追加文本 248

10.2.6 插入文本 249

10.3 组合命令 250

10.3.1 使用-e选项执行多个子命令 250

10.3.2 使用分号执行多个子命令 251

10.3.3 对一个地址使用多个子命令 251

10.3.4 sed脚本文件 253

10.4 小结 255

第11章 文本处理利器awk命令(教学视频:78分钟) 256

11.1 awk入门 256

11.1.1 awk的功能 256

11.1.2 awk命令的基本语法 257

11.1.3 awk的工作流程 258

11.1.4 执行awk程序的几种方式 258

11.2 awk的模式匹配 260

11.2.1 关系表达式 260

11.2.2 正则表达式 261

11.2.3 混合模式 262

11.2.4 区间模式 262

11.2.5 BEGIN模式 263

11.2.6 END模式 264

11.3 变量 265

11.3.1 变量的定义和引用 265

11.3.2 系统内置变量 266

11.3.3 记录分隔符和字段分隔符 267

11.3.4 记录和字段的引用 269

11.4 运算符和表达式 270

11.4.1 算术运算符 270

11.4.2 赋值运算符 271

11.4.3 条件运算符 272

11.4.4 逻辑运算符 273

11.4.5 关系运算符 274

11.4.6 其他运算符 275

11.5 函数 275

11.5.1 字符串函数 275

11.5.2 算术函数 279

11.6 数组 279

11.6.1 数组的定义和赋值 279

11.6.2 遍历数组 281

11.7 流程控制 283

11.7.1 if语句 283

11.7.2 while语句 284

11.7.3 do...while语句 285

11.7.4 for语句 286

11.7.5 break语句 287

11.7.6 continue语句 288

11.7.7 next语句 288

11.7.8 exit语句 289

11.8 awk程序的格式化输出 290

11.8.1 基本print语句 290

11.8.2 格式化输出printf语句 290

11.8.3 使用sprintf()函数生成格式化字符串 291

11.9 awk的程序与Shell的交互 292

11.9.1 通过管道实现与Shell的交换 292

11.9.2 通过system函数实现与Shell的交互 293

11.10 小结 293

第12章 文件的操作(教学视频:74分钟) 294

12.1 文件 294

12.1.1 列出文件 294

12.1.2 文件类型 296

12.1.3 文件的权限 298

12.2 查找文件 299

12.2.1 find命令以及语法 299

12.2.2 find命令:路径 300

12.2.3 find命令:测试 301

12.2.4 find命令:使用!运算符对测试求反 304

12.2.5 find命令:处理文件权限错误信息 305

12.2.6 find命令:动作 305

12.3 比较文件 307

12.3.1 使用comm比较文件 307

12.3.2 使用diff比较文件 310

12.4 文件描述符 314

12.4.1 什么是文件描述符 314

12.4.2 标准输入、标准输出和标准错误 314

12.5 重定向 315

12.5.1 输出重定向(覆盖) 315

12.5.2 输出重定向(追加) 317

12.5.3 输入重定向 318

12.5.4 当前文档 319

12.5.5 重定向两个文件描述符 319

12.5.6 使用exec命令分配文件描述符 320

12.6 小结 322

第13章 子Shell与进程处理(教学视频:49分钟) 323

13.1 子Shell 323

13.1.1 什么是子Shell 323

13.1.2 内部命令、保留字和外部命令 324

13.1.3 在子Shell中执行命令 327

13.1.4 把子Shell中的变量值传回父Shell 331

13.2 进程处理 333

13.2.1 什么是进程 334

13.2.2 通过脚本监控进程 334

13.2.3 作业控制 335

13.2.4 信号与trap命令 338

13.3 小结 340

第3篇 Shell编程实战 342

第14章 Shell脚本调试技术(教学视频:33分钟) 342

14.1 Shell脚本中的常见错误 342

14.1.1 常见语法错误 342

14.1.2 常见逻辑错误 345

14.2 Shell脚本调试技术 346

14.2.1 使用echo命令调试脚本 346

14.2.2 使用trap命令调试Shell脚本 347

14.2.3 使用tee命令调试Shell脚本 349

14.2.4 使用调试钩子调试Shell脚本 351

14.3 小结 352

第15章 利用Shell脚本解决实际问题(教学视频:33分钟) 353

15.1 编写系统服务脚本 353

15.1.1 系统启动过程 353

15.1.2 运行级别 354

15.1.3 服务脚本的基本语法 355

15.1.4 编写MySQL服务脚本 357

15.2 通过脚本管理Apache服务器日志 364

15.2.1 Apache以及日志文件简介 364

15.2.2 备份归档文件名生成函数 365

15.2.3 过期日志备份归档函数 366

15.2.4 过期日志删除函数 368

15.2.5 日志归档主程序 368

15.2.6 定时运行日志归档脚本 369

15.3 小结 373