第1章 操作系统综述 1
1.1 引言 1
1.2 操作系统是什么 1
目录 1
1.3 操作系统提供的服务 2
1.4 文字与图形用户接口 2
1.5 操作系统的类型 3
1.6 Linux家族 4
小结 4
习题 5
第2章 Linux历史 6
2.1 引言 6
2.3 Linus Torvalds 7
2.2 放源码 7
2.4 Linux发行版 8
2.5 内核的历史 8
2.6 Linux的流行 9
2.7 未来的发展 9
2.8 Web资源 9
小结 9
习题 9
第3章 开始行动 11
3.1 引言 11
3.2 计算机系统硬件 11
3.2.2 中央处理器(CPU) 12
3.2.1 内存/主存 12
3.2.4 总线 13
3.2.5 输入/输出设备 13
3.2.3 磁盘 13
3.3 Linux软件体系结构 14
3.3.1 设备驱动程序层 14
3.3.2 Linux内核 14
3.3.3 系统调用接口 15
3.3.4 语言函数库 16
3.3.5 Linux shell 16
3.3.6 应用程序 16
3.4 登录和退出 16
3.6 重要的一些系统设置 19
3.5 改正命令行输入错误 19
3.7 对初学者有用的几个命令 20
3.7.1 修改密码 21
3.7.2 获取帮助 21
3.7.3 找出用户及其Linux系统的名字 23
小结 24
习题 25
第4章 Linux shell 26
4.1 引言 26
4.2 各种各样的Linux shell 27
4.2.1 各种shell程序 27
4.2.2 哪种shell能满足需要 28
4.2.3 更改shell的各种方法 29
4.2.4 shell的启动文件和环境变量 31
4.3 一些有用的多用途命令 32
4.3.1 创建和显示目录 32
4.3.2 显示文件 34
4.3.3 打印文件 34
4.3.4 显示日历 34
4.3.5 单向实时消息 34
4.3.6 电子通信的通知和允许 35
4.3.7 为命令创建假名 35
4.3.8 显示系统运行时间 37
4.4 shell元字符 37
小结 38
习题 39
第5章 编辑文本文件 40
5.1 引言 40
5.2 如何使用pico编辑器进行简短编辑 41
5.2.1 使用pico文本编辑器创建一封E-mail 41
5.2.2 如何新建、保存一个文件并退出 41
5.2.3 常用的按键命令和光标移动命令 43
5.2.4 剪切、粘贴和查找 44
5.3 使用vi编辑器获取更多控制 45
5.3.1 shell脚本文件 45
5.3.2 如何开始编辑文件,保存文件并退出 46
5.3.3 vi命令的格式和操作模式 47
5.3.4 光标移动和编辑命令 49
5.3.5 yank、put命令(复制和粘贴)和substitute命令(搜索和替换) 50
5.3.6 设置vi环境 52
5.3.7 从vi中执行shell命令 52
5.4 使用emacs编辑器获取最大控制 53
5.4.1 DOS别名 53
5.4.2 如何开始编辑文件,保存文件并退出 53
5.4.3 光标移动和编辑命令 54
5.4.4 键盘宏命令 56
5.4.5 剪切或复制、粘贴、查找和替换 57
5.5 如何使用XEmacs进行图形化编辑 59
5.5.1 用XEmacs编辑数据文件 59
5.5.2 XEmacs菜单和按钮 60
5.5.3 如何开始编辑文件,保存文件并退出 61
5.6 命令行编辑 62
小结 65
习题 65
第6章 电子邮件 67
6.1 引言 67
6.2 如何高效使用Linux中的mail命令 69
6.2.1 用mail命令发送和读取电子邮件 69
6.2.2 用mail命令发送电子邮件 70
6.2.3 用mail命令阅读电子邮件 72
6.2.4 将邮件存储到文件夹中 73
6.2.5 回复、转发邮件并添加附件 73
6.2.6 邮件别名 74
6.3.2 用elm发送电子邮件 75
6.3 elm——全屏显示电子邮件系统 75
6.3.1 在elm中发送一封邮件 75
6.3.3 用elm程序阅读电子邮件 77
6.3.4 在elm中转发和回复邮件 79
6.3.5 把邮件保存到文件夹中 80
6.3.6 elm别名 80
6.4 pine——另一个全屏电子邮件系统 82
6.4.1 用pine发送邮件连同在vi中创建的附件 82
6.4.2 用pine程序发送电子邮件 82
6.4.3 用pine程序阅读电子邮件 84
6.4.4 在pine中处理目录里的电子邮件 85
6.4.5 使用pine的地址簿 86
6.4.6 pine命令总结 88
6.5 图形化电子邮件系统——Kmail 90
6.5.1 开始使用Kmail 90
6.5.2 在Kmail中读电子邮件 92
6.5.3 在Kmail程序发送邮件 93
6.5.4 将邮件简单过滤到目录中 95
小结 96
习题 96
第7章 文件和文件系统结构 99
7.1 引言 99
7.2 Linux文件概念 99
7.3 文件类型 99
7.3.2 目录 100
7.3.1 简单/普通文件 100
7.3.3 连接文件 101
7.3.4 特殊文件(设备) 101
7.3.5 命名管道(FIFO) 101
7.4 文件系统结构 102
7.4.1 文件系统的组织 102
7.4.2 主目录和当前工作目录 102
7.4.3 绝对路径和相对路径 103
7.4.4 一些标准目录和文件 103
7.5 文件结构导航 107
7.5.1 确定主目录的绝对路径 108
7.5.2 浏览文件系统 108
7.5.4 创建和删除目录 111
7.5.3 创建文件 111
7.5.5 使用目录堆栈 112
7.5.6 确定文件属性 115
7.5.7 确定文件内容的类型 117
7.6 Linux中的文件表示和存储 118
7.7 标准文件和文件描述符 120
7.8 文件末尾(eof)标记 121
小结 122
习题 122
第8章 文件安全 124
8.1 引言 124
8.2 基于密码的保护 124
8.4.1 用户分类 125
8.4 基于访问权限的文件保护 125
8.3 基于文件加密的保护 125
8.4.2 文件操作/访问权限的分类 126
8.5 读取和更改文件的访问特权 127
8.5.1 读取文件的访问特权 127
8.5.2 改变文件访问特权 128
8.5.3 默认的文件访问特权 131
8.6 特殊访问位 132
8.6.1 set-user-ID(SUID)位 132
8.6.2 set-group-ID(SGID)位 134
8.6.3 sticky位 134
8.7 文件访问权限和类型 135
习题 136
小结 136
第9章 基本文件处理 138
9.1 引言 138
9.2 查看文本文件的内容 138
9.2.1 查看完整的文件 138
9.2.2 每次一页地查看文件 140
9.2.3 查看文件的头或尾 142
9.2.4 显示NIS数据库 145
9.3 文件的复制、转移和删除 145
9.3.1 文件的复制 145
9.3.2 文件的转移 147
9.3.3 文件的删除 148
9.3.4 文件大小的确定 149
9.4 文件的追加 151
9.5 文件的合并 152
9.6 文件的比较 153
9.7 删除重复行 157
9.8 文件的打印与打印任务的控制 158
9.8.1 Linux的文件打印机制 158
9.8.2 文件的打印 159
9.8.3 显示打印请求的状态 159
9.8.4 打印任务的取消 160
小结 160
习题 161
10.2 正则表达式 163
10.1 引言 163
第10章 高级文件处理 163
10.3 文件压缩 165
10.3.1 gzip命令 165
10.3.2 gunzip命令 166
10.3.3 gzexe命令 167
10.3.4 zcat命令 167
10.3.5 重命名文件 168
10.4 文件排序 168
10.5 搜索命令和文件 171
10.5.1 find命令 171
10.5.2 whereis命令 172
10.5.3 which命令 172
10.6 搜索文件内容 173
10.7 cutting和pasting 176
10.8 编码和解码 179
10.9 历史命令列表 180
小结 185
习题 186
第11章 文件共享 188
11.1 引言 188
11.2 通过副本共享 188
11.3 通过同一用户名登录共享 188
11.6.1 硬链接 189
11.6 通过文件链接共享 189
11.5 为团队成员建立一个用户组 189
11.4 为共享文件设立适当的访问权限 189
11.6.2 硬链接的缺点 195
11.6.3 软链接/符号链接 196
11.6.4 符号链接的类型 199
11.6.5 符号链接的优缺点 199
11.7 查找符号链接 200
小结 201
习题 202
第12章 重定向和管道 203
12.1 引言 203
12.2 标准文件 203
12.3 输入重定向 204
12.4 输出重定向 205
12.5 输出重定向和输入重定向的合并 206
12.6 带文件描述符的I/O重定向操作 207
12.7 标准出错的重定向 207
12.8 用一条命令实现标准输出和标准出错的重定向 208
12.9 用一条命令重定向标准输入、标准输出和标准出错 211
12.10 不覆盖文件内容的重定向(追加) 212
12.11 Linux管道 213
12.12 结合管道使用重定向 216
12.13 在TC shell中的出错重定向 218
12.14 I/O及错误重定向总结 220
小结 221
习题 222
13.2 同一时刻执行的进程 224
第13章 进程 224
13.1 引言 224
13.3 Linux进程的状态 225
13.4 shell命令的执行 226
13.5 进程属性 229
13.6 进程和作业控制 236
13.6.1 前后台进程以及相关命令 236
13.6.2 Linux守护进程 241
13.6.3 命令的顺序和并行执行 241
13.6.4 命令和进程的异常终止 244
13.6.5 命令的有条件执行 247
13.7 Linux进程的层次关系 248
小结 251
习题 252
第14章 连网与网络互联 253
14.1 引言 253
14.2 计算机网络和计算机互联网 253
14.3 计算机网络和网络互联的动机 254
14.4 网络模型 255
14.5 TCP/IP协议 256
14.5.1 TCP和UDP协议 256
14.5.2 数据的路由——IP协议(The Internet Protocol) 257
14.5.3 点分10进制的IPv4地址 258
14.5.4符号名 259
14.5.5 将名字翻译到IP地址——域名系统 261
14.6 互联网服务和协议 262
14.7 client-server软件模型 262
14.8 应用软件 264
14.8.1 显示主机名 264
14.8.2 显示当前网络中所有登录用户的用户列表 264
14.8.3 显示网络中所有主机状态 266
14.8.4 测试网络连接 266
14.8.5 显示用户信息 267
14.8.6 远程登录 270
14.8.7 远程命令执行 275
14.8.8 文件传输 276
14.8.9 远程复制 279
14.8.10 交互式聊天 280
14.8.11 追踪从一个站点到另一个站点的路由 281
小结 282
习题 282
第15章 Bash编程 284
15.1 引言 284
15.2 运行一个Bash脚本 284
15.3 shell变量和相关的命令 285
15.3.1 控制shell提示符 289
15.3.2 变量声明 290
15.3.3 读写shell变量 292
15.3.4 命令替换 294
15.3.5 输出环境变量 295
15.3.6 重设变量 296
15.3.7 创建只读的用户定义的变量 297
15.3.8 从标准输入设备读入 298
15.4 给shell脚本传递参数 299
15.5 注释和程序头 302
15.6 程序流程控制命令 303
15.6.1 if-then-elif-else-fi语句 303
15.6.2 for语句 310
15.6.3 while语句 311
15.6.4 until语句 313
15.6.5 break和continue命令 315
15.6.6 case语句 315
小结 318
习题 319
第16章 高级Bash编程 321
16.1 引言 321
16.2 数值数据处理 321
16.3 数组处理 327
16.4 here文件 331
16.5 中断(信号)处理 333
16.6 exec命令和文件输入/输出 336
16.6.1 不创建新的进程执行命令 336
16.6.2 通过exec命令的文件输入/输出 337
16.7.3 函数调用 343
16.7.2 函数定义 343
16.7.1 需要函数的原因 343
16.7 Bash中的函数 343
16.7.4 函数的例子 344
16.8 调试shell程序 345
小结 347
习题 347
第17章 TC shell编程介绍 348
17.1 引言 348
17.2 运行一个TC shell脚本 348
17.3 shell变量和相关命令 349
17.3.1 读、写shell变量 352
17.3.2 命令替换 353
17.3.3 输出环境 354
17.3.4 重置变量 355
17.3.5 创建用户自定义只读变量 356
17.3.6 从标准输入中读 357
17.4 向shell脚本传递参数 358
17.5 注释与程序头 360
17.6 流程控制命令 361
17.6.1 if-then-else-endif语句 361
17.6.2 foreach语句 367
17.6.3 while语句 369
17.6.4 break、continue和goto语句 370
17.6.5 switch语句 371
小结 374
习题 374
18.2 数值型数据的处理 376
第18章 高级TC shell编程 376
18.1 引言 376
18.3 数组操作 377
18.4 here document 382
18.5 中断(信号)处理 383
18.6 调试shell程序 386
小结 387
习题 388
第19章 文件系统备份 389
19.1 引言 389
19.2 用tar命令存档和恢复文件 389
19.2.1 档案文件 390
19.2.2 恢复档案文件 393
19.2.3 复制目录层 396
19.3 以tar格式发行软件 397
小结 398
习题 398
第20章 Linux软件开发工具 399
20.1 引言 399
20.2 计算机编程语言 399
20.3 编译过程 401
20.4 软件工程的生命周期 401
20.5 程序生成工具 402
20.5.1 生成C语言源代码 402
20.5.2 缩进C语言代码 402
20.5.3 C程序的编译 405
20.5.4 处理模块化的C程序 407
20.5.5 创建、修改和释放库/归档文件 415
20.5.6 版本控制 420
20.6 静态分析工具 442
剖析C源程序 442
20.7 动态分析工具 446
20.7.1 代码调试 446
20.7.2 运行效率分析 455
小结 456
习题 457
第21章 XFree86和Linux图形用户界面 459
21.1 引言 459
21.2.1 比较与优势 460
21.2 XFree86基础 460
21.2.2 交互的关键组件——事件和请求 461
21.2.3 窗口管理器在用户界面中的角色——FVWM 462
21.2.4 定制XFree86和FVWM 466
21.3 GNOME桌面管理器 471
21.3.1 GNOME桌面的登录、注销及外观显示 471
21.3.2 GNOME面板 472
21.3.3 自定义面板 473
21.3.4 使用GnoRPM安装新软件包 476
21.3.5 Sawfish窗口管理器 479
21.3.6 GNOME Control Center(GNOME控制中心) 482
21.3.7 使用GNOME文件管理器进行文件管理 483
21.4.1 登录和注销 484
21.4 KDE桌面管理器 484
21.4.2 KDE面板 485
21.4.3 新软件包的安装 488
21.4.4 K窗口管理器 490
21.4.5 KDE控制中心 492
21.4.6 使用KFM进行文件管理 493
21.5 Internet资源 495
小结 495
习题 496
附录A Linux的安装 498
附录B 命令字典 507
术语表 567