精通Shell编程

精通Shell编程
作 者: Sriranga Veeraraghavan 卢涛
出版社: 人民邮电出版社
丛编项:
版权说明: 本书为公共版权或经版权方授权,请支持正版图书
标 签: UNIX操作系统 程序设计
ISBN 出版时间 包装 开本 页数 字数
未知 暂无 暂无 未知 0 暂无

作者简介

暂缺《精通Shell编程》作者简介

内容简介

本书由浅入深地介绍了shell编程技术。为了满足不同读者的需要,本书内容分为三个部分:UNIX和shell工具介绍、shell编程以及高级主题。UNIX和shell工具介绍部分复习了UNIX系统和shell编程的一些基本概念和常用命令。shell 编程部分全面介绍了shell编程的每个技术环节。最后,高级主题部分讲解了一些比较有难度的专题。本书既可以作为学习教材,又可以作为参考手册。通过阅读本书,读者可以全面掌握shell编程的知识。本书适合任何对shell编程感兴趣的读者。初级读者可以从本书第一部分获得入门知识,中、高级读者可以越过第一部分,直接从第二部分和第三部分深入了解有关shell编程的知识。

图书目录

第一部分 UNIX和shell工具

第1章 shell基础 3

1.1 命令是什么 3

1.1.1 简单命令 4

1.1.2 复杂命令 4

1.1.3 复合命令 4

1.1.4 命令分隔符 5

1.2 什么是shell 6

1.2.1 shell提示符 6

1.2.2 不同类型的shell 6

1.3 总结 9

1.4 问题 10

1.5 术语 10

第2章 脚本基础 11

2.1 UNIX系统 11

2.1.1 登录系统 12

2.2 shell模式和初始化 13

2.2.1 初始化过程 13

2.2.2 初始化文件内容 15

2.2.3 交互式和非交互式shell 15

2.3 获得帮助 18

2.3.1 在线资源 20

2.4 总结 20

2.5 问题 21

2.6 术语 21

第3章 使用文件 23

3.1 列出文件 23

3.1.1 隐藏文件 24

3.1.2 条件选项组 25

3.2 文件内容 26

3.3 操作文件 29

3.3.1 拷贝文件(cp) 30

3.3.2 重命名文件(mv) 31

3.3.3 删除文件(rm) 31

3.4 总结 32

3.5 问题 33

3.6 术语 33

第4章 对目录进行操作 35

4.1 目录树 35

4.1.1 文件名 36

4.1.2 路径名 36

4.2 改变目录 38

4.2.1 主目录 38

4.2.2 改变到各种目录 38

4.3 列出文件和目录 40

4.3.1 列出目录 40

4.3.2 列出文件 40

4.4 操作目录 41

4.4.1 创建目录 41

4.4.2 拷贝文件和目录 42

4.4.3 移动文件和目录 43

4.4.4 删除目录 44

4.5 总结 45

4.6 问题 46

4.7 术语 46

第5章 输入和输出 47

5.1 输出 47

5.1.1 输出到终端 47

5.1.2 输出重定向 51

5.2 输入 52

5.2.1 输入重定向 53

5.2.2 读取用户输入 54

5.2.3 管道 54

5.3 文件描述符 55

5.3.1 使用文件描述符和文件关联 55

5.3.2 普通的输入/输出重定向 56

5.4 总结 58

5.5 问题 58

5.6 术语 59

第6章 操作文件属性 61

6.1 文件类型 61

6.1.1 确定文件的类型 61

6.1.2 常规文件 62

6.1.3 链接 62

6.1.4 设备文件 64

6.1.5 命名管道 65

6.2 属主. 组和文件权限 65

6.2.1 查看权限 66

6.2.2 改变文件和目录的权限 67

6.2.3 改变属主和组 69

6.3 总结 70

6.4 问题 71

6.5 术语 71

第7章 进程 73

7.1 开始一段进程 73

7.1.1 前台进程 73

7.1.2 后台进程 74

7.2 列出和终止进程 77

7.2.1 jobs命令 77

7.2.2 ps命令 78

