第Ⅰ部分 UNIX之用户篇 3
第1章 UNIX简介 3
1.1 操作系统 4
1.2 UNIX操作系统 5
1.3 了解你的计算机 5
1.4 系统管理员 7
1.5 登录和注销 7
1.5.1 登录 7
1.5.2 注销 8
1.6 实践练习 9
1.6.1 用date和who查看系统信息 9
1.6.2 用ps查看进程 10
1.6.3 处理文件 11
1.6.4 处理目录 12
1.7 UNIX的成功之路 14
1.7.1 伯克利:第二学派 14
1.7.2 UNIX的分化 15
1.7.3 互联网 15
1.7.4 Windows的威胁 15
1.8 POSIX和单一UNIX规范 16
1.9 Linux和GNU 16
1.10 UNIX体系结构 17
1.10.1 分工:Kernel和shell 17
1.10.2 文件和进程 18
1.10.3 系统调用 19
1.11 UNIX的功能 19
1.11.1 多用户系统 19
1.11.2 多任务系统 20
1.11.3 应用程序库 20
1.11.4 构建基块方法 20
1.11.5 模式匹配 21
1.11.6 程序设计实用工具 21
1.11.7 文档 21
1.12 小结 22
1.13 自测题 22
1.14 习题 23
第2章 熟悉UNIX命令 25
2.1 命令基础 26
2.1.1 PATH:定位命令 26
2.1.2 命令的存放位置 27
2.2 命令结构 28
2.3 命令应用的灵活性 30
2.4 man:联机帮助 31
2.4.1 导航与查找 33
2.4.2 用man-k和man-f获取更多帮助 33
2.5 man文档 33
2.5.1 了解man页 34
2.5.2 用man来理解man 35
2.6 echo:显示消息 37
2.7 printf:echo的替代命令 39
2.8 script:记录会话 39
2.9 以mailx命令使用电子邮件 40
2.9.1 发送邮件 40
2.9.2 接收邮件 41
2.9.3 mailx内部命令 42
2.10 passwd:改变密码 43
2.11 uname:显示计算机名和操作系统 44
2.12 who:了解用户 45
2.13 date:显示系统日期 45
2.14 stty:在出错时 46
2.15 X Window系统 48
2.15.1 终端模拟器 48
2.15.2 文件管理器 49
2.16 小结 50
2.17 自测题 51
2.18 习题 52
第3章 文件系统 55
3.1 文件 56
3.1.1 普通(常规)文件 56
3.1.2 目录文件 56
3.1.3 设备文件 57
3.2 文件名中有什么 57
3.3 文件系统的层次结构 58
3.4 UNIX文件系统 59
3.5 随命令一起使用绝对路径名 60
3.6 HOME变量和~:主目录 61
3.7 pwd和cd:在文件系统中导航 61
3.8 相对路径名(.和..) 63
3.9 mkdir:创建目录 64
3.10 rmdir:删除目录 65
3.11 ls:列出文件 66
3.12 cp:复制文件 69
3.13 mv:重命名文件 70
3.14 rm:删除文件 71
3.15 cat:显示和串联文件 73
3.16 more:UNIX分页器 74
3.17 pico:基本文本编辑 76
3.17.1 导航 77
3.17.2 文本编辑 77
3.18 wc:计算行数、字数和字符数 77
3.19 lp:打印文件 78
3.20 od:查看不可打印字符 80
3.2 1 dos2unix、unix2dos和Tofrodos:在DOS和UNIX之间转换 80
3.22 tar:存档程序 81
3.23 gzip:压缩程序 82
3.24 zip:压缩和存档程序 84
3.25 使用这些命令的其他方式 85
3.26 小结 85
3.27 自测题 86
3.28 习题 86
第4章 文件属性 89
4.1 重温ls(-l):列出文件属性 89
4.2 文件权限 91
4.3 chmod:改变文件权限 92
4.3.1 相对权限 93
4.3.2 绝对赋予权限 94
4.3.3 递推操作(-R) 95
4.4 目录 96
4.4.1 读权限 96
4.4.2 写权限 96
4.4.3 执行权限 98
4.5 umask:默认的文件与目录权限 98
4.6 文件系统和inode 99
4.7 ln:创建硬链接 101
4.8 再论ln:创建符号链接 103
4.9 文件所有权 105
4.9.1 chown:改变文件所有权 106
4.9.2 chgrp:改变用户组所有者 106
4.9.3 如何处理入侵者 107
4.10 修改时间与访问时间 108
4.11 find:定位文件 108
4.11.1 选择准则 110
4.11.2 find操作符(!,-o和-a) 112
4.11.3 操作部分的操作符 112
4.12 小结 113
4.13 自测题 113
4.14 习题 114
第5章 vi/vim编辑器 117
5.1 vi基础 118
5.2 一些提示 120
5.3 输入模式——输入和替换文本 121
5.3.1 插入和追加文本(i和a) 122
5.3.2 在行的两端插入和追加文本(I和A) 122
5.3.3 新建一行(o和O) 123
5.3.4 替换文本(r、s、R和S) 124
5.3.5 输入控制字符([Ctrl-v]) 125
5.4 保存文本并退出——ex模式 126
5.4.1 保存工作(:w) 127
5.4.2 保存并退出(:x和:wq) 127
5.4.3 中止编辑(:q) 127
5.4.4 写入选定行 128
5.4.5 退出到shell(:sh和[Ctrl-z]) 129
5.5 从崩溃中恢复(:recover和-r) 129
5.6 导航 130
5.6.1 4个方向上的相对移动(h、j、k和1) 131
5.6.2 滚动([Ctrl-f]、[Ctrl-b]、[Ctrl-d]和[Ctrl-u]) 131
5.6.3 单词导航(b、e和w) 132
5.6.4 移到行的末端(0、|和$) 132
5.6.5 绝对移动(G) 133
5.7 编辑文本,不使用操作符 133
5.7.1 删除文本(x、X和dd) 133
5.7.2 移动文本(p) 134
5.7.3 合并行(J) 134
5.7.4 改变大小写(~) 135
5.8 纠正C程序 135
5.9 用操作符编辑文本 136
5.9.1 删除和移动文本(d、p和P) 137
5.9.2 复制文本(y、p和P) 138
5.9.3 修改文本(c) 139
5.10 在文件之间复制和移动文本 139
5.11 撤消之前的编辑指令(u和U) 140
5.12 查找模式(/和?) 141
5.13 重复上一条命令(.) 142
5.14 替代-查找并替换(:s) 143
5.15 set:定制vi 144
5.16 map:映射键盘的按键 146
5.17 abbr:文本输入的缩写 147
5.18 小结 147
5.19 自测题 148
5.20 习题 149
第6章 shell 151
6.1 作为命令处理器的sheU 152
6.2 shell提供的功能 152
6.3 模式匹配——通配符 153
6.3.1 *和? 154
6.3.2 字符类 155
6.3.3 匹配句点 156
6.3.4 综述 157
6.4 转义与引用 157
6.4.1 转义 158
6.4.2 引用 159
6.4.3 在echo中进行转义 159
6.5 重定向 160
6.5.1 标准输入 160
6.5.2 标准输出 162
6.5.3 文件描述符 163
6.5.4 标准错误 164
6.5.5 过滤器——使用标准输入与标准输出 165
6.6 集体处理 165
6.6.1 复制描述符 166
6.6.2 命令分组 166
6.7 /dev/null和/dev/tty:两个独立的文件 167
6.8 管道 168
6.9 tee:创建一个T型三通 170
6.10 命令替换 171
6.11 shell变量 172
6.11.1 引用和转义的影响 173
6.11.2 使用shell变量的场合 174
6.12 shell脚本 175
6.13 shell对命令行的处理 175
6.14 有关通配符的更多信息 176
6.15 xargs:构建动态命令行 177
6.16 小结 177
6.17 自测题 178
6.18 习题 179
第7章 进程 181
7.1 进程基础 182
7.2 shell和init 182
7.3 ps:显示进程属性 183
7.4 系统进程和init 184
7.5 进程创建机制 187
7.6 继承的进程属性 188
7.7 不能使用单独进程的情景 190
7.8 进程状态与僵尸进程(Zombie) 190
7.9 信号处理 191
7.10 在后台运行作业 193
7.10.1 &:不注销 194
7.10.2 nohup:安全注销 194
7.11 作业控制 195
7.12 at和batch:推后执行 198
7.12.1 at:一次执行 198
7.12.2 batch:在批队列中执行作业 199
7.12.3 限制at和batch的使用 199
7.13 cron和crontab:定期运行作业 199
7.14 小结 202
7.15 自测题 203
7.16 习题 203
第8章 shell—定制环境 205
8.1 shell 205
8.2 环境变量 207
8.3 常见环境变量 208
8.4 别名 212
8.5 命令历史记录 213
8.5.1 访问之前的命令 214
8.5.2 在先前命令中进行替换 215
8.5.3 使用上一条命令中的参数)$) 215
8.5.4 历史记录变量 216
8.6 行内命令编辑 217
8.7 ~替换 218
8.8 使用set选项 219
8.9 初始化脚本 220
8.9.1 登录脚本 221
8.9.2 rc文件 221
8.10 C shell 222
8.10.1 局部变量和环境变量 222
8.10.2 别名 224
8.10.3 历史记录 225
8.10.4 其他shell变量 225
8.10.5 初始化脚本 226
8.11 目录栈操作 226
8.12 小结 228
8.13 自测题 229
8.14 习题 229
第9章 简单过滤器 231
9.1 pr:对文件进行编页 232
9.2 对比文件 233
9.3 cmp:逐字节对比 234
9.4 comm:哪些共同内容 235
9.5 diff:将一个文件转换为另一文件 236
9.6 head:显示一个文件的开头 236
9.7 tail:显示文件的末尾 237
9.8 cut:垂直划分文件 238
9.9 paste:粘贴文件 240
9.10 sort:对文件进行排序 240
9.11 uniq:定位重复行和非重复行 244
9.12 tr:变换字符 245
9.13 应用过滤器 247
9.13.1 列出当前目录中5个最大的文件 248
9.13.2 创建一份单词使用情况列表 249
9.13.3 找出两个密码文件之间的差别 249
9.14 小结 251
9.15 自测题 251
9.16 习题 252
第10章 使用正则表达式的过滤器——grep和sed 255
10.1 示例数据库 256
10.2 grep:查找模式 256
10.2.1 grep中的引用 257
10.2.2 grep失败的场合 258
10.3 grep选项 258
10.4 基本正则表达式(BRE)——简介 260
10.4.1 字符类 262
10.4.2 * 262
10.4.3 句点 263
10.4.4 指定模式位置(^和$) 264
10.4.5 元字符失去其意义的情景 265
10.5 扩展正则表达式(ERE)和egrep 265
10.5.1 +和? 266
10.5.2 匹配多种模式(|、(和)) 266
10.6 sed:流编辑器 267
10.7 行寻址 269
10.8 sed选项 270
10.9 上下文寻址 271
10.10 将选定行写入文件(W) 272
10.11 文本编辑 272
10.11.1 插入和改变行(i、a、c) 272
10.11.2 删除行(d) 273
10.12 替换(s) 274
10.12.1 在替换中使用正则表达式 275
10.12.2 记忆模式(∥) 275
10.13 基本正则表达式回顾 276
10.13.1 重复模式(&) 277
10.13.2 间隔正则表达式(IRE) 277
10.13.3 标记正则表达式(TRE) 277
10.14 应用IRE和TRE 278
10.14.1 处理电话簿 278
10.14.2 用POSIX兼容的函数替换过时的函数 279
10.14.3 变换URL中的路径名 280
10.15 小结 281
10.16 自测题 281
10.17 习题 282
第11章 联网工具 285
11.1 TCP/IP基础知识 286
11.2 解析主机名和IP地址 287
11.2.1 /etc/hosts:主机文件 287
11.2.2 域名系统(DNS) 288
11.3 客户端-服务器:网络应用程序如何通信 290
11.4 ping:检查网络 291
11.5 telnet:远程登录 292
11.6 ftp:文件传输协议 293
11.6.1 基本文件与目录处理 293
11.6.2 传送文件 294
11.6.3 匿名FTP 295
11.7 密码学基础 296
11.7.1 对称密钥算法 296
11.7.2 非对称密钥算法 297
11.8 SSH:安全shell 297
11.8.1 主机验证 297
11.8.2 rhosts/shosts验证机制 298
11.8.3 采用对称算法的用户验证 298
11.8.4 使用SSH代理进行非交互式登录 300
11.9 SSH协议 301
11.9.1 远程登录与执行命令(ssh和slogin) 301
11.9.2 用sftp和scp进行文件传输 302
11.10 互联网邮件 303
11.11 MIME:处理邮件中的二进制附件 305
11.12 在TCP/IP网络上使用X Window 306
11.12.1 显示器 306
11.12.2 使用DISPLAY变量 307
11.12.3 使用-display选项 307
11.13 HTTP和万维网 307
11.13.1 统一资源定位符(URL) 308
11.13.2 HTTP:Web的协议 309
11.13.3 运行外部程序 309
11.13.4 HTML:网页的语言 310
11.13.5 Web浏览器 311
11.14 Web上的多媒体:重温MIME 311
11.15 小结 312
11.16 自测题 313
11.17 习题 314
第Ⅱ部分 UNIX之程序员篇 317
第12章 用awk进行过滤和程序设计 317
12.1 awk预备知识 318
12.2 使用print和printf 320
12.3 数字处理 321
12.4 变量和表达式 322
12.5 比较与逻辑运算符 324
12.5.1 字符串和数值比较 324
12.5.2 ~和!~:正则表达式运算符 325
12.5.3 逻辑运算符 327
12.6 -f选项:将awk程序存储在文件中 327
12.7 BEGIN和END节 328
12.8 位置参数 329
12.9 数组 329
12.9.1 关联(哈希)数组 330
12.9.2 ENVIRON[]:环境数组 331
12.10 内置变量 331
12.11 函数 333
12.12 控制流——if语句 335
12.13 for循环 336
12.14 while循环 338
12.15 结论 339
12.16 小结 340
12.17 自测题 340
12.18 习题 341
第13章 shell程序设计 345
13.1 shell脚本 346
13.1.1 script.sh:一个简单脚本 346
13.1.2 She-Bang行 347
13.2 read:使脚本变为交互式的 348
13.3 使用命令行参数 348
13.4 exit和$?:命令的退出状态 350
13.5 逻辑运算符&&和‖——条件执行 351
13.6 if条件句 351
13.7 使用test和[]对表达式求值 353
13.7.1 数值比较 353
13.7.2 []:test的快捷方式 354
13.7.3 字符串比较 355
13.7.4 文件属性检验 355
13.7.5 使用复合条件 357
13.8 两个重要的程序设计习惯 357
13.8.1 以交互式、非交互式执行一项任务 357
13.8.2 用不同名称调用脚本($0) 359
13.9 case条件句 359
13.10 expr、bc和basename:计算与字符串处理 361
13.10.1 用expr进行计算 362
13.10.2 用bc进行浮点计算 362
13.10.3 用expr处理字符串 363
13.10.4 basename:改变文件名扩展 364
13.11 示例程序1:自动选择上一个C程序 365
13.12 for:用列表进行循环 366
13.12.1 列表的来源 366
13.12.2 使用for的重要应用 367
13.13 while:循环 367
13.13.1 在循环中处理重定向 368
13.13.2 使用while等待文件 369
13.13.3 找出用户占用的空间 370
13.13.4 break和continue 371
13.14 示例脚本2:向备份文件提供数字扩展名 371
13.15 用set和shift处理位置参数 373
13.15.1 按名称杀死进程 374
13.15.2 shift:左移位置参数 374
13.15.3 IFS变量:set的默认分隔符 375
13.16 示例脚本3:已下载文件的目录 376
13.17 Here文档(<<) 378
13.18 shell函数 379
13.19 trap:脚本如何处理信号 380
13.20 eval:两次求值 381
13.21 exec语句 382
13.22 小结 382
13.23 自测题 383
13.24 习题 384
第14章 perl——高级操纵器 387
14.1 perl预备知识 388
14.2 变量和常数 389
14.3 运算符 391
14.3.1 比较与逻辑运算符 391
14.3.2 串联运算符和重复运算符(.和x) 392
14.4 标准条件句与循环 392
14.4.1 if条件句 393
14.4.2 while、do-while和for循环 393
14.5 从命令行参数读取文件 394
14.5.1 用单行代码读取文件 395
14.5.2 在脚本中读取文件 395
14.6 当前行号($.)和范围运算符(..) 396
14.7 $:默认变量 396
14.8 字符串处理函数 397
14.9 列表和数组 399
14.10 foreach:循环遍历一个列表 401
14.11 两个重要的列表函数 402
14.11.1 split:分割到列表或数组中 402
14.11.2 join:联接列表 404
14.12 dec2bin.pL:将十进制数变换为二进制 404
14.13 关联数组 405
14.14 使用正则表达式 407
14.14.1 识别空白、数位和单词 407
14.14.2 IRE的TRE功能 408
14.15 用s和tr函数替换 409
14.16 文件处理 411
14.17 文件测试 412
14.18 子例程 413
14.19 用perl进行CGI程序设计——概述 414
14.19.1 查询字符串 414
14.19.2 GET和POST:请求方法 415
14.20 小结 415
14.21 自测题 416
14.22 习题 417
第15章 C语言简介 421
15.1 C语言 422
15.2 first_prog.c:理解我们的第一个C程序 423
15.2.1 预处理器部分 424
15.2.2 主体 424
15.2.3 main:独一无二的函数 425
15.3 printf和scanf:两个重要函数 426
15.3.1 printf:打印到终端 426
15.3.2 scanf:由键盘输入 427
15.4 变量和常数 427
15.5 基本数据类型 428
15.5.1 整型 428
15.5.2 浮点类型 429
15.5.3 字符类型 430
15.6 sizeof.c:确定基本数据类型的大小 431
15.7 符号常量:有名称的常量 432
15.8 数组 432
15.9 arrays.c:打印数组元素 433
15.10 结构 434
15.11 运算符和表达式 435
15.11.1 位运算符 436
15.11.2 自动变换 436
15.11.3 隐式变换 437
15.12 type_conversion.c:演示类型变换 438
15.13 求值顺序 440
15.13.1 运算符优先级 440
15.13.2 运算符结合性 441
15.14 控制流回顾 441
15.14.1 用switch进行决策 442
15.14.2 用do-while重复 443
15.14.3 break和continue 443
15.15 函数 444
15.16 first func.c:两个参数和返回值 445
15.17 函数实参、形参和局部变量 446
15.17.1 按值传递 447
15.17.2 swap_failure.c:形参与局部变量的可见性 448
15.17.3 以数组为函数实参 449
15.17.4 以结构作为函数实参 450
15.18 指针 450
15.19 pointers.c:指针的基本功能 452
15.20 指针属性 453
15.20.1 指针运算 453
15.20.2 其他属性 454
15.21 指针和函数 455
15.21.1 解决交换问题 455
15.21.2 用指针返回多个值 456
15.22 指针和其他数据类型 456
15.22.1 指针和数组 456
15.22.2 指针和字符串 457
15.22.3 字符串数组 458
15.22.4 指针和结构 458
15.23 小结 459
15.24 自测题 460
15.25 习题 461
第16章 程序开发工具 463
16.1 处理拥有多个源文件的C应用程序 463
16.1.1 包含多个源文件的应用程序 464
16.1.2 编译和链接应用程序 466
16.1.3 为什么需要.o文件 467
16.2 make:使程序保持最新 468
16.2.1 删除冗余 470
16.2.2 make的其他功能:清理与备份 470
16.2.3 宏 471
16.3 ar:生成库(档案) 472
16.3.1 使用库 473
16.3.2 用make维护档案 474
16.4 静态库和共享库 474
16.5 用SCCS、RCS和CVS实现版本控制 475
16.6 SCCS会话 476
16.6.1 admin:创建一个SCCS文件 477
16.6.2 get:签出 477
16.6.3 delta:签入 478
16.6.4 unget:如果改变主意 480
16.7 活动与历史信息 481
16.7.1 sact:显示活动状态 481
16.7.2 prs:显示SCCS历史 481
16.8 继续以SCCS编辑 482
16.8.1 get-r:改变默认的编号顺序 482
16.8.2 处理多个版本 483
16.8.3 rmdel和comb:删除和合并版本 484
16.8.4 使用标识关键字 485
16.9 控制对SCCS的访问权限 486
16.9.1 控制用户访问 486
16.9.2 控制发布版本 486
16.10 版本控制系统(RCS) 487
16.10.1 用ci创建RCS文件 488
16.10.2 co和ci:签出和签入 488
16.10.3 指定修订 489
16.10.4 rlog和rcs:其他RCS功能 490
16.11 并发版本系统(CVS) 492
16.11.1 建立存储库 493
16.11.2 导入文件 493
16.11.3 签出 494
16.11.4 编辑和签入 494
16.11.5 合并和解决冲突 495
16.11.6 设置标记并导出存储库 496
16.11.7 其他功能 496
16.12 用gdb调试程序 497
16.12.1 启动gdb 500
16.12.2 使用断点 501
16.12.3 单步执行程序 502
16.12.4 再赋值 503
16.12.5 设定观察点 504
16.12.6 gdb的其他功能 505
16.13 小结 506
16.14 自测题 506
16.15 习题 507
第17章 系统程序设计Ⅰ——文件 509
17.1 系统调用的基础知识 510
17.1.1 系统调用剖析 510
17.1.2 系统调用与库函数的对比 510
17.2 errno和perror:处理错误 511
17.3 open:打开和创建文件 513
17.4 close:关闭文件 515
17.5 read:读取文件 516
17.6 write:写文件 516
17.7 ccp.c:复制文件 517
17.8 lseek:定位偏移指针 519
17.9 truncate和ftruncate:截短文件 521
17.10 umask:在创建期间修改文件权限 522
17.11 目录导航 523
17.12 读取目录 524
17.13 修改目录中的项目 526
17.13.1 mkdir和rmdir:创建和删除目录 526
17.13.2 link和symlink:创建硬链接和符号链接 526
17.13.3 unlink:删除链接 527
17.13.4 rename:对文件、目录或符号链接重命名 527
17.14 读取Inode:struct stat和stat 528
17.14.1 attributes.c:显示一些文件属性 529
17.14.2 S IFMT:处理st mode成员 530
17.14.3 用S ISxxx宏确定文件类型 530
17.14.4 访问权限位 531
17.14.5 lsdir.c:仅列出目录 531
17.15 access:检查实际用户的权限 533
17.16 修改文件属性 534
17.16.1 chmod和fchrnod:改变文件权限 535
17.16.2 chown:改变所有权 535
17.16.3 utime:改变时间戳记 536
17.16.4 atimemtime.c:创建一个具有相同时间戳记的文件 536
17.17 小结 537
17.18 自测题 538
17.19 习题 539
第18章 系统程序设计Ⅱ——进程控制 541
18.1 进程回顾 541
18.1.1 虚拟地址空间 542
18.1.2 进程表 543
18.2 进程环境 544
18.3 fork:复制当前进程 545
18.4 exec:进程创建的最终步骤 547
18.4.1 execl和execv:关键成员 548
18.4.2 其他exec成员 549
18.5 收集退出状态 550
18.5.1 wait:当父进程等待时 550
18.5.2 waitpid:一种功能更强大的等待机制 551
18.6 fork_exec_wait.c:使用全部三个调用 552
18.7 文件共享 553
18.7.1 文件说明符表 554
18.7.2 文件表 554
18.7.3 vnode表 555
18.7.4 当链接发生变化时 555
18.8 文件说明符处理 556
18.8.1 dup和dup2:复制文件说明符 556
18.8.2 redirection.c:最后讨论重定向 557
18.8.3 fcntl:对其推荐程度高于dup和dup2 559
18.9 信号处理 559
18.10 sigaction:安装信号处理器 561
18.10.1 signal.c:捕获SIGALRM信号 563
18.10.2 捕获终端生成的信号 564
18.11 killprocess.c:使用fork-exec-wait和SIGCHLD 565
18.12 用未命名管道实现进程间通信 567
18.12.1 和fork一起使用pipe 568
18.12.2 pipe2.c:在管道中运行UNIX命令 569
18.13 小结 570
18.14 自测题 571
18.15 习题 572
第Ⅲ部分 系统管理 577
第19章 系统管理 577
19.1 root:系统管理员的登录 578
19.2 管理员的特权 579
19.3 用户管理 580
19.3.1 理解/etc/group 580
19.3.2 理解/etc/passwd 581
19.3.3 添加和修改用户配置文件 582
19.4 维护安全 583
19.4.1 受限制的shell 583
19.4.2 Set-User-Id(SUID):临时能力 584
19.4.3 粘着位 585
19.5 启动与关机 585
19.5.1 启动 585
19.5.2 关机 586
19.6 init如何控制系统 587
19.6.1 init如何创建shell 588
19.6.2 rc脚本 589
19.7 设备文件 590
19.7.1 块设备和字符设备 590
19.7.2 主次设备号 591
19.8 文件系统 591
19.8.1 文件系统的组成部分 592
19.8.2 标准文件系统及其类型 592
19.9 加载和卸载文件系统 593
19.9.1 mount:加载文件系统 593
19.9.2 mount:卸载文件系统 594
19.10 fsck:文件系统检查 595
19.11 管理磁盘空间 596
19.11.1 df:报告空闲空间 596
19.11.2 du:磁盘利用率 596
19.11.3 find回顾:管理员的工具 597
19.12 处理软盘 597
19.12.1 format和fdformat:格式化磁盘 598
19.12.2 dd:复制磁盘 598
19.12.3 处理DOS磁盘 598
19.13 tar:备份文件 600
19.13.1 备份文件(-c) 600
19.13.2 恢复文件(-x) 601
19.13.3 显示档案(-t) 602
19.13.4 其他选项 602
19.14 用rpm安装程序 603
19.14.1 安装和升级包 603
19.14.2 删除包 604
19.14.3 查询包 604
19.15 小结 606
19.16 自测题 607
19.17 习题 607
附录A C shell——程序设计构造 609
附录B Kom和Bash shell——独有的程序设计构造 617
附录C GNU emacs编辑器 625
附录D vi/vim命令参考 653
附录E 正则表达式超集 661
附录F 常用操作指南 665
附录G ASCII字符集 671
附录H 术语表 677
附录I 自测题解答 695