第一章 概论 1
1.1 历史回顾 1
1.2 程序设计环境 5
1.3 UNIX系统概念 6
1.3.1 文件系统 6
1.3.2 进程 6
1.3.3 shell 7
第二章 启动 8
2.1 注册 8
2.2 命令 9
2.3 终端特性 10
2.4 文本 12
2.5 文件系统 14
2.5.1 简单文件操作 15
2.5.2 对目录进行操作 17
2.6 shell 18
2.6.1 管道和筛选程序 19
2.6.2 文件名生成 20
2.6.3 引述 21
2.6.4 提示 22
2.6.5 shell和login 22
2.7.1 通信 23
2.6.6 复习 23
2.7 有用的命令 23
2.7.2 系统查询 26
2.7.3 进程管理 27
2.7.4 其他命令 29
2.7.5 复习 33
第三章 编辑文件 34
3.1 编辑程序ed 34
3.1.1 建立文件 34
3.1.2 行编辑 36
3.1.3 上下文搜索 39
3.1.4 上下文编辑 40
3.1.5 模式匹配 43
3.1.6 全局的编辑 45
3.1.7 其他 46
3.2 编辑程序vi 49
3.2.1 窗口控制 50
3.2.2 光标控制 50
3.2.3 添加和删除 51
3.2.4 行编辑 52
3.2.5 移动内容 53
3.2.7 更高级的性能 54
3.2.6 复习 54
第四章 shell 60
4.1 shell过程 60
4.1.1 控制流-for 62
4.1.2 控制流-case 63
4.1.3 Here文本 64
4.1.4 shell变量 66
4.1.5 test命令 69
4.1.6 控制流-while和until 70
4.1.7 控制流-if 71
4.1.9 调试shell过程 73
4.1.8 命令组合 73
4.1.10 man命令 75
4.2 高级使用 75
4.2.1 参数发送 75
4.2.2 参量替代 76
4.2.3 命令替代 77
4.2.4 求值与引述 78
4.2.5 出错处理 81
4.2.6 故障处理 82
4.2.7 命令执行 84
4.2.8 输入-输出重定向 85
4.3 内部命令 87
4.2.9 引用shell 87
第五章 C程序设计语言 91
5.1 C程序实例 92
5.1.1 一个简单程序 92
5.1.2 一个八进制转贮 93
5.1.3 平均距离 95
5.2 语言 98
5.2.1 词法考虑 98
5.2.2 表达式和运算符 101
5.2.3 控制流 106
5.2.4 函数 109
5.2.5 数组和指针 110
5.2.6 结构和联合 114
5.2.7 C预处理程序 120
5.2.8 语言结构 122
5.2.9 标准C程序库 124
5.2.10 结束语 127
5.3 程序组织和管理 128
5.3.1 编译程序 128
5.3.2 make命令 129
5.3.3 lint命令 131
5.3.4 程序库 132
5.3.5 性能测定 133
5.3.6 其他工具 134
5.4 调试C程序 134
5.4.1 调试内存映象 135
5.4.2 adb请求 136
5.4.3 adb格式 137
5.4.4 在adb中设置断点 138
5.4.5 地址映射 139
第六章 UNIX系统程序设计 141
6.1 参数约定 141
6.2 基本输入-输出 144
6.2.1 open系统调用 145
6.2.2 读和写文件 146
6.3 再论文件系统 148
6.3.1 文件许可权 148
6.3.2 改变文件方式 149
6.3.3 目录访问 150
6.3.4 组 151
6.4 高级输入-输出 152
6.4.1 建立和撤消文件 152
6.4.2 随机访问输入-输出 156
6.4.3 文件的状态 159
6.4.4 终端输入-输出 161
6.4.5 管道 164
6.5 进程 165
6.5.1 进程执行 165
6.5.2 fork系统调用 166
6.5.3 wait系统调用 166
6.5.4 exec系统调用 167
6.5.5 exit系统调用 168
6.5.6 进程的环境 169
6.6 信号与中断 170
6.6.1 信号 170
6.6.2 发送信号 171
6.6.3 拦截信号 172
6.6.4 后台进程 173
第七章 文本准备 175
7.1 nroff和troff 175
7.1.1 准备文本的指南 176
7.1.2 简单的请求 178
7.1.3 高级请求 184
7.1.4 宏指令库 200
7.2 制作工具 210
7.3 文本处理工具 214
7.3.2 diction命令 215
7.3.1 col命令 215
7.3.3 eqn命令 216
7.3.4 ptx-排列索引的生成 218
7.3.5 refer命令 219
7.3.6 spell命令 221
7.3.7 style命令 221
7.3.8 tbl命令 221
第八章 数据处理工具 225
8.1 工具的简短描述 226
8.1.1 awk-报告生成程序 227
8.1.2 cmp-比较两个文件 232
8.1.3 comm-选择公共行 233
8.1.4 diff—文件区分 233
8.1.5 grep-模式选择 234
8.1.6 join-组合文件 235
8.1.7 sed-流编辑程序 237
8.1.8 sort-排序或合并文件 238
8.1.9 tail-一个文件的最后几行 239
8.1.1O tr-翻译字符 239
8 1.11 uniq-移去重复的行 240
8.2.1 维护一个简单的数据库 241
8.2 简单的例子 241
8.1.13 1ex和yacc 241
8.1.12 field-选择栏 241
8.2.2 C语言交叉对照程序 245
8.3 网球进级阶梯系统 254
8.3.1 组织 255
8.3.2 输入结果 256
8.3.3 每周的活动 261
8.3.4 进级阶梯的更新 263
8.3.5 按周打印进级阶梯 270
8.3.6 季度的开始和结束 273
8.4 实现field命令 277
附录1 命令集 281
附录2 系统调用 346
附录3 C子程序 369
附录4 adb请求 389
附录5 ed请求 392
附录6 sh请求 394
附录7 troff请求 398
附录8 vi请求 406
附录9 宏指令库 410
附录10 ms宏定义库 417
附录11 ASCII字符集 423
参考文献 424