目 录
第Ⅰ部分 有效地使用LINUX和UNIX
第1章 LINUX和UNIX基础 1
1.1 简介 1
1.2 UNIX和LINUX操作系统简史 1
1.3 登录与退出过程 3
1.4 LINUXUNIX shell 5
1.4.1 shell的搜索路径 5
1.4.2 各种shell的位置 6
1.4.3 选择符合需要的shell 7
1.4.4 改变shell的各种方式 7
1.4.5 shell启动文件与环境变量 8
1.5 一些重要的系统设置 10
1.6 对初学者有用的通用命令 11
1.6.1 显示当前时间和日期 12
1.6.2 显示文本文件 12
1.6.3 创建目录 12
1.6.4 显示目录 12
1.6.5 显示当前目录或主目录的名称 13
1.6.6 改变目录 13
1.6.7 删除目录 14
1.6.8 打印文件 14
1.6.9 获得帮助 15
1.6.10 更改密码 16
1.6.11 查看命令历史记录 17
1.6.12 显示日历 17
1.6.13 显示系统运行时间 18
1.7 shell元字符 18
1.8 Web资源 19
1.9 小结 20
1.10 问题 20
第2章 文件和文件处理 22
2.1 简介 22
2.2 LINUXUNIX中的文件 23
2.3 文件系统结构 23
2.3.1 文件系统的组织 23
2.3.2 绝对路径名和相对路径名 24
2.3.3 主目录和当前工作目录 25
2.3.4 搜索路径 25
2.4 LINUX中的一些标准目录和文件 25
2.5 目录操作以及文件系统结构浏览 29
2.5.1 创建和删除目录 29
2.5.2 移动和复制目录 30
2.5.3 浏览文件系统结构并列出目录 30
2.6 文件处理 32
2.6.1 创建文件 32
2.6.2 显示某个文件的文件类型和数据类型 32
2.6.3 查看完整的文件 34
2.6.4 每次查看一页文件 34
2.6.5 查看文件的头部或尾部 36
2.6.6 显示NIS数据库 37
2.6.7 复制文件 38
2.6.8 文件的移动和重命名 39
2.6.9 移除删除文件 40
2.6.10 确定文件大小 41
2.6.11 追加文件 42
2.6.12 合并文件 43
2.6.13 比较文件 43
2.6.14 压缩文件 45
2.6.15 搜索文件和命令 48
2.6.16 搜索文件 51
2.7 小结 53
2.8 问题 54
第3章 输入输出重定向 57
3.1 简介 57
3.2 标准文件、文件描述符和标准文件的重定向 57
3.3 输入、输出和错误重定向 58
3.3.1 输入重定向 58
3.3.2 输出重定向 59
3.3.3 错误重定向 59
3.3.4 在一个命令中进行标准输入、标准输出和标准错误的重定向 60
3.3.5 给文件追加数据 62
3.4 LINUXUNIX过滤器和管道 63
3.5 重定向与管道的组合 64
3.6 小结 65
3.7 问题 66
第4章 打印机控制 68
4.1 简介 68
4.2 LINUXUNIX文件打印机制 68
4.3 打印机控制命令 69
4.4 打印文件 69
4.5 查找打印请求的状态 70
4.6 显示系统中的打印机名称 71
4.7 取消打印作业 72
4.8 打印机控制 73
4.9 小节 74
4.10 问题 74
第5章 文件安全 76
5.1 简介 76
5.2 基于访问权限的文件保护 76
5.2.1 用户类型 76
5.2.2 文件操作访问权限的类型 77
5.2.3 默认文件访问权限 78
5.2.4 确定文件访问权限 79
5.2.5 更改文件访问权限 80
5.3 特别访问位 84
5.3.1 SUID位 84
5.3.2 SGID位 85
5.3.3 粘滞位 86
5.4 文件权限和类型 87
5.5 小结 87
5.6 问题 88
第6章 LINUXUNIX进程 90
6.1 简介 90
6.2 进程、作业以及守护进程 91
6.3 进程和作业控制 91
6.3.1 显示进程属性 92
6.3.2 前台、后台和悬挂进程 95
6.3.3 显示作业 96
6.3.4 挂起和继续执行shell进程 97
6.3.5 按序运行命令和同时运行命令 97
6.3.6 命令和进程的非正常终止 98
6.4 LINUXUNIX中的进程层次 100
6.5 在LINUXUNIX中显示进程属性 101
6.6 小结 102
6.7 问题 102
第7章 文件系统的备份与恢复 104
7.1 简介 104
7.2 用tar归档和恢复文件 104
7.2.1 归档文件 105
7.2.2 恢复归档文件 107
7.2.3 复制目录层次 108
7.3 用tar格式发布软件 109
7.4 小结 110
7.5 问题 110
第Ⅱ部分 LINUXUNIX平台上的软件开发
第8章 程序开发过程 111
8.1 简介 111
8.2 计算机编程语言概述 111
8.3 编程语言和编程范式 113
8.3.1 编程语言 113
8.3.2 编程范式 114
8.4 编译过程 114
8.5 解释过程 115
8.6 C、C++和Java程序的编译 115
8.7 软件工程的生命周期 116
8.8 Web资源 116
8.9 小结 117
8.10 问题 118
第9章 代码生成工具 119
9.1 简介 119
9.2 生成程序源文件 119
9.3 源代码的缩排 119
9.4 编译CC++程序 122
9.4.1 编译多个源文件 125
9.4.2 链接库 126
9.4.3 优化可执行代码 128
9.4.4 在命令行中定义宏 128
9.4.5 关闭编译、汇编或链接 130
9.5 编译C++程序 130
9.6 编译Java程序 131
9.7 灾难性编译程序命令和典型的编译时错误 132
9.8 编译和解释其他编程语言的程序 133
9.9 Web资源 133
9.10 小结 133
9.11 问题 134
第10章 多模块软件的编译和链接 135
10.1 简介 135
10.2 make实用程序 135
10.2.1 Makefile和Make Rules 136
10.2.2 多模块软件、依赖树和make 138
10.2.3 后缀(默认)规则 142
10.2.4 make实用程序对宏的支持 144
10.2.5 内建宏 145
10.2.6 虚目标 147
10.2.7 特殊目标 149
10.2.8 一般性语法错误及其纠正措施 150
10.2.9 命令行的使用和调试 151
10.3 Web资源 151
10.4 小结 152
10.5 问题 152
第11章 库的开发、调试和使用 154
11.1 简介 154
11.2 库的使用 154
11.3 ar实用程序 156
11.3.1 创建和追加归档 158
11.3.2 显示目录 159
11.3.3 从归档中删除目标模块 159
11.3.4 从归档中提取目标模块 159
11.3.5 排序归档 161
11.3.6 库的安装 161
11.4 nm实用程序 162
11.5 Web资源 166
11.6 小结 166
11.7 问题 167
第12章 源代码调试 169
12.1 简介 169
12.2 源代码调试 170
12.2.1 使用printf或cout 170
12.2.2 使用调试工具 170
12.3 调试过程 170
12.4 GNU调试器gdb 171
12.5 调试进程 182
12.6 用核心文件运行崩溃程序 184
12.7 用gdb调试Java程序 184
12.8 在Emacs下使用gdb 185
12.9 软件测试 185
12.10 Web资源 186
12.11 小结 187
12.12 问题 187
第13章 软件剖析和度量 189
13.1 简介 189
13.2 软件度量及作用 189
13.3 剖析CC++程序 190
13.3.1 使用gprof的步骤 191
13.3.2 分析gprof的输出结果 193
13.4 优化软件 197
13.5 软件度量:大小和运行时间 197
13.5.1 源代码和可执行程序的大小 197
13.5.2 程序的运行时间 199
13.6 Web资源 200
13.7 小结 200
13.8 问题 201
第14章 RCS和CVS的版本控制 202
14.1 简介 202
14.2 版本控制系统(RCS) 203
14.2.1 使用RCS 203
14.2.2 创建RCS历史文件 203
14.2.3 检出RCS文件 204
14.2.4 新建文件版本 205
14.2.5 检出特定版本的副本 206
14.2.6 放弃更改 207
14.2.7 不覆盖锁定文件(小心出错) 208
14.2.8 删除一个版本 209
14.2.9 在组内工作 209
14.2.10 显示RCS文件的历史 210
14.2.11 解锁 212
14.2.12 显示版本之间的区别 212
14.2.13 合并版本 213
14.2.14 限制对RCS的访问权限 214
14.2.15 RCS特殊字符序列 216
14.2.16 各类RCS实用程序 217
14.2.17 在emacs中使用RCS 217
14.2.18 超出RCS 217
14.3 并发版本系统(CVS) 217
14.3.1 CVS命令语法 218
14.3.2 显示CVS帮助 218
14.3.3 创建源码存储库 220
14.3.4 将源码引入到源码存储库 221
14.3.5 检出源文件 223
14.3.6 更改源文件并提交更改 224
14.3.7 在存储库中添加新文件和新目录 226
14.3.8 删除源码存储库中的文件和目录 227
14.3.9 冻结和提取版本 228
14.3.10 显示区别 229
14.3.11 显示日志历史 229
14.3.12 CVS特殊字符序列 229
14.3.13 完成后的清理工作 231
14.3.14 远程存储库和通过客户端访问它们 231
14.3.15 在emacs中使用CVS 232
14.3.16 CVS的重要方面 232
14.3.17 获得和安装CVS 232
14.4 Web资源 233
14.5 小结 234
14.6 问题 234
第Ⅲ部分 附 录
附录A 使用vi和pico编辑文本文件 236
附录B 电子邮件 241
术语表 245