书籍详情
UNIX Shell编程24学时教程
作者:(美)Sriranga Veeraraghaven著;前导工作室译
出版社:机械工业出版社
出版时间:1999-08-01
ISBN:9787111072652
定价:¥30.00
内容简介
本书以循序渐进的方式全面系统地介绍了UNIX中Shell编程的方法,重点讲述了如何使用Shell所提供的工具编写出灵活高效的程序。全书分为24学时,首先回顾了UNIX的基本内容,然后介绍如何使用Shell所提供的各种工具编写程序,最后讲解了Shell编程中可能会遇到的一些问题。另外,本书在每学时之后都为读者提供了习题,以帮助读者更好地掌握所学的内容。本书内容丰富,结构合理清晰,既可作为UNIX开发人员的参考书,又可作为计算机应用人员的培训教材。
作者简介
暂缺《UNIX Shell编程24学时教程》作者简介
目录
目 录
译者序
前言
第一部分 UNIX和Shell工具简介
第1学时 Shell基础 1
1.1 什么是命令 1
1.1.1 简单命令 2
1.1.2 复杂命令 2
1.1.3 复合命令 3
1.1.4 命令分隔符 3
1.2 什么是Shell 4
1.2.1 Shell提示符 4
1.2.2 Shell的类型 5
1.3 小结 8
1.4 问题 8
1.5 术语 8
第2学时 脚本基础 10
2.1 UNIX系统 10
2.2 Shell初始化 11
2.2.1 交互和非交互Shell 12
2.2.2 初始化文件的内容 13
2.2.3 使Shell脚本可执行 14
2.3 获取帮助 15
2.3.1 使用man命令 15
2.3.2 指南部分划分 16
2.4 小结 17
2.5 问题 17
2.6 术语 17
第3学时 文件操作 19
3.1 列文件名 19
3.1.1 隐藏文件 20
3.1.2 选项组合 21
3.2 浏览文件内容 21
3.2.1 cat 21
3.2.2 统计单词(wc) 22
3.3 操作文件 24
3.3.1 拷贝文件(cp) 24
3.3.2 重命名文件(mv) 25
3.3.3 删除文件(rm) 26
3.4 小结 26
3.5 问题 27
3.6 术语 27
第4学时 目录操作 28
4.1 目录树 28
4.1.1 文件名 28
4.1.2 路径名 29
4.2 改变目录 31
4.2.1 起始目录 31
4.2.2 改变目录 31
4.3 列文件和目录 32
4.3.1 列目录 32
4.3.2 列文件 33
4.4 操作目录 34
4.4.1 创建目录 34
4.4.2 拷贝文件和目录 35
4.4.3 移动文件和目录 36
4.4.4 删除目录 37
4.5 小结 38
4.6 问题 38
第5学时 文件属性操作 40
5.1 文件类型 40
5.1.1 判断文件类型 40
5.1.2 普通文件 41
5.1.3 符号链 41
5.1.4 设备文件 42
5.1.5 命名管道 43
5.2 所有者. 组和权限 43
5.2.1 查看权限 44
5.2.2 改变文件和目录权限 45
5.2.3 改变所有者和组 47
5.3 小结 48
5.4 问题 49
第6学时 进程 50
6.1 启动一个进程 50
6.1.1 前台进程 50
6.1.2 后台进程 51
6.2 列出正在运行的进程 55
6.2.1 jobs命令 55
6.2.2 ps命令 55
6.3 杀死一个进程(kill命令) 57
6.4 父进程和子进程 58
6.4.1 任务ID和进程ID 58
6.4.2 SubShells 58
6.4.3 进程权限 59
6.4.4 覆盖当前进程(exec命令) 59
6.5 小结 60
6.6 问题 60
6.7 术语 60
第二部分 Shell编程
第7学时 变量 63
7.1 定义变量 63
7.1.1 变量名 63
7.1.2 访问值 64
7.1.3 数组变量 64
7.1.4 访问数组值 66
7.1.5 只读变量 67
7.2 删除变量 67
7.3 环境变量 67
7.3.1 导出环境变量 68
7.3.2 Shell变量 69
7.4 小结 69
7.5 问题 69
7.6 术语 70
第8学时 替换 71
8.1 文件名替换 71
8.1.1 使用* 通配符 71
8.1.2 使用?通配符 73
8.1.3 匹配字符集 73
8.2 变量替换 74
8.2.1 替换缺省值 75
8.2.2 赋予一个缺省值 75
8.2.3 由于变量错误而导致中止 75
8.3 命令和算术替换 76
8.3.1 命令替换 76
8.3.2 算术替换 77
8.4 小结 77
8.5 问题 77
第9学时 引用 78
9.1 用反斜线引用 78
9.2 使用单撇号 79
9.3 使用双撇号 80
9.4 引用规则和环境 81
9.4.1 引用忽略了单词边界 81
9.4.2 命令中的组合引用 81
9.4.3 在单个参数中嵌入空格 81
9.4.4 引用换行符达到在下一
行续行的目的 82
9.4.5 为访问包含特殊字符的
文件名而引用 82
9.4.6 引用正规表达式通配符 83
9.4.7 引用反斜线开启echo转义序列 83
9.4.8 为cpio和find命令引用通配符 84
9.5 小结 84
9.6 问题 85
9.7 术语 85
第10学时 流控制 87
10.1 if语句 87
10.1.1 一个if语句的实例 88
10.1.2 使用test 89
10.2 case语句 95
10.2.1 case语句的实例 95
10.2.2 使用模式(pattern) 96
10.3 小结 96
10.4 问题 97
第11学时 循环 98
11.1 while循环 98
11.1.1 while循环嵌套 99
11.1.2 until循环 101
11.2 for和select循环 102
11.2.1 for循环 102
11.2.2 select循环 103
11.3 循环控制 105
11.3.1 无限循环和break命令 105
11.3.2 continue命令 106
11.4 小结 107
11.5 问题 107
11.6 术语 107
第12学时 参数 109
12.1 特殊变量 109
12.1.1 使用$0 110
12.1.2 usage语句 110
12.2 选项和参数 111
12.2.1 一个处理参数的实例 111
12.2.2 使用basename命令 112
12.2.3 公用参数处理问题 112
12.3 Shell脚本中的选项分析 114
12.4 小结 118
12.5 问题 118
第13学时 输入/输出 119
13.1 输出 119
13.1.1 向终端输出 119
13.1.2 输出重定向 125
13.2 输入 127
13.2.1 输入重定向 127
13.2.2 读取用户输入 128
13.2.3 管道 129
13.3 文件描述符 129
13.3.1 将文件和文件描述符关联起来 130
13.3.2 输入/输出重定向通用的格式 130
13.4 小结 133
13.5 问题 133
13.6 术语 134
第14学时 函数 135
14.1 创建和使用函数 135
14.1.1 激活一个函数 135
14.1.2 函数举例 136
14.2 在函数间共享数据以及共享
数据的一个示例 138
14.2.1 在文件系统间移动 138
14.2.2 实现dirs 139
14.2.3 实现pushd 139
14.2.4 实现popd 140
14.3 小结 142
14.4 问题 142
第15学时 文本过滤器 143
15.1 head和tail命令 143
15.1.1 head命令 143
15.1.2 tail命令 144
15.2 使用grep 145
15.2.1 查找单词 145
15.2.2 从STDIN(标准输入)中读入 146
15.2.3 行号 147
15.2.4 只列出文件名 147
15.3 统计单词的总数 148
15.3.1 tr命令 148
15.3.2 sort命令 150
15.3.3 uniq命令 150
15.3.4 为数字排序 151
15.3.5 tr命令中字符分类的使用 152
15.4 小结 154
15.5 问题 154
第16学时 使用正规表达式过滤文本 155
16.1 awk和sed基础 155
16.1.1 激活语法 155
16.1.2 基本操作 155
16.1.3 正规表达式 156
16.2 使用sed 160
16.2.1 打印行 161
16.2.2 删除行 161
16.2.3 执行替换 162
16.2.4 使用多个sed命令 164
16.2.5 在管道中使用sed 164
16.3 小结 165
16.4 问题 165
第17学时 使用awk过滤文本 167
17.1 什么是awk 167
17.1.1 基本语法 167
17.1.2 域编辑 168
17.1.3 执行“模式—特定”行为 169
17.1.4 比较操作符 170
17.1.5 使用STDIN作为输入 172
17.2 利用awk的特点 172
17.2.1 变量 172
17.2.2 流控制 178
17.3 小结 181
17.4 问题 181
17.5 术语 183
第18学时 各种工具 184
18.1 eval命令 184
18.2 “:”命令 185
18.3 type命令 185
18.4 sleep命令 186
18.5 find命令 187
18.5.1 find:开始目录 187
18.5.2 find: -name选项 188
18.5.3 find: type选项 189
18.5.4 find:-mtime, -atime, -ctime 189
18.5.5 find: -size选项 190
18.5.6 find:组合选项 190
18.5.7 find:否定选项 190
18.5.8 find:-print动作 190
18.5.9 find:-exec动作 191
18.6 xargs 191
18.7 expr命令 192
18.8 bc命令 193
18.9 remsh/rsh/rcmd/remote(远程Shell) 194
18.10 小结 195
18.11 问题 195
18.12 术语 196
第三部分 高级主题
第19学时 信号处理 197
19.1 信号代表什么 197
19.1.1 获得一个信号列表 197
19.1.2 缺省动作 198
19.1.3 传递信号 198
19.2 处理信号 199
19.2.1 trap命令 200
19.2.2 清除临时文件 200
19.2.3 忽略信号 201
19.2.4 建立一个计时器 202
19.3 小结 204
19.4 问题 204
第20学时 调试 205
20.1 启动调试 205
20.2 语法检查 207
20.2.1 为什么应该使用语法检查 207
20.2.2 使用verbose模式 208
20.3 Shell跟踪 209
20.3.1 使用Shell跟踪发现语法缺陷 210
20.3.2 使用Shell跟踪找出逻辑缺陷 212
20.3.3 使用调试陷阱 213
20.4 小结 215
20.5 问题 215
第21学时 使用函数解决问题 216
21.1 创建一个函数库 216
21.1.1 创建库 216
21.1.2 从一个库中包含函数 217
21.1.3 命名习惯 217
21.2 有用的函数 218
21.2.1 显示信息 218
21.2.2 询问一个问题 219
21.2.3 检查磁盘空间 223
21.2.4 通过名字获得进程ID 225
21.2.5 获得一个用户ID 226
21.2.6 完整函数库 227
21.3 小结 231
21.4 问题 231
21.5 术语 231
第22学时 使用Shell脚本解决问题 232
22.1 移动目录 232
22.1.1 使用tar 233
22.1.2 mvdir. sh 233
22.1.3 mvdir.sh概述 235
22.1.4 示例 236
22.2 维护一个地址簿 237
22.2.1 显示信息 238
22.2.2 增加信息 239
22.2.3 删除信息 242
22.3 小结 245
22.4 问题 245
22.5 术语 247
第23学时 脚本可移植性 248
23.1 判断UNIX版本 248
23.1.1 BSD和System V 248
23.1.2 使用uname 249
23.1.3 使用函数判断UNIX版本 250
23.2 提高可移植性的技巧 251
23.2.1 条件执行 252
23.2.2 抽取 253
23.3 小结 255
23.4 问题 255
23.5 术语 255
第24学时 Shell编程疑难解答 256
24.1 有关Shell和命令的问题 256
24.2 有关变量和参数的问题 258
24.3 有关文件和目录的问题 259
24.4 小结 262
第四部分 附 录
附录A 命令快速参考 263
附录B 词汇表 273
附录C 习题答案 279
译者序
前言
第一部分 UNIX和Shell工具简介
第1学时 Shell基础 1
1.1 什么是命令 1
1.1.1 简单命令 2
1.1.2 复杂命令 2
1.1.3 复合命令 3
1.1.4 命令分隔符 3
1.2 什么是Shell 4
1.2.1 Shell提示符 4
1.2.2 Shell的类型 5
1.3 小结 8
1.4 问题 8
1.5 术语 8
第2学时 脚本基础 10
2.1 UNIX系统 10
2.2 Shell初始化 11
2.2.1 交互和非交互Shell 12
2.2.2 初始化文件的内容 13
2.2.3 使Shell脚本可执行 14
2.3 获取帮助 15
2.3.1 使用man命令 15
2.3.2 指南部分划分 16
2.4 小结 17
2.5 问题 17
2.6 术语 17
第3学时 文件操作 19
3.1 列文件名 19
3.1.1 隐藏文件 20
3.1.2 选项组合 21
3.2 浏览文件内容 21
3.2.1 cat 21
3.2.2 统计单词(wc) 22
3.3 操作文件 24
3.3.1 拷贝文件(cp) 24
3.3.2 重命名文件(mv) 25
3.3.3 删除文件(rm) 26
3.4 小结 26
3.5 问题 27
3.6 术语 27
第4学时 目录操作 28
4.1 目录树 28
4.1.1 文件名 28
4.1.2 路径名 29
4.2 改变目录 31
4.2.1 起始目录 31
4.2.2 改变目录 31
4.3 列文件和目录 32
4.3.1 列目录 32
4.3.2 列文件 33
4.4 操作目录 34
4.4.1 创建目录 34
4.4.2 拷贝文件和目录 35
4.4.3 移动文件和目录 36
4.4.4 删除目录 37
4.5 小结 38
4.6 问题 38
第5学时 文件属性操作 40
5.1 文件类型 40
5.1.1 判断文件类型 40
5.1.2 普通文件 41
5.1.3 符号链 41
5.1.4 设备文件 42
5.1.5 命名管道 43
5.2 所有者. 组和权限 43
5.2.1 查看权限 44
5.2.2 改变文件和目录权限 45
5.2.3 改变所有者和组 47
5.3 小结 48
5.4 问题 49
第6学时 进程 50
6.1 启动一个进程 50
6.1.1 前台进程 50
6.1.2 后台进程 51
6.2 列出正在运行的进程 55
6.2.1 jobs命令 55
6.2.2 ps命令 55
6.3 杀死一个进程(kill命令) 57
6.4 父进程和子进程 58
6.4.1 任务ID和进程ID 58
6.4.2 SubShells 58
6.4.3 进程权限 59
6.4.4 覆盖当前进程(exec命令) 59
6.5 小结 60
6.6 问题 60
6.7 术语 60
第二部分 Shell编程
第7学时 变量 63
7.1 定义变量 63
7.1.1 变量名 63
7.1.2 访问值 64
7.1.3 数组变量 64
7.1.4 访问数组值 66
7.1.5 只读变量 67
7.2 删除变量 67
7.3 环境变量 67
7.3.1 导出环境变量 68
7.3.2 Shell变量 69
7.4 小结 69
7.5 问题 69
7.6 术语 70
第8学时 替换 71
8.1 文件名替换 71
8.1.1 使用* 通配符 71
8.1.2 使用?通配符 73
8.1.3 匹配字符集 73
8.2 变量替换 74
8.2.1 替换缺省值 75
8.2.2 赋予一个缺省值 75
8.2.3 由于变量错误而导致中止 75
8.3 命令和算术替换 76
8.3.1 命令替换 76
8.3.2 算术替换 77
8.4 小结 77
8.5 问题 77
第9学时 引用 78
9.1 用反斜线引用 78
9.2 使用单撇号 79
9.3 使用双撇号 80
9.4 引用规则和环境 81
9.4.1 引用忽略了单词边界 81
9.4.2 命令中的组合引用 81
9.4.3 在单个参数中嵌入空格 81
9.4.4 引用换行符达到在下一
行续行的目的 82
9.4.5 为访问包含特殊字符的
文件名而引用 82
9.4.6 引用正规表达式通配符 83
9.4.7 引用反斜线开启echo转义序列 83
9.4.8 为cpio和find命令引用通配符 84
9.5 小结 84
9.6 问题 85
9.7 术语 85
第10学时 流控制 87
10.1 if语句 87
10.1.1 一个if语句的实例 88
10.1.2 使用test 89
10.2 case语句 95
10.2.1 case语句的实例 95
10.2.2 使用模式(pattern) 96
10.3 小结 96
10.4 问题 97
第11学时 循环 98
11.1 while循环 98
11.1.1 while循环嵌套 99
11.1.2 until循环 101
11.2 for和select循环 102
11.2.1 for循环 102
11.2.2 select循环 103
11.3 循环控制 105
11.3.1 无限循环和break命令 105
11.3.2 continue命令 106
11.4 小结 107
11.5 问题 107
11.6 术语 107
第12学时 参数 109
12.1 特殊变量 109
12.1.1 使用$0 110
12.1.2 usage语句 110
12.2 选项和参数 111
12.2.1 一个处理参数的实例 111
12.2.2 使用basename命令 112
12.2.3 公用参数处理问题 112
12.3 Shell脚本中的选项分析 114
12.4 小结 118
12.5 问题 118
第13学时 输入/输出 119
13.1 输出 119
13.1.1 向终端输出 119
13.1.2 输出重定向 125
13.2 输入 127
13.2.1 输入重定向 127
13.2.2 读取用户输入 128
13.2.3 管道 129
13.3 文件描述符 129
13.3.1 将文件和文件描述符关联起来 130
13.3.2 输入/输出重定向通用的格式 130
13.4 小结 133
13.5 问题 133
13.6 术语 134
第14学时 函数 135
14.1 创建和使用函数 135
14.1.1 激活一个函数 135
14.1.2 函数举例 136
14.2 在函数间共享数据以及共享
数据的一个示例 138
14.2.1 在文件系统间移动 138
14.2.2 实现dirs 139
14.2.3 实现pushd 139
14.2.4 实现popd 140
14.3 小结 142
14.4 问题 142
第15学时 文本过滤器 143
15.1 head和tail命令 143
15.1.1 head命令 143
15.1.2 tail命令 144
15.2 使用grep 145
15.2.1 查找单词 145
15.2.2 从STDIN(标准输入)中读入 146
15.2.3 行号 147
15.2.4 只列出文件名 147
15.3 统计单词的总数 148
15.3.1 tr命令 148
15.3.2 sort命令 150
15.3.3 uniq命令 150
15.3.4 为数字排序 151
15.3.5 tr命令中字符分类的使用 152
15.4 小结 154
15.5 问题 154
第16学时 使用正规表达式过滤文本 155
16.1 awk和sed基础 155
16.1.1 激活语法 155
16.1.2 基本操作 155
16.1.3 正规表达式 156
16.2 使用sed 160
16.2.1 打印行 161
16.2.2 删除行 161
16.2.3 执行替换 162
16.2.4 使用多个sed命令 164
16.2.5 在管道中使用sed 164
16.3 小结 165
16.4 问题 165
第17学时 使用awk过滤文本 167
17.1 什么是awk 167
17.1.1 基本语法 167
17.1.2 域编辑 168
17.1.3 执行“模式—特定”行为 169
17.1.4 比较操作符 170
17.1.5 使用STDIN作为输入 172
17.2 利用awk的特点 172
17.2.1 变量 172
17.2.2 流控制 178
17.3 小结 181
17.4 问题 181
17.5 术语 183
第18学时 各种工具 184
18.1 eval命令 184
18.2 “:”命令 185
18.3 type命令 185
18.4 sleep命令 186
18.5 find命令 187
18.5.1 find:开始目录 187
18.5.2 find: -name选项 188
18.5.3 find: type选项 189
18.5.4 find:-mtime, -atime, -ctime 189
18.5.5 find: -size选项 190
18.5.6 find:组合选项 190
18.5.7 find:否定选项 190
18.5.8 find:-print动作 190
18.5.9 find:-exec动作 191
18.6 xargs 191
18.7 expr命令 192
18.8 bc命令 193
18.9 remsh/rsh/rcmd/remote(远程Shell) 194
18.10 小结 195
18.11 问题 195
18.12 术语 196
第三部分 高级主题
第19学时 信号处理 197
19.1 信号代表什么 197
19.1.1 获得一个信号列表 197
19.1.2 缺省动作 198
19.1.3 传递信号 198
19.2 处理信号 199
19.2.1 trap命令 200
19.2.2 清除临时文件 200
19.2.3 忽略信号 201
19.2.4 建立一个计时器 202
19.3 小结 204
19.4 问题 204
第20学时 调试 205
20.1 启动调试 205
20.2 语法检查 207
20.2.1 为什么应该使用语法检查 207
20.2.2 使用verbose模式 208
20.3 Shell跟踪 209
20.3.1 使用Shell跟踪发现语法缺陷 210
20.3.2 使用Shell跟踪找出逻辑缺陷 212
20.3.3 使用调试陷阱 213
20.4 小结 215
20.5 问题 215
第21学时 使用函数解决问题 216
21.1 创建一个函数库 216
21.1.1 创建库 216
21.1.2 从一个库中包含函数 217
21.1.3 命名习惯 217
21.2 有用的函数 218
21.2.1 显示信息 218
21.2.2 询问一个问题 219
21.2.3 检查磁盘空间 223
21.2.4 通过名字获得进程ID 225
21.2.5 获得一个用户ID 226
21.2.6 完整函数库 227
21.3 小结 231
21.4 问题 231
21.5 术语 231
第22学时 使用Shell脚本解决问题 232
22.1 移动目录 232
22.1.1 使用tar 233
22.1.2 mvdir. sh 233
22.1.3 mvdir.sh概述 235
22.1.4 示例 236
22.2 维护一个地址簿 237
22.2.1 显示信息 238
22.2.2 增加信息 239
22.2.3 删除信息 242
22.3 小结 245
22.4 问题 245
22.5 术语 247
第23学时 脚本可移植性 248
23.1 判断UNIX版本 248
23.1.1 BSD和System V 248
23.1.2 使用uname 249
23.1.3 使用函数判断UNIX版本 250
23.2 提高可移植性的技巧 251
23.2.1 条件执行 252
23.2.2 抽取 253
23.3 小结 255
23.4 问题 255
23.5 术语 255
第24学时 Shell编程疑难解答 256
24.1 有关Shell和命令的问题 256
24.2 有关变量和参数的问题 258
24.3 有关文件和目录的问题 259
24.4 小结 262
第四部分 附 录
附录A 命令快速参考 263
附录B 词汇表 273
附录C 习题答案 279
猜您喜欢