书籍详情
精通Shell编程
作者:(美)Sriranga Veeraraghavan著;卢涛译
出版社:人民邮电出版社
出版时间:2003-01-01
ISBN:9787115111418
定价:¥39.00
购买这本书可以去
内容简介
本书由浅入深地介绍了shell编程技术。为了满足不同读者的需要,本书内容分为三个部分:UNIX和shell工具介绍、shell编程以及高级主题。UNIX和shell工具介绍部分复习了UNIX系统和shell编程的一些基本概念和常用命令。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
第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
猜您喜欢