UNIX Linux OS X中的Shell编程 第4版
作者: 斯蒂芬.G.寇肯著
出版时间: 2017年版
内容简介
《UNIX Linux OS X中的Shell编程 第4版》是经典图书Unix Shell Programming时隔15年之后的全新升级版本,全面讲解了如何在POSIX太阳城
Shell环境中开发程序,以充分发挥UNIX和类UNIX操作系统的潜在功能。《UNIX Linux OS X中的Shell编程 第4版》共分为14章,其内容涵盖了Linux/UNIX的基础知识,Shell的概念、工作原理和运行机制,编写Shell程序时使用的一些工具,Shell中的脚本与变量,在Shell中如何解释引用,传递参数,条件语句,循环,数据的读取及打印,Shell环境,交互式以及非太阳城
Shell的特性等。《UNIX Linux OS X中的Shell编程 第4版》后面的两个附录还提供了POSIX太阳城
Shell的特性汇总信息,以及有助于进一步学习掌握Shell编程的资源。《UNIX Linux OS X中的Shell编程 第4版》坚持以“实例教学”为理念,旨在鼓励读者动手实践,从而彻底掌握Shell编程。本书实例丰富,内容易懂,特别适合有志于掌握Shell编程的Linux/UNIX初级用户阅读。
目录
第1章 基础概述\t1
1.1 基础命令\t1
1.1.1 显示日期和时间:date命令\t1
1.1.2 找出已登录人员:who命令\t1
1.1.3 回显字符:echo命令\t2
1.2 使用文件\t2
1.2.1 列举文件:ls命令\t3
1.2.2 显示文件内容:cat命令\t3
1.2.3 统计文件中单词数量:wc命令\t3
1.2.4 命令选项\t3
1.2.5 复制文件:cp命令\t4
1.2.6 文件重命名:mv命令\t4
1.2.7 删除文件:rm命令\t5
1.3 使用目录\t5
1.3.1 主目录和路径名\t6
1.3.2 显示工作目录:pwd命令\t7
1.3.3 更改目录:cd命令\t7
1.3.4 ls命令的更多用法\t10
1.3.5 创建目录:mkdir命令\t12
1.3.6 在目录之间复制文件\t12
1.3.7 在目录间移动文件\t13
1.3.8 文件链接:ln命令\t14
1.3.9 删除目录:rmdir命令\t17
1.4 文件名替换\t18
1.4.1 星号\t18
1.4.2 匹配单个字符\t20
1.5 文件名中不易察觉的部分\t21
1.5.1 文件名中的空格\t21
1.5.2 其他怪异的字符\t22
1.6 太阳城
输入/输出和I/O重定向\t22
1.6.1 太阳城
输入和太阳城
输出\t22
1.6.2 输出重定向\t24
1.6.3 输入重定向\t26
1.7 管道\t27
1.8 太阳城
错误\t29
1.9 命令后话\t29
1.9.1 在一行中输入多个命令\t29
1.9.2 向后台发送命令\t30
1.9.3 ps命令\t30
1.10 命令总结\t31
第2章 什么是Shell\t33
2.1 内核和实用工具\t33
2.2 登录Shell\t34
2.3 在Shell中输入命令\t37
2.4 Shell的职责\t38
2.4.1 程序执行\t39
2.4.2 变量及文件名替换\t40
2.4.3 I/O重定向\t41
2.4.4 管道\t42
2.4.5 环境控制\t42
2.4.6 解释型编程语言\t43
第3章 常备工具\t44
3.1 正则表达式\t44
3.1.1 匹配任意字符:点号(.)\t44
3.1.2 匹配行首:脱字符(^)\t46
3.1.3 匹配行尾:美元符号($)\t46
3.1.4 匹配字符组:[...]\t47
3.1.5 匹配零个或多个字符:星号(*)\t50
3.1.6 匹配固定次数的子模式:\\{...\\}\t52
3.1.7 保存已匹配的字符:\\(...\\)\t54
3.2 cut\t57
3.3 paste\t61
3.3.1 -d选项\t62
3.3.2 -s选项\t62
3.4 sed\t63
3.4.1 -n选项\t64
3.4.2 删除行\t65
3.5 tr\t66
3.5.1 -s选项\t69
3.5.2 -d选项\t69
3.6 grep\t70
3.6.1 正则表达式与grep\t73
3.6.2 -v选项\t74
3.6.3 -l选项\t74
3.6.4 -n选项\t75
3.7 sort\t76
3.7.1 -u选项\t76
3.7.2 -r选项\t77
3.7.3 -o选项\t77
3.7.4 -n选项\t78
3.7.5 跳过某些字段\t78
3.7.6 -t选项\t79
3.7.7 其他选项\t80
3.8 uniq\t80
3.8.1 -d选项\t81
3.8.2 其他选项\t82
第4章 脚本与变量\t83
4.1 命令文件\t83
4.2 变量\t86
4.2.1 显示变量值\t87
4.2.2 未定义变量的值为空\t89
4.2.3 文件名替换与变量\t91
4.2.4 ${variable}结构\t92
4.3 内建的整数算术操作\t92
第5章 引用\t95
5.1 单引号\t95
5.2 双引号\t98
5.3 反斜线\t101
5.3.1 使用反斜线续行\t102
5.3.2 双引号中的反斜线\t102
5.4 命令替换\t103
5.4.1 反引号\t104
5.4.2 $(...)结构\t104
5.5 expr命令\t108
第6章 传递参数\t111
6.1 变量$#\t112
6.2 变量$*\t113
6.3 在电话簿中查找联系人\t113
6.4 向电话簿中添加联系人\t115
6.5 从电话簿中删除联系人\t116
6.6 shift命令\t118
第7章 条件语句\t120
7.1 退出状态\t120
7.2 变量$ \t121
7.3 test命令\t124
7.3.1 字符串操作符\t124
7.3.2 test的另一种格式\t128
7.3.3 整数操作符\t129
7.3.4 文件操作符\t130
7.3.5 逻辑否定操作符!\t131
7.3.6 逻辑“与”操作符-a\t131
7.3.7 括号\t132
7.3.8 逻辑“或”操作符-o\t132
7.4 else\t133
7.5 exit命令\t135
7.6 elif\t137
7.7 case命令\t141
7.7.1 特殊的模式匹配字符\t142
7.7.2 调试选项-x\t144
7.7.3 再谈case\t147
7.8 空命令:\t148
7.9 &&和||\t149
第8章 循环\t151
8.1 for命令\t151
8.1.1 $@变量\t154
8.1.2 不使用列表的for命令\t155
8.2 while命令\t156
8.3 until命令\t158
8.4 再谈循环\t162
8.4.1 跳出循环\t162
8.4.2 跳过循环中余下的命令\t163
8.4.3 在后台执行循环\t164
8.4.4 循环上的I/O重定向\t165
8.4.5 将数据导入及导出循环\t166
8.4.6 单行循环\t166
8.5 getopts命令\t167
第9章 数据的读取及打印\t171
9.1 read命令\t171
9.1.1 文件复制程序\t171
9.1.2 特殊的echo转义字符\t173
9.1.3 mycp的改进版本\t174
9.1.4 mycp的最终版本\t175
9.1.5 菜单驱动的电话簿程序\t179
9.1.6 变量$$与临时文件\t183
9.1.7 read的退出状态\t184
9.2 printf命令\t187
第10章 环境\t192
10.1 局部变量\t192
10.2 导出变量\t194
10.3 PS1和PS2\t198
10.4 HOME\t199
10.5 PATH\t199
10.6 当前目录\t206
10.7 再谈子Shell\t208
10.7.1 .命令\t209
10.7.2 exec命令\t212
10.7.3 (...)和{ ...; }\t212
10.7.4 另一种将变量传给子Shell的方法\t215
10.8 .profile文件\t216
10.9 TERM变量\t217
10.10 TZ变量\t218
第11章 再谈参数\t219
11.1 参数替换\t219
11.1.1 ${parameter}\t219
11.1.2 ${parameter:-value}\t220
11.1.3 ${parameter:=value}\t220
11.1.4 ${parameter: value}\t221
11.1.5 ${parameter:+value}\t222
11.1.6 模式匹配\t222
11.1.7 ${#variable}\t224
11.2 $0变量\t224
11.3 set命令\t225
11.3.1 -x选项\t225
11.3.2 无参数的set\t226
11.3.3 使用set为位置参数重新赋值\t227
11.3.4 --选项\t228
11.3.5 set的其他选项\t230
11.4 IFS变量\t230
11.5 readonly命令\t233
11.6 unset命令\t234
第12章 拓展内容\t235
12.1 eval命令\t235
12.2 wait命令\t237
12.3 $!变量\t237
12.4 trap命令\t238
12.4.1 不使用参数的trap\t239
12.4.2 忽略信号\t240
12.4.3 重置信号\t240
12.5 再谈I/O\t241
12.5.1 &-\t242
12.5.2 行内输入重定向\t242
12.5.3 Shell归档文件\t244
12.6 函数\t247
12.6.1 删除函数\t250
12.6.2 return命令\t250
12.7 type命令\t250
第13章 再谈rolo\t251
13.1 数据格式化考量\t251
13.2 rolo\t252
13.3 add\t254
13.4 lu\t255
13.5 display\t256
13.6 rem\t257
13.7 change\t259
13.8 listall\t260
13.9 样例输出\t261
第14章 交互式与非太阳城
Shell特性\t265
14.1 使用正确的Shell\t265
14.2 ENV文件\t266
14.3 命令行编辑\t267
14.4 命令历史\t267
14.5 vi行编辑模式\t268
14.6 emacs行编辑模式\t272
14.7 访问历史记录的其他方法\t275
14.7.1 history命令\t275
14.7.2 fc命令\t276
14.7.3 r命令\t277
14.8 函数\t278
14.8.1 局部变量\t278
14.8.2 自动载入函数\t278
14.9 整数算术\t278
14.9.1 整数类型\t279
14.9.2 不同基数的数字\t280
14.10 alias命令\t282
14.11 数组\t284
14.12 作业控制\t289
14.13 其他特性\t292
14.13.1 cd命令的其他特性\t292
14.13.2 波浪符替换\t292
14.13.3 搜索次序\t293
14.14 兼容性总结\t294
附录A Shell总结\t295
附录B 更多的相关信息\t329