第1章 Unix简介 1
1.1 使用Unix的原因 2
1.2 Unix语言 3
1.3 Unix学习提示 3
1.4 不知道正在使用Unix的人 4
1.5 知道正在使用Unix的人 4
1.6 从本书获取最多的知识 5
1.7 本书所做的假定 5
1.8 本书未做的假定 6
1.9 本书使用方法 6
1.10 练习 7
第2章 什么是Linux?什么是Unix 8
2.1 什么是操作系统 8
2.2 什么是内核 9
2.3 Unix=内核+实用工具 11
2.4 “Unix”曾经是一个专用名称 11
2.5 “Unix”现在是一个通用名称 12
2.6 自由软件基金会 12
2.7 GNU宣言摘录 14
2.8 GPL和开放源代码软件 16
2.9 20世纪70年代的Unix:由贝尔实验室转向Berkeley 17
2.10 20世纪80年代的Unix:BSD和System Ⅴ 18
2.11 1991年的Unix:等待中 20
2.12 真命天子:Linus Torvalds 22
2.13 Linux发行版 24
2.14 BSD发行版 25
2.15 您应该使用什么类型的Unix 26
2.16 获取Linux或者FreeBSD的方式 28
2.17 什么是Unix?什么是Linux 31
2.18 练习 31
第3章 Unix连接 33
3.1 人、机器和外星人 33
3.2 价格昂贵的早期计算机 34
3.3 主机和终端 36
3.4 终端室和终端服务器 38
3.5 控制台 40
3.6 Unix连接 40
3.7 没有控制台的主机 42
3.8 客户端/服务器关系 43
3.9 按下键时发生的事情 44
3.10 字符终端和图形终端 46
3.11 最常见类型的终端 47
3.12 练习 48
第4章 开始使用Unix 49
4.1 系统管理员 49
4.2 用户标识和口令 50
4.3 登录(开始使用Unix) 51
4.4 登录之后发生的事情 53
4.5 着手工作:shell提示 54
4.6 注销(停止使用Unix):logout、exit、login 55
4.7 大写字母和小写字母 57
4.8 Unix会话样本 57
4.9 改变口令:passwd 59
4.10 口令选择 60
4.11 检查他人是否使用过您的Unix账户:last 61
4.12 用户标识和用户 62
4.13 超级用户的用户标识:root 62
4.14 安全计算实践中体验快乐 63
4.15 练习 64
第5章 GUI:图形用户界面 65
5.1 什么是GUI 65
5.2 X Window 66
5.3 谁负责X Window 68
5.4 抽象层次 69
5.5 窗口管理器 70
5.6 桌面环境 71
5.7 抽象层次:继续 72
5.8 Unix公司如何发展图形界面 72
5.9 KDE和Gnome 73
5.10 CDE和总拥有成本 75
5.11 桌面环境的选择 77
5.12 祖母机器 79
5.13 练习 81
第6章 Unix工作环境 82
6.1 同时做不止一件事情:Ⅰ 82
6.2 GUI和CLI 85
6.3 使用GUI登录和注销 85
6.4 运行级别 86
6.5 Microsoft Windows的运行级别 88
6.6 学习使用GUI 89
6.7 鼠标和菜单 90
6.8 调整大小、最小化、最大化及关闭窗口 92
6.9 控制焦点:任务切换 94
6.10 多桌面/工作空间 95
6.11 终端窗口 96
6.12 虚拟控制台 99
6.13 唯一的控制台 101
6.14 选择与插入 102
6.15 复制与粘贴 103
6.16 以超级用户工作:su 104
6.17 以超级用户执行一条单独的命令:sudo 106
6.18 配置文件 108
6.19 浏览配置文件 109
6.20 系统关闭与重新启动:init、reboot、shutdown 110
6.21 系统启动或者停止时发生什么事情?dmesg 111
6.22 同时做不止一件事情:Ⅱ 111
6.23 练习 113
第7章 Unix键盘使用 114
7.1 最初的Unix终端 114
7.2 Teletype和Unix文化 116
7.3 Termcap、Terminfo与curses 117
7.4 Unix如何知道所使用终端的类型 120
7.5 修饰键:〈Ctrl〉键 121
7.6 Unix键盘信号 122
7.7 键入过程中使用的信号:erase、werase、kill 122
7.8 〈Backspace〉和〈Delete〉 124
7.9 神秘字符^H 126
7.10 停止程序:intr 127
7.11 另一种停止程序的方法:quit 128
7.12 暂停显示:stop、start 129
7.13 文件结束信号:eof 130
7.14 shell和eof信号 130
7.15 Bash:封闭eof信号 131
7.16 Kom Shell:封闭eof信号 132
7.17 C-Shell:封闭eof信号 132
7.18 显示键映射:stty-a 133
7.19 修改键映射:stty 134
7.20 命令行编辑 135
7.21 返回和换行 137
7.22 新行字符的重要性 137
7.23 ^J的一个重要用途:stty sane、reset 139
7.24 程序员和公主的神话 140
7.25 练习 140
第8章 能够立即使用的程序 142
8.1 在系统中查找程序:which、type、whence 142
8.2 如何停止程序 144
8.3 显示时间和日期:date 145
8.4 显示日历:cal 146
8.5 Unix提醒服务:calendar 148
8.6 查看系统信息:uptime、hostname、uname 149
8.7 显示自己的信息:whoami、quota 150
8.8 显示其他用户的信息:users、who、w 150
8.9 终端临时上锁:lock 152
8.10 请求Unix提醒何时离开:leave 154
8.11 内置计算器:bc 155
8.12 使用bc进行计算 156
8.13 在bc中使用变量 158
8.14 在bc中使用不同的基 160
8.15 逆波兰表示法 161
8.16 基于栈的计算器:dc 164
8.17 练习 167
第9章 文档资料:Unix手册与Info 168
9.1 Unix传统与自学 168
9.2 RTFM 169
9.3 什么是Unix手册?man 171
9.4 说明书页 172
9.5 显示说明书页 172
9.6 两个有用的说明书页技术 175
9.7 man的备选方案:xman和Web 177
9.8 Unix手册的组织方式 179
9.9 在man命令中指定节号 180
9.10 说明书页的引用方式 181
9.11 说明书页的格式 182
9.12 一种快速查寻命令作用的方法:whatis 186
9.13 搜索命令:apropos 187
9.14 foo、bar和foobar 188
9.15 Info系统 189
9.16 Info和树 191
9.17 启动Info:info 193
9.18 学习Info 193
9.19 阅读Info文件 194
9.20 从一个节点跳转到另一个节点 196
9.21 练习 198
第10章 命令语法 199
10.1 一次输入多条命令 199
10.2 输入命令时会发生什么事情 200
10.3 命令语法 201
10.4 选项 202
10.5 -选项和--选项 203
10.6 参数 204
10.7 空白符 205
10.8 一个或多个;零个或多个 206
10.9 命令的形式描述:语法 207
10.10 使用Unix手册学习命令语法 209
10.11 如何学习众多的选项 210
10.12 练习 211
第11章 shell 212
11.1 什么是shell 212
11.2 Bourne Shell家族:sh、ksh、bash 213
11.3 C-Shell家族:csh、tcsh 217
11.4 应该使用哪种shell 219
11.5 临时改变shell 222
11.6 口令文件,改变登录shell:chsh 223
11.7 练习 225
第12章 使用shell:变量和选项 226
12.1 交互式shell和非交互式shell 227
12.2 环境、进程和变量 228
12.3 环境变量和shell变量 229
12.4 显示环境变量:env、printenv 232
12.5 显示shell变量:set 234
12.6 显示及使用变量的值:echo、print 236
12.7 Bourne shell家族使用变量:export、unset 238
12.8 C-Shell家族使用变量:setenv、unsetenv、set、unset 239
12.9 shell选项:set-o、set+o 241
12.10 显示shell选项 243
12.11 机器可读、人类可读 244
12.12 练习 245
第13章 使用shell:命令和定制 246
13.1 元字符 246
13.2 引用和转义 249
13.3 强引用和弱引用 251
13.4 shell内置命令:type 252
13.5 学习内部命令 254
13.6 外部命令及搜索路径 255
13.7 修改搜索路径 256
13.8 黑客如何使用搜索路径 258
13.9 shell提示 259
13.10 修改shell提示 260
13.11 使用变量的值 261
13.12 引用变量时使用哪类引号 263
13.13 使用转义字符的特殊码 263
13.14 命令替换 265
13.15 键入命令并进行修改 267
13.16 历史列表:fc、history 268
13.17 历史列表:设置大小 271
13.18 历史列表示例:避免删错文件 272
13.19 在shell提示中显示事件编号&工作目录 273
13.20 自动补全 274
13.21 自动补全:高级应用 277
13.22 为好玩和赌注使用自动补全 279
13.23 命令行编辑:bindkey 280
13.24 别名:alias、unalias 281
13.25 临时挂起别名 283
13.26 别名示例:避免删错文件 284
13.27 别名示例:从历史列表中重用命令 285
13.28 别名示例:在shell提示中显示工作目录名称 287
13.29 练习 289
第14章 使用shell:初始化文件 291
14.1 初始化文件和注销文件 291
14.2 初始化文件和注销文件的名称 292
14.3 点文件和rc文件 293
14.4 使用简单的文本编辑器 295
14.5 登录shell和非登录shell 296
14.6 何时执行初始化文件 296
14.7 shell初始化文件的历史简介 297
14.8 初始化文件中放置什么内容 298
14.9 显示、创建及编辑初始化文件 299
14.10 shell脚本注释 300
14.11 Bourne shell家族:初始化文件示例 301
14.12 C-Shell家族:初始化文件示例 303
14.13 练习 306
第15章 标准I/O:重定向和管道 307
15.1 Unix设计准则 307
15.2 Unix新设计准则 308
15.3 标准输入、标准输出和标准错误 310
15.4 重定向标准输出 311
15.5 防止文件被重定向替换或创建 312
15.6 重定向标准输入 314
15.7 文件描述符、Bourne shell家族重定向标准错误 315
15.8 子shell 317
15.9 在C-Shell家族中重定向标准错误 319
15.10 组合标准输出和标准错误 320
15.11 抛弃输出 321
15.12 重定向:小结和体验 322
15.13 管道线 326
15.14 管道线分流:tee 328
15.15 管道线的重要性 329
15.16 条件执行 330
15.17 练习 331
第16章 过滤器:简介和基本操作 333
16.1 命令和选项变体 333
16.2 过滤器 334
16.3 是否应该创建自己的过滤器 335
16.4 问题解决过程 335
16.5 可能最简单的过滤器:cat 337
16.6 增强过滤器的功能 339
16.7 最有用的过滤器列表 341
16.8 组合文件:cat 343
16.9 划分文件:split 345
16.10 组合文件时反转文本行的顺序:tac 347
16.11 反转字符的顺序:rev 348
16.12 从数据开头或末尾选择数据行:head、tail 349
16.13 删除数据列:colrm 351
16.14 练习 352
第17章 过滤器:比较和抽取 353
17.1 比较文件 353
17.2 比较任意两个文件:cmp 354
17.3 比较有序文本文件:comm 355
17.4 比较无序文本文件:diff 357
17.5 diff使用的选项 361
17.6 比较文件时的输出格式:diff、sdiff 362
17.7 差分和补丁 365
17.8 抽取数据列:cut 367
17.9 记录、字段和定界符;抽取数据字段:cut 369
17.10 组合数据列:paste 371
17.11 练习 374
第18章 过滤器:统计和格式化 376
18.1 创建行号:nl 376
18.2 统计行、单词和字符数量:wc 378
18.3 Unix使用制表符的方式 381
18.4 可视化制表符和空格 383
18.5 将制表符转换成空格:expand 384
18.6 将空格转换成制表符:unexpand 386
18.7 格式化行:fold 387
18.8 80字符行 390
18.9 格式化段落:fmt 391
18.10 打印的旧时代 393
18.11 按页格式化文本:pr 394
18.12 按列格式化文本:pr 397
18.13 练习 398
第19章 过滤器:选取、排序、组合及变换 400
19.1 选取包含特定模式的行:grep 400
19.2 最重要的grep选项 403
19.3 grep的变体:fgrep、egrep 407
19.4 选取以特定模式开头的行:look 408
19.5 使用look和grep的时机 409
19.6 查找以特定模式开头的所有单词:look 410
19.7 排序数据:sort 412
19.8 控制数据排序的顺序:sort-dfn 413
19.9 检查数据是否有序:sort-c 415
19.10 ASCII码;排序序列 416
19.11 区域设置和排序序列 419
19.12 查找重复行:uniq 423
19.13 合并两个文件中的有序数据:join 425
19.14 由偏序创建全序:tsort 429
19.15 在二进制文件中搜索字符串:strings 431
19.16 转换字符:tr 433
19.17 转换不可显示字符 436
19.18 转换字符:高级话题 437
19.19 非交互式文本编辑:sed 439
19.20 使用sed进行替换 441
19.21 告诉sed只对指定行进行操作 443
19.22 使用非常长的sed命令 444
19.23 练习 445
第20章 正则表达式 447
20.1 正则表达式简介 447
20.2 正则表达式的起源 449
20.3 基本和扩展正则表达式 450
20.4 匹配行和单词 452
20.5 匹配字符;字符类 455
20.6 预定义字符类;范围 455
20.7 区域设置和排序序列:locale;ASCII码 456
20.8 使用范围和预定义字符类 459
20.9 重复运算符 460
20.10 理解复杂正则表达式的方式 463
20.11 解决3个有趣的难题;字典文件 463
20.12 练习 466
第21章 显示文件 468
21.1 文件显示程序综述 469
21.2 less简介:启动、停止、帮助 471
21.3 less和more的故事 473
21.4 使用less 474
21.5 使用less在文件中搜索 475
21.6 原始模式和成熟模式 477
21.7 less使用的选项 478
21.8 使用less和cat的时机 480
21.9 使用环境变量定制分页程序 481
21.10 使用less显示多个文件 482
21.11 使用more显示文件 485
21.12 显示文件的开头:head 487
21.13 显示文件的末尾:tail 487
21.14 观察不断增长的文件的末尾:tail-f 488
21.15 二进制、八进制和十六进制 490
21.16 二进制、八进制和十六进制的读取和写入 495
21.17 选择使用十六进制而不是八进制的原因 496
21.18 显示二进制文件:hexdump、od 498
21.19 众多计算机术语来自数学的原因 502
21.20 练习 502
第22章 vi文本编辑器 505
22.1 vi重要的原因 505
22.2 vi历史简介 506
22.3 Vim:vi的备用编辑器 509
22.4 启动vi 510
22.5 启动Vim:vim 511
22.6 命令模式和输入模式 513
22.7 了解所处模式的方式 515
22.8 以只读方式启动vi:view、vi-R 515
22.9 系统失败后数据的恢复 516
22.1 0停止vi 517
22.11 vi使用屏幕的方式 518
22.12 使用vi和ex命令 519
22.13 学习vi命令的策略 520
22.14 创建一个练习文件 521
22.15 移动光标 521
22.16 在编辑缓冲区中移动 525
22.17 跳转到前一位置 526
22.18 搜索模式 528
22.19 使用行号 530
22.20 插入文本 531
22.21 修改文本 533
22.22 替换文本 536
22.23 删除文本 538
22.24 撤销或重复改变 541
22.25 恢复删除 542
22.26 移动文本 543
22.27 复制文本 545
22.28 改变字母的大小写 546
22.29 设置选项 547
22.30 显示选项 549
22.31 在键入过程中自动换行 550
22.32 分隔与连接行 550
22.33 复制与移动行 551
22.34 输入shell命令 552
22.35 将文件中的数据插入到编辑缓冲区中 553
22.36 将shell命令的输出插入到编辑缓冲区中 554
22.37 使用程序处理数据:fmt 555
22.38 将数据写入文件 557
22.39 切换到一个新文件 558
22.40 使用缩写 559
22.41 宏 560
22.42 初始化文件:exrc、.vimrc 562
22.43 使用两个初始化文件 564
22.44 学习使用Vim 565
22.45 事实背后的故事 566
22.46 练习 567
第23章 Unix文件系统 569
23.1 什么是文件 569
23.2 文件类型 570
23.3 目录和子目录 571
23.4 特殊文件 572
23.5 硬件特殊文件 573
23.6 终端特殊文件:tty 574
23.7 伪设备特殊文件 575
23.8 命名管道:mkfifo 576
23.9 proc文件 578
23.10 树型结构文件系统;文件系统层次结构标准 580
23.11 根目录;子目录 582
23.12 挂载文件系统:mount、umount 582
23.13 漫游根目录 584
23.14 漫游/usr目录 587
23.15 使用多个目录存放程序的原因 589
23.16 home目录 590
23.17 虚拟文件系统 592
23.18 练习 594
第24章 目录操作 596
24.1 路径名与工作目录 596
24.2 绝对路径名与相对路径名 597
24.3 3种便利的路径名缩写:.. .~ 599
24.4 在目录树中移动:cd、pwd 602
24.5 创建新目录:rnkdir 605
24.6 移除目录:rmdir 608
24.7 移动或重命名目录:mv 610
24.8 使用目录栈:pushd、popd、dirs 611
24.9 最重要的程序:ls 617
24.10 列举目录内容:ls-CrRl 618
24.11 排序序列、区域设置和ls 621
24.12 检查文件类型:ls-F 622
24.13 检查文件类型:ls--color 622
24.14 检查文件类型:file 624
24.15 掌握磁盘空间使用情况:ls-hs、du、df、quota 626
24.16 文件有多大?块和分配单元:dumpe2fs 629
24.17 使用通配符进行通配 631
24.18 点文件(隐藏文件):ls-a 635
24.19 长目录列表:ls-dhltu 637
24.20 ls使用过程中的有用别名 640
24.21 显示目录树:tree 641
24.22 文件管理器 643
24.23 练习 645
第25章 文件操作 647
25.1 创建文件:touch 647
25.2 命名文件 649
25.3 复制文件:cp 652
25.4 将文件复制到不同的目录中:cp 653
25.5 将目录复制到另一个目录中:cp-r 654
25.6 移动文件:mv 654
25.7 重命名文件或目录:mv 655
25.8 删除文件:rm 656
25.9 如何防止误删文件:rm-if 657
25.10 删除整个目录树:rm-r 659
25.11 被删除文件恢复的可能性 660
25.12 文件权限 660
25.13 setuid 662
25.14 Unix维护文件权限的方式:id、groups 663
25.15 显示文件权限:ls-l 665
25.16 文件模式 666
25.17 改变文件权限 667
25.18 Unix为新文件指定权限的方式:umask 668
25.19 清空文件内容:shred 669
25.20 链接的概念:stat、ls-i 670
25.21 多重链接 671
25.22 创建新链接:ln 672
25.23 基本文件命令的工作方式 673
25.24 符号链接:ln-s 674
25.25 目录使用符号链接 675
25.26 查找与Unix命令相关的文件:whereis 676
25.27 通过搜索数据库查看文件:locate 678
25.28 通过搜索目录树查找文件:find 679
25.29 find命令:路径 681
25.30 find命令:测试 681
25.31 find命令:使用!运算符对测试求反 685
25.32 find命令:处理文件权限错误消息 685
25.33 find命令:动作 686
25.34 处理查找到的文件:xargs 689
25.35 练习 692
第26章 进程和作业控制 695
26.1 内核管理进程的方式 695
26.2 进程分叉到死亡 696
26.3 孤儿进程和废弃进程 698
26.4 区分父进程和子进程 699
26.5 第一个进程:init 699
26.6 前台进程和后台进程 700
26.7 创建延迟:sleep 701
26.8 作业控制 703
26.9 在后台运行作业 705
26.10 挂起作业:fg 706
26.11 挂起shell:suspend 708
26.12 作业控制与多窗口 709
26.13 显示作业列表:jobs 710
26.14 将作业移至前台:fg 711
26.15 将作业移至后台:bg 713
26.16 学习使用ps程序 714
26.17 ps程序:基本技能 715
26.18 ps程序:选择选项 720
26.19 ps程序:状态 722
26.20 监视系统进程:top、prstat 724
26.21 显示进程树:pstree、ptree 727
26.22 思考Unix如何组织进程和文件:fuser 729
26.23 杀死进程:kill 731
26.24 向进程发送信号:kill 733
26.25 设置进程的优先级:nice 734
26.26 改变现有进程的优先级:renice 736
26.27 守护进程 737
26.28 结束语 739
26.19 练习 740
附录A Unix命令一览表 742
附录B Unix命令分类表 747
附录C vi命令小结 753
附录D ASCII码 760
附录E 忘记root口令的处理方法 765
附录F 时区与24小时制时间 767
附录G shell选项和shell变量 771
术语表 776