1.1 简史 1
1.2 Unix的版本 1
第1章 Unix基础 1
1.3 操作系统组件 3
1.3.1 Unix内核 3
1.3.2 shell 4
1.3.3 其他组件 5
1.4 小结 5
第2章 起步 6
2.1 系统启动 6
2.2.1 GUI登录 9
2.2 登录和退出Unix 9
2.2.2 命令行登录 11
2.2.3 远程登录 13
2.2.4 shell 16
2.2.5 退出 16
2.3 关闭系统 16
2.4 使用联机帮助页 17
2.5 小结 19
3.1.2 系统账户 20
3.1.1 根账户 20
3.1 账户基础知识 20
第3章 用户和组 20
3.1.3 用户账户 21
3.1.4 组账户 21
3.2 管理用户和组 21
3.2.1 /etc/passwd 21
3.2.2 /etc/shadow 24
3.2.3 /etc/group 26
3.2.4 Mac OS X的不同之处 28
3.3.1 账户管理 29
3.3 管理账户和组 29
3.3.2 组管理 32
3.3.3 使用图形用户界面工具进行用户管理 32
3.4 变成另一个用户 34
3.5 与用户和组相关的命令 35
3.6 小结 37
3.7 练习 37
第4章 文件系统 38
4.1 文件系统基础 38
4.1.1 目录结构 39
4.1.2 根的基本目录 40
4.3 文件系统导航 41
4.2 路径和大小写 41
4.3.1 pwd 42
4.3.2 cd 42
4.3.3 which和whereis 43
4.3.4 find 44
4.3.5 file 44
4.3.6 ls 44
4.4 文件类型 46
4.5 链接 46
4.6 文件和目录权限 51
4.7.1 以符号模式使用chmod 52
4.7 修改权限 52
4.7.2 以绝对模式使用chmod 53
4.8 查看文件 54
4.9 创建、修改和删除文件 55
4.9.1 删除文件 55
4.9.2 创建和删除目录 56
4.10 基本的文件系统管理 57
4.11 使文件系统可访问 58
4.12 小结 61
4.13 练习 61
5.1.1 PS1变量 62
第5章 定制工作环境 62
5.1 环境变量 62
5.1.2 其他环境变量 63
5.2 路径 64
5.2.1 PATH环境变量 65
5.2.2 相对路径和绝对路径 66
5.2.3 切换文件系统 66
5.3 选择shell 67
5.3.1 临时修改shell 67
5.3.2 修改默认的shell 68
5.3.3 各种shell 68
5.4 配置shell 72
5.4.1 运行控制文件 73
5.4.2 环境变量 78
5.4.3 别名 80
5.4.4 选项 80
5.5 动态共享库路径 81
5.5.1 LD_LIBRARY_PATH 82
5.5.2 LD_DEBUG 82
5.6 小结 83
5.7 练习 83
6.1 命令的剖析 84
第6章 深入Unix命令 84
6.2.1 man 87
6.2 查找命令的相关信息 87
6.2.2 info 88
6.2.3 apropos 88
6.3 命令的修改 89
6.3.1 元字符 89
6.3.2 输入和输出重定向 90
6.3.3 管道 91
6.3.4 命令置换 92
6.4.1 ls 93
6.4 操作文件和目录 93
6.4.2 cd 94
6.5 常用的文件操作命令 94
6.5.1 cat 94
6.5.2 more/less 94
6.5.3 mv 95
6.5.4 cp 95
6.5.5 rm 95
6.6.1 文件所有权 96
6.6 文件所有权和权限 96
6.5.7 wc 96
6.5.6 touch 96
6.6.2 文件权限 97
6.6.3 umask 98
6.6.4 执行文件 99
6.7 保持文件系统配额 99
6.8 小结 101
6.9 练习 101
第7章 用vi编辑文件 102
7.1 使用vi 102
7.2 在文件中移动 104
7.3 搜索文件 108
7.4 退出并保存文件 109
7.5 编辑文件 110
7.5.1 删除字符 111
7.5.2 修改命令 113
7.5.3 高级命令 114
7.6 帮助 116
7.6.1 运行命令 117
7.6.2 替换文本 117
7.7 vi的版本 120
7.9 练习 121
7.8 小结 121
第8章 高级工具 122
8.1 正则表达式和元字符 122
8.1.1 理解元字符 123
8.1.2 正则表达式 127
8.2 使用SFTP和FTP 128
8.3 更高级的命令 132
8.3.1 grep 132
8.3.2 find 133
8.3.3 sort 134
8.3.6 wc 136
8.3.4 tee 136
8.3.5 script 136
8.4 小结 137
8.5 习题 137
第9章 高级Unix命令:Sed和AWK 138
9.1 sed 138
9.1.1 使用-e选项 140
9.1.2 sed文件 140
9.1.3 sed命令 142
9.2 AWK 143
9.2.1 用AWK提取数据 144
9.2.2 使用模式 145
9.3 利用AWK编程 146
9.4 小结 148
9.5 练习 148
第10章 作业控制和进程管理 149
10.1 进程 149
10.2 shell脚本 150
10.3 正在运行的进程 151
10.3.1 ps语法 152
10.3.2 进程状态 152
10.4 系统进程 153
10.5 进程属性 156
10.6 停止进程 156
10.6.1 进程树 158
10.6.2 僵死进程 159
10.7 top命令 159
10.8 /proc文件系统 161
10.9 SETUID和SETGID 162
10.10 shell作业控制 163
10.11 小结 165
11.1 系统时钟 166
第11章 在指定时间运行程序 166
11.1.2 在Linux上利用hwclock同步时钟 167
11.1.1 使用date检查和设置系统时钟 167
11.1.3 利用NTP同步系统时钟 168
11.2 安排将来运行的命令 168
11.2.1 利用cron执行程序 169
11.2.2 使用at命令进行一次性执行 174
11.3 小结 177
11.4 练习 177
12.1 安全性的基础知识 178
12.1.1 资产价值保护 178
第12章 安全性 178
12.1.2 潜在的问题 179
12.2 保护Unix系统 180
12.2.1 口令的安全性 180
12.2.2 口令破译程序 181
12.3 限制管理访问 181
12.3.1 UID 0 181
12.3.2 根用户管理选项 182
12.3.3 设置sudo 183
12.4 系统管理的预防性任务 185
12.4.1 删除不需要的账户 185
12.4.3 禁用不需要的服务 186
12.4.2 修补、限制或删除程序 186
12.4.4 监控并限制对服务的访问 187
12.4.5 实现内置防火墙 188
12.4.6 其他的安全程序 188
12.5 小结 188
12.6 练习 189
第13章 基本shell脚本编程 190
13.1 注释脚本 190
13.2 开始脚本编程 192
13.2.1 调用shell 192
13.2.2 变量 193
13.2.3 从键盘读取输入 194
13.2.4 特殊变量 194
13.2.5 退出状态 195
13.3 流程控制 195
13.3.1 条件流程控制 195
13.3.2 迭代流程控制 201
13.4 选择脚本编程shell 202
13.5 小结 202
13.6 练习 203
14.1 高级脚本编程的概念 204
第14章 高级shell脚本编程 204
14.1.1 输入和输出重定向 205
14.1.2 命令替换:反引号和圆括号扩展 206
14.1.3 使用环境变量和shell变量 207
14.2 shell函数 208
14.2.1 返回值 209
14.2.2 嵌套函数和递归 209
14.2.3 作用域 210
14.2.4 函数库 212
14.2.6 文件处理 214
14.2.5 信号和陷阱 214
14.2.7 数组 217
14.3 shell的安全性 219
14.3.1 攻击可能来自何处 220
14.3.2 采取预防措施 220
14.3.3 受限shell 220
14.4 系统管理 222
14.4.1 收集信息 222
14.4.2 执行任务 223
14.4.3 调试脚本 224
14.6 练习 225
14.5 小结 225
第15章 系统日志 226
15.1 日志文件 226
15.2 syslogd 226
15.2.1 syslog.conf 227
15.2.2 消息 230
15.2.3 日志记录器 231
15.3 轮循日志 231
15.4 监视系统日志 232
15.4.1 logwatch 232
15.4.2 swatch 234
15.5 小结 236
15.6 练习 236
第16章 Unix网络互联 237
16.1 TCP/IP 237
16.1.1 TCP 237
16.1.2 IP 238
16.1.3 与TCP/IP一起使用的其他协议 238
16.1.4 网络地址、子网、子网掩码和TCP/IP路由选择 240
16.2 为Unix系统设置TCP/IP网络 243
16.2.1 TCP/IP网络请求配置 243
16.2.2 动态设置 245
16.2.3 发送TCP/IP网络请求 246
16.2.4 回应TCP/IP网络请求 248
16.2.5 inetd 249
16.3 网络管理工具 251
16.3.1 通过Traceroute跟踪网络的性能 251
16.3.2 防火墙 252
16.3.3 例行检查网络延迟 253
16.4 小结 255
16.5 练习 255
第17章 Perl编程实现Unix自动化 256
17.1 Perl的优点 257
17.2 一些有用的Perl命令 258
17.2.1 变量 258
17.2.2 运算符 259
17.2.3 基本函数 259
17.3 更多Perl代码的示例 265
17.4 检修Perl脚本 269
17.5 小结 272
17.6 练习 272
18.1.1 决定备份什么数据 273
18.1 备份基础知识 273
第18章 备份工具 273
18.1.2 备份介质类型 274
18.1.3 备份类型 275
18.1.4 备份时间 275
18.1.5 验证备份 276
18.1.6 保存备份 276
18.2 备份命令 276
18.2.1 tar 277
18.2.2 使用gzip和bzip2压缩 279
18.2.3 cpio 283
18.2.4 dump、backup和restore 284
18.2.5 其他备份命令 289
18.3 备份套件 289
18.4 小结 289
18.5 练习 289
第19章 从源代码安装软件 290
19.1 源代码 290
19.2 开放源代码许可证 291
19.2.1 BSD许可证 291
19.3 寻找和下载Unix软件 292
19.3.1 选择软件 292
19.2.2 GNU公共许可证 292
19.3.2 下载文件 293
19.3.3 验证源代码 294
19.4 编译和安装 296
19.4.1 提取文件 297
19.4.2 开始编译 297
19.5 make、Makefile和make目标 304
19.5.1 Makefile 304
19.5.2 帮助创建Makefile的工具 306
19.5.3 GNU编译工具 307
19.5.4 diff和patch 308
19.6 利于维护的安装技术 309
19.7 排查编译问题 311
19.8 预编译软件包 311
19.9 小结 313
19.10 练习 313
第20章 转换:适用于Mac OS用户的Unix 315
20.1 Mac OS X简史 315
20.2 Mac OS 9与Mac OS X之间的差别 316
20.3 文件夹也是目录 317
20.3.1 必需的文件夹 317
20.3.2 主目录 319
20.3.4 预置文件 321
20.3.3 管理 321
20.4 Unix和Mac OS X/Mac OS 9命令与GUI的对等命令 322
20.5 Mac OS X和其他Unix系统之间的差别 324
20.5.1 目录服务和NetInfo 324
20.5.2 nidump和niload 325
20.5.3 NetInfo数据库的备份和恢复 327
20.5.4 系统启动 327
20.5.5 文件结构上的差别 327
20.5.6 根用户账户 328
20.7 练习 329
20.6 小结 329
第21章 转换:适用于Windows用户的Unix 330
21.1 结构上的比较 330
21.2 主要管理工具之间的比较 334
21.3 流行应用程序的比较 335
21.4 在Windows中使用Unix 337
21.5 在Unix中使用Windows 344
21.6 小结 344
附录A 练习题答案 345
附录B 一些有用的Unix网站 354