第Ⅰ部分 Linux操作系统
第1章 欢迎进入Linux世界.... 3
1.1 GNU-Linux联姻...... 4
1.1.1 GNU-Linux的历史..... 4
1.1.2 自由代码..... 5
1.1.3 Linux的关键..... 6
1.2 Linux的起源:UNIX.... 6
1.3 Linux的优点...... 6
1.3.1 Linux在硬件公司和开发者中
流行的原因..... 7
1.3.2 Linux的可移植性..... 8
1.3.3 标准..... 8
1.3.4 C编程语言..... 9
1.4 Linux概述...... 9
1.4.1 Linux具有内核编程接口..... 10
1.4.2 Linux支持多用户..... 10
1.4.3 Linux支持多任务..... 11
1.4.4 Linux支持安全的分层文件
系统..... 11
1.4.5 shell:命令解释器和编程
语言..... 12
1.4.6 大量有用的工具集..... 13
1.4.7 进程间的通信..... 13
1.4.8 系统管理..... 14
1.5 Linux的其他特性...... 14
1.5.1 GUI. 14
1.5.2 (互联)网络工具..... 14
1.5.3 软件开发..... 15
1.6 本章小结...... 15
练习...... 15
第2章 入门.... 17
2.1 本书约定...... 18
2.2 登录...... 19
2.2.1 终端登录..... 20
2.2.2 远程登录:终端模拟、ssh
和telnet. 20
2.3 shell. 21
2.3.1 识别当前运行的是哪种
shell. 21
2.3.2 校正错误..... 21
2.4 慎用超级用户权限...... 24
2.5 文档...... 24
2.5.1 --help选项..... 24
2.5.2 man:显示系统手册页..... 25
2.5.3 info:显示工具信息..... 27
2.5.4 HOWTO文档..... 28
2.5.5 利用Internet获取帮助..... 29
2.6 登录的更多方面...... 30
2.6.1 如何处理登录失败..... 30
2.6.2 退出..... 30
2.6.3 虚拟控制台..... 31
2.6.4 更改密码..... 31
2.7 本章小结...... 32
练习...... 33
高级练习...... 33
第3章 命令行工具.... 35
3.1 特殊字符...... 36
3.2 基本工具...... 37
3.2.1 ls:显示文件名..... 37
3.2.2 cat:显示文本文件内容..... 37
3.2.3 rm:删除文件..... 38
3.2.4 less或more:分屏显示
文件..... 38
3.2.5 hostname:显示系统名..... 39
3.3 文件操作...... 39
3.3.1 cp:复制文件..... 39
3.3.2 mv:更改文件名..... 40
3.3.3 lpr:打印文件..... 41
3.3.4 grep:查找字符串..... 41
3.3.5 head:显示文件头部..... 42
3.3.6 tail:显示文件尾部..... 43
3.3.7 sort:按顺序显示文件
内容..... 43
3.3.8 uniq:忽略文件中的重
复行..... 44
3.3.9 diff:比较两个文件..... 45
3.3.10 file:测试文件内容..... 45
3.4 |(管道):实现进程间的通信...... 46
3.5 4个有用的工具...... 46
3.5.1 echo:显示文本..... 47
3.5.2 date:显示日期和时间..... 47
3.5.3 script:记录Linux会话
信息..... 47
3.5.4 unix2dos:将Linux文件
转换为Windows格式..... 48
3.6 压缩和归档文件...... 49
3.6.1 bzip2:压缩文件..... 49
3.6.2 bunzip2和bzcat:解压缩
文件..... 50
3.6.3 gzip:压缩文件..... 50
3.6.4 tar:打包和解包文件..... 51
3.7 定位命令...... 53
3.7.1 which和whereis:定位
工具..... 53
3.7.2 apropos:搜索关键字..... 55
3.7.3 slocate:搜索文件..... 55
3.8 获取用户和系统信息...... 56
3.8.1 who:列出系统上的用户..... 56
3.8.2 finger:列出系统上的
用户..... 57
3.8.3 w:列出系统上的用户..... 58
3.9 与其他用户通信...... 59
3.9.1 write:发送消息..... 59
3.9.2 mesg:拒绝或接受消息..... 60
3.10 电子邮件...... 60
3.11 本章小结...... 61
练习...... 63
高级练习...... 63
第4章 Linux文件系统.... 65
4.1 分层文件系统...... 66
4.2 目录文件和普通文件...... 67
4.2.1 文件名..... 67
4.2.2 mkdir:创建目录..... 69
4.2.3 工作目录..... 70
4.2.4 主目录..... 71
4.2.5 绝对路径名..... 72
4.2.6 相对路径名..... 73
4.2.7 重要的标准目录和文件..... 74
4.3 目录操作...... 76
4.3.1 rmdir:删除目录..... 77
4.3.2 路径名..... 77
4.3.3 mv/cp:移动/复制文件..... 78
4.3.4 mv:移动目录..... 79
4.4 访问权限...... 79
4.4.1 ls -l:显示访问权限..... 79
4.4.2 chmod:改变访问权限..... 80
4.4.3 setuid和setgid权限..... 81
4.4.4 目录访问权限..... 82
4.5 链接...... 83
4.5.1 硬链接..... 84
4.5.2 符号链接..... 86
4.5.3 rm:删除链接..... 88
4.6 本章小结...... 89
练习...... 90
高级练习...... 91
第5章 shell . 93
5.1 命令行...... 93
5.1.1 语法..... 94
5.1.2 处理命令行..... 96
5.1.3 执行命令行..... 98
5.2 标准输入输出...... 98
5.2.1 作为文件的屏幕..... 99
5.2.2 作为标准输入的键盘和
作为标准输出的屏幕..... 100
5.2.3 重定向..... 101
5.2.4 管道..... 106
5.3 在后台运行程序...... 109
5.4 文件名生成/路径名扩展...... 110
5.4.1 特殊字符?.. 111
5.4.2 特殊字符*.. 112
5.4.3 特殊字符[ ]. 113
5.5 内置命令...... 115
5.6 本章小结...... 115
练习...... 116
高级练习...... 117
第Ⅱ部分 编辑器
第6章 vim编辑器.... 121
6.1 历史...... 121
6.2 入门:用vim创建和编辑
文件...... 122
6.2.1 启动vim.... 123
6.2.2 命令模式和输入模式..... 124
6.2.3 输入文本..... 125
6.2.4 获取帮助..... 126
6.2.5 结束编辑会话..... 128
6.3 compatible参数...... 129
6.4 vim的特性介绍...... 129
6.4.1 联机帮助..... 129
6.4.2 操作模式..... 130
6.4.3 显示..... 131
6.4.4 输入模式下校正文本..... 131
6.4.5 工作缓冲区..... 131
6.4.6 行长度与文件大小..... 132
6.4.7 窗口..... 132
6.4.8 锁定文件..... 132
6.4.9 非正常结束编辑会话..... 133
6.4.10 崩溃后的文本恢复..... 133
6.5 命令模式下移动光标...... 134
6.5.1 按字符移动光标..... 135
6.5.2 将光标移到某个特定
字符..... 135
6.5.3 按字移动光标..... 136
6.5.4 按行移动光标..... 136
6.5.5 按句子和段落移动光标..... 137
6.5.6 在屏幕内移动光标..... 137
6.5.7 浏览工作缓冲区的不同
部分..... 137
6.6 输入模式...... 138
6.6.1 插入文本..... 138
6.6.2 追加文本..... 138
6.6.3 为输入文本打开行..... 138
6.6.4 文本替换..... 138
6.6.5 输入模式下转义特殊
字符..... 139
6.7 命令模式下删除和修改
文本...... 139
6.7.1 撤销修改..... 139
6.7.2 删除字符..... 139
6.7.3 删除文本..... 140
6.7.4 修改文本..... 141
6.7.5 替换文本..... 142
6.7.6 修改大小写..... 142
6.8 查找和替换...... 143
6.8.1 查找字符..... 143
6.8.2 查找字符串..... 143
6.8.3 字符串的替换..... 145
6.9 其他命令...... 148
6.9.1 连接命令..... 148
6.9.2 状态命令..... 148
6.9.3 .(句点). 148
6.10 命令Yank、Put和Delete.. 148
6.10.1 通用缓冲区..... 149
6.10.2 命名缓冲区..... 150
6.10.3 编号缓冲区..... 150
6.11 文件的读写...... 151
6.11.1 读文件..... 151
6.11.2 写文件..... 151
6.11.3 识别当前文件..... 152
6.12 参数设置...... 152
6.12.1 在vim中设置参数..... 152
6.12.2 在初始化文件中设置
参数..... 152
6.12.3 .vimrc初始化文件..... 153
6.12.4 参数..... 153
6.13 高级编辑技巧...... 156
6.13.1 使用标记..... 156
6.13.2 编辑其他文件..... 157
6.13.3 宏与快捷键..... 158
6.13.4 在vim中执行shell
命令..... 158
6.14 度量单位...... 160
6.14.1 字符..... 160
6.14.2 字..... 160
6.14.3 空白分隔字..... 160
6.14.4 行..... 161
6.14.5 句子..... 161
6.14.6 段落..... 161
6.14.7 窗口..... 162
6.14.8 重复因子..... 162
6.15 本章小结...... 162
练习...... 167
高级练习...... 168
第7章 emacs编辑器.... 169
7.1 历史...... 169
7.1.1 演化..... 170
7.1.2 emacs与vim.... 170
7.2 入门:开始使用emacs.. 171
7.2.1 启动emacs.. 171
7.2.2 退出emacs.. 172
7.2.3 插入文本..... 173
7.2.4 删除字符..... 173
7.2.5 移动光标..... 174
7.2.6 在光标处编辑..... 176
7.2.7 保存和检索缓冲区内容..... 176
7.3 基本编辑命令...... 177
7.3.1 按键的表示与使用..... 177
7.3.2 键序列和命令..... 178
7.3.3 META+x:运行不带键
绑定的命令..... 179
7.3.4 数值参数..... 179
7.3.5 编辑点与光标..... 179
7.3.6 在缓冲区中滚动..... 180
7.3.7 删除文本..... 180
7.3.8 搜索..... 180
7.4 联机帮助...... 182
7.5 高级编辑...... 184
7.5.1 撤销修改..... 184
7.5.2 标记和区域..... 185
7.5.3 剪切与粘贴:移出剪切
文本..... 187
7.5.4 插入特殊字符..... 188
7.5.5 全局缓冲区命令..... 189
7.5.6 文件..... 191
7.5.7 缓冲区..... 192
7.5.8 窗口..... 194
7.5.9 前台shell命令..... 195
7.5.10 后台shell命令..... 196
7.6 区分语言的编辑...... 196
7.6.1 选择主模式..... 197
7.6.2 自然语言模式..... 197
7.6.3 C模式..... 200
7.6.4 定制缩进..... 202
7.6.5 注释..... 203
7.6.6 专用模式..... 203
7.7 定制emacs.. 205
7.7.1 .emacs初始化文件..... 206
7.7.2 重映射键..... 206
7.7.3 .emacs文件示例..... 208
7.8 更多信息...... 209
7.9 本章小结...... 210
练习...... 216
高级练习...... 218
第Ⅲ部分 shell
第8章 Bourne Again Shell 221
8.1 背景知识...... 222
8.2 shell基础...... 222
8.2.1 初始化文件..... 223
8.2.2 符号命令..... 225
8.2.3 重定向标准错误输出..... 226
8.2.4 编写一个简单的shell
脚本..... 228
8.2.5 命令分隔和命令分组..... 232
8.2.6 作业控制..... 235
8.2.7 操作目录栈..... 238
8.3 参数和变量...... 240
8.3.1 用户创建的变量..... 242
8.3.2 变量属性..... 244
8.3.3 关键字变量..... 246
8.3.4 特殊字符..... 254
8.4 进程...... 255
8.4.1 进程结构..... 255
8.4.2 进程标识..... 255
8.4.3 执行命令..... 257
8.5 命令历史机制...... 257
8.5.1 控制历史机制的变量..... 258
8.5.2 重新执行和编辑命令..... 259
8.5.3 Readline库..... 266
8.6 别名...... 273
8.6.1 别名中的单引号和双
引号..... 273
8.6.2 别名示例..... 274
8.7 函数...... 276
8.8 控制bash的特性和选项...... 279
8.8.1 命令行选项..... 279
8.8.2 shell特性..... 279
8.9 处理命令行...... 282
8.9.1 历史扩展..... 282
8.9.2 别名替换..... 283
8.9.3 解析和扫描命令行..... 283
8.9.4 命令行扩展..... 283
8.10 本章小结...... 291
练习...... 293
高级练习...... 294
第9章 TC Shell . 297
9.1 shell脚本...... 298
9.2 进入和退出TC Shell. 299
9.3 Bourne Again Shell与TC
Shell的共性...... 301
9.3.1 命令行扩展(替换). 301
9.3.2 作业控制..... 305
9.3.3 文件名替换..... 306
9.3.4 操作目录栈..... 306
9.3.5 命令替换..... 306
9.4 重定向标准错误输出...... 306
9.5 操作命令行...... 308
9.5.1 字补全..... 308
9.5.2 编辑命令行..... 310
9.5.3 校正拼写..... 311
9.6 变量...... 312
9.6.1 变量替换..... 313
9.6.2 字符串变量..... 313
9.6.3 字符串变量数组..... 314
9.6.4 数值变量..... 315
9.6.5 花括号..... 317
9.6.6 特殊的变量形式..... 318
9.6.7 shell变量..... 318
9.7 控制结构...... 323
9.7.1 if. 324
9.7.2 goto.. 326
9.7.3 中断处理..... 326
9.7.4 if...then...else.. 327
9.7.5 foreach.. 328
9.7.6 while.. 330
9.7.7 break和continue.. 331
9.7.8 switch.. 331
9.8 内置命令...... 332
9.9 本章小结...... 335
练习...... 336
高级练习...... 337
第Ⅳ部分 编程工具
第10章 C的编程.... 341
10.1 C语言编程...... 341
10.1.1 检查编译器..... 342
10.1.2 C编程示例..... 343
10.1.3 C程序的编译和连接..... 346
10.2 使用共享库...... 349
10.2.1 修复不完整的二进制
文件..... 350
10.2.2 创建共享库..... 351
10.3 make:保持一组程序
最新...... 351
10.3.1 隐含的依赖关系..... 353
10.3.2 宏..... 356
10.4 调试C程序...... 359
10.4.1 gcc:编译器警告选项..... 361
10.4.2 符号调试器..... 362
10.5 线程...... 368
10.6 系统调用...... 368
10.6.1 strace:跟踪系统调用..... 368
10.6.2 控制进程..... 369
10.6.3 访问文件系统..... 369
10.7 源代码管理...... 370
10.8 本章小结...... 379
练习...... 380
高级练习...... 381
第11章 BASH程序设计.... 383
11.1 控制结构...... 384
11.1.1 if…then.. 384
11.1.2 if...then...else.. 388
11.1.3 if...then...elif. 389
11.1.4 for...in.. 396
11.1.5 for. 397
11.1.6 while.. 399
11.1.7 until. 402
11.1.8 break与continue.. 404
11.1.9 case.. 405
11.1.10 select. 412
11.1.11 Here文档..... 414
11.2 文件描述符...... 416
11.3 参数和变量...... 419
11.3.1 数组变量..... 419
11.3.2 变量局部性..... 421
11.3.3 特殊参数..... 423
11.3.4 位置参数..... 425
11.3.5 扩展空变量和未设置
变量..... 430
11.4 内置命令...... 431
11.4.1 type:显示命令相关
信息..... 431
11.4.2 read:接受用户输入..... 432
11.4.3 exec:执行命令..... 435
11.4.4 trap:捕获信号..... 438
11.4.5 kill:终止进程..... 441
11.4.6 getopts:解析选项..... 441
11.4.7 部分内置命令..... 444
11.5 表达式...... 445
11.5.1 算术表达式..... 445
11.5.2 逻辑表达式(条件表
达式). 446
11.5.3 字符串模式匹配..... 447
11.5.4 操作符..... 448
11.6 shell程序...... 452
11.6.1 一个递归的shell脚本..... 453
11.6.2 quiz shell脚本..... 456
11.7 本章小结...... 463
练习...... 464
高级练习...... 465
第12章 gawk模式处理语言.... 469
12.1 语法...... 470
12.2 参数...... 470
12.3 选项...... 470
12.4 注意...... 471
12.5 语言基础...... 471
12.5.1 模式..... 471
12.5.2 动作..... 472
12.5.3 注释..... 472
12.5.4 变量..... 472
12.5.5 函数..... 473
12.5.6 算术操作符..... 474
12.5.7 关联数组..... 474
12.5.8 printf. 475
12.5.9 控制结构..... 475
12.6 示例...... 477
12.7 gawk高级编程...... 495
12.7.1 getline:控制输入..... 495
12.7.2 协进程:双向I/O.... 497
12.7.3 从网络获取输入..... 499
12.8 错误消息...... 500
12.9 本章小结...... 501
练习...... 501
高级练习...... 501
第13章 sed编辑器.... 503
13.1 语法...... 503
13.2 参数...... 504
13.3 选项...... 504
13.4 编辑器基础...... 504
13.4.1 地址..... 505
13.4.2 指令..... 505
13.4.3 控制结构..... 506
13.4.4 Pattern区和Hold区..... 507
13.5 示例...... 507
13.6 本章小结...... 517
练习...... 517
第Ⅴ部分 命令参考
第14章 命令参考.... 521
14.1 显示和操作文件的工具...... 522
14.2 网络工具...... 523
14.3 显示和修改状态的工具...... 523
14.4 编程工具...... 524
14.5 其他工具...... 524
14.6 标准倍数后缀...... 524
14.7 常见选项...... 525
14.8 sample工具...... 525
14.9 sample.. 526
14.10 aspell. 527
14.11 at. 531
14.12 bzip2... 534
14.13 cat. 537
14.14 cd... 539
14.15 chgrp... 540
14.16 chmod... 541
14.17 chown... 545
14.18 cmp... 546
14.19 comm..... 548
14.20 configure.. 550
14.21 cp... 551
14.22 cpio... 554
14.23 crontab... 558
14.24 cut. 561
14.25 date.. 563
14.26 dd... 565
14.27 df.. 567
14.28 diff.. 569
14.29 du... 574
14.30 echo... 576
14.31 expr.. 578
14.32 file.. 582
14.33 find... 584
14.34 finger.. 588
14.35 fmt. 590
14.36 fsck... 592
14.37 ftp... 596
14.38 gcc.. 602
14.39 grep... 606
14.40 gzip... 610
14.41 head... 612
14.42 kill. 614
14.43 killall. 616
14.44 less.. 617
14.45 ln... 621
14.46 lpr.. 623
14.47 ls.. 625
14.48 make.. 630
14.49 man... 635
14.50 mkdir.. 638
14.51 mkfs.. 639
14.52 Mtools.. 641
14.53 mv... 644
14.54 nice.. 646
14.55 nohup... 647
14.56 od... 648
14.57 paste.. 652
14.58 pr.. 654
14.59 ps.. 656
14.60 rcp... 659
14.61 rlogin... 661
14.62 rm..... 662
14.63 rmdir.. 664
14.64 rsh... 665
14.65 scp... 666
14.66 sleep... 668
14.67 sort. 669
14.68 split. 678
14.69 ssh... 679
14.70 strings.. 683
14.71 stty... 684
14.72 tail. 688
14.73 tar.. 690
14.74 tee.. 695
14.75 telnet. 696
14.76 test. 698
14.77 top... 701
14.78 touch... 703
14.79 tr.. 706
14.80 tty... 708
14.81 tune2fs.. 709
14.82 umask... 711
14.83 uniq... 712
14.84 w.... 714
14.85 wc.. 716
14.86 which... 717
14.87 who... 718
14.88 xargs.. 720
第Ⅵ部分 附录
附录A 正则表达式.... 725
附录B 获取帮助.... 733
附录C 保持系统最新获取帮助.... 741
附录D 术语表.... 753