7.2.3 关闭进程(kill命令) 79

7.3 父进程和子进程 79

7.3.1 Subshell 80

7.3.2 进程权限 81

7.3.3 覆盖当前的进程(exec命令) 81

7.4 总结 82

7.5 问题 82

7.6 术语 82

第二部分 shelll编程

第8章 变量 85

8.1 变量的操作 85

8.1.1 标量变量 85

8.1.2 数组变量 87

8.1.3 只读变量 89

8.1.4 删除变量 90

8.2 环境和shell变量 90

8.2.1 输出环境变量 91

8.2.2 shell变量 91

8.3 总结 92

8.4 问题 92

8.5 术语 93

第9章 置换 95

9.1 文件名置换 95

9.1.1 元字符 * 95

9.1.2 元字符 ? 97

9.1.3 匹配字符集合 97

9.2 变量置换 99

9.2.1 缺省值置换 99

9.2.2 缺省值赋值 99

9.2.3 空值错误 100

9.2.4 有值置换 100

9.3 命令和算式置换 100

9.3.1 命令置换 100

9.3.2 算式置换 101

9.4 总结 102

9.5 问题 102

9.6 术语 103

第10章 引用 105

10.1 用反斜线实现引用 105

10.2 使用单引号 106

10.3 使用双引号 107

10.4 引用规则和场合 108

10.4.1 引用处理忽略单词界限 108

10.4.2 在命令中的引用处理组合 108

10.4.3 在单一参数中内嵌多个空格 108

10.4.4 引用处理换行以在下一行中继续 109

10.4.5 引用处理以访问包含特殊字符的文件名 109

10.4.6 引用处理正则表达式通配符 110

10.4.7 引用处理反斜线以启用echo转义序列 110

10.4.8 引用处理通配符以适合cpio和find 111

10.5 总结 111

10.6 问题 112

10.7 术语 112

第11章 流控制 113

11.1 if语句 113

11.1.1 一个if语句的例子 114

11.1.2 使用test 115

11.2 case语句 123

11.2.1 一个case语句的例子 123

11.2.2 使用模式 124

11.3 总结 125

11.4 问题 125

11.5 术语 126

第12章 循环 127

12.1 while循环 127

12.1.1 嵌套while循环 128

12.1.2 while中合法的用户输入 129

12.1.3 输入重定向和while 130

12.1.4 until循环 131

12.2 for和select循环 132

12.2.1 for循环 132

12.2.2 select循环 134

12.3 循环控制 136

12.3.1 无限循环和break命令 136

12.3.2 continue命令 137

12.4 总结 137

12.5 问题 138

12.6 术语 138

第13章 参数 139

13.1 特殊变量 139

13.1.1 使用$0 140

13.2 选项和变元 141

13.2.1 处理变元 141

13.2.2 使用basename 142

13.2.3 常用变元处理问题 143

13.3 shell脚本的选项解析 145

13.4 总结 149

13.5 问题 149

13.6 术语 149

第14章 函数 151

14.1 使用函数 151

14.1.1 执行函数 151

14.1.2 别名VS函数 153

14.1.3 取消函数 154

14.2 理解范围. 递归. 返回值和数据共享 154

14.2.1 范围 154

14.2.2 递归 156

14.2.3 返回值 158

14.2.4 数据共享 158

14.2.5 在文件系统中跳转 158

14.3 总结 162

14.4 问题 162

14.5 术语 163

第15章 文本过滤器 165

15.1 head和tail命令 165

15.1.1 head命令 165

15.1.2 tail命令 166

15.2 使用grep 167

15.2.1 查找单词 167

15.2.2 从标准输入读取数据 169

15.2.3 行号 169

15.2.4 只显示文件名 170

15.3 数单词数 171

15.3.1 tr命令 171

15.3.2 sort命令 172

15.3.3 uniq命令 173

15.3.4 排序数字 173

15.3.5 在tr中使用字符类 175

15.4 总结 176

15.5 问题 176

15.6 术语 177

第16章 用正则表达式过滤文本 179

16.1 awk和sed的基础 179

16.1.1 调用语法 179

