图书目录

目    录

第Ⅰ部分  有效地使用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