16.1.2 基本操作 180

16.1.3 正则表达式 180

16.2 使用sed 184

16.2.1 打印行 185

16.2.2 删除行 185

16.2.3 执行替换 186

16.2.4 使用多重sed命令 188

16.2.5 在管道中使用sed 188

16.3 总结 189

16.4 问题 189

16.5 术语 190

第17章 用awk过滤文本 191

17.1 什么是awk 191

17.1.1 基本语法 191

17.1.2 字段编辑 192

17.1.3 执行指定模式的操作 193

17.1.4 比较操作符 194

17.1.5 使用标准输入作为输入 196

17.2 使用awk功能 197

17.2.1 变量 197

17.2.2 流程控制 203

17.3 总结 206

17.4 问题 207

17.5 术语 208

第18章 其他工具 211

18.1 内建命令 211

18.1.1 eval命令 211

18.1.2 :命令 212

18.1.3 type命令 213

18.2 sleep命令 214

18.3 find命令 214

18.3.1 find:开始路径 215

18.3.2 find:-name选项 216

18.3.3 find:-type选项 216

18.3.4 find:-mtime. -atime. -ctime 217

18.3.5 find:-size 选项 217

18.3.6 find:联合选项 218

18.3.7 find:否定选项 218

18.3.8 find:-print 动作 218

18.3.9 find:-exec 动作 218

18.4 xargs 219

18.5 expr命令 220

18.5.1 expr和正则表达式 221

18.6 bc命令 222

18.7 总结 223

18.8 问题 223

18.9 术语 223

第三部分 高级主题

第19章 信号 227

19.1 如何描述信号 227

19.1.1 列出信号 228

19.1.2 缺省动作 228

19.1.3 发送信号 228

19.2 信号处理 229

19.2.1 trap命令 230

19.2.2 清除临时文件 230

19.2.3 忽略信号 232

19.2.4 安装定时器 232

19.3 总结 235

19.4 问题 235

19.5 术语 236

第20章 调试 237

20.1 打开调试 237

20.1.1 使用set命令 238

20.2 使用语法检查 239

20.2.1 为什么语法检查很重要 240

20.2.2 使用冗余模式 241

20.3 shell跟踪 242

20.3.1 用shell跟踪来查找语法错误 242

20.3.2 用shell跟踪来查找逻辑错误 245

20.3.3 使用调试钩子 246

20.4 总结 247

20.5 问题 248

20.6 术语 248

第21章 用函数解决问题 249

21.1 库的基本概念 249

21.1.1 什么是函数库 249

21.1.2 使用函数库 250

21.2 创建函数库 250

21.2.1 命名函数库 251

21.2.2 命名函数 251

21.2.3 显示错误和警告消息 251

21.2.4 提出问题 252

21.2.5 检查磁盘空间 257

21.2.6 通过进程名获取进程ID 259

21.2.7 获取用户的数字UID 260

21.3 总结 261

21.4 问题 261

21.5 术语 261

第22章 用shell脚本解决问题 263

22.1 启动脚本 263

22.1.1 系统的启动 263

22.1.2 开发一个init脚本 266

22.2 维护一个地址簿 274

22.2.1 显示信息 275

22.2.2 增加信息 277

22.2.3 删除信息 280

22.3 总结 283

22.4 问题 284

22.5 术语 285

第23章 编写可移植的脚本 287

23.1 确定UNIX的版本 287

23.1.1 BSD 287

23.1.2 System V 288

23.1.3 Linux 288

23.1.4 使用uname来确定UNIX的版本 289

23.1.5 用一个函数来判断UNIX的版本 290

23.2 增加可移植性的技术 292

23.2.1 条件执行 292

23.2.2 抽象 293

23.3 总结 296

23.4 问题 296

23.5 术语 297

第24章 shell编程常见问题 299

24.1 shell和命令的问题 299

24.2 变量和参数的问题 303

24.3 文件和目录的问题 305

24.4 总结 308

第四部分 附录

附录A 命令参考 311

附录B 术语表 321

附录C 答案 327

附录D shell函数库 347