第1部分 UNIX基础 1
第1章 UNIX和shell入门 1
1.1 UNIX是一种操作系统 1
1.1.1 计算机硬件综述 1
1.1.2 计算机软件综述 2
1.1.3 UNIX的历史 3
1.1.4 UNIX如何构建Internet 5
1.2 UNIX的变体 5
1.2.1 UNIX系统的类型 5
1.2.2 非AT T的UNIX 6
1.2.3 UNIX与MS-DOS/Windows的不同 7
1.3 UNIX的标准和修订 8
1.3.1 AT T之后的UNIX 9
1.4 首先必须知道的重要的UNIX概念 10
1.4.1 UNIX内核 10
1.4.2 UNIX shell 10
1.4.3 shell提示符 11
1.4.4 shell变量 12
1.4.5 标准输出、标准错误、标准输入 12
1.4.6 管道和过滤器 13
1.4.7 用户和组 13
1.5 UNIX讯问 14
1.6 如何以UNIX和方式工作 14
1.6.1 没有消息就是好消息 14
1.6.2 命令就是组建块 15
1.6.3 使用最小按键 15
第2章 UNIX入门指南 16
2.1 漫游UNIX世界 16
2.2 开始访问UNIX 17
2.2.1 与UNIX连接 17
2.2.2 登录提示 17
2.2.3 shell提示符 18
2.3 简单的命令 18
9.4 为同一文件创建多个名称 19
2.3.1 命令选项 19
2.3.2 操作说明的在线帮助 20
2.4.1 没有消息就是好消息 21
2.4.2 文件名通配符 21
2.4 文件命令 21
2.4.3 绝对路径和完全路径 22
2.4.4 相对路径 22
2.4.5 文件的许可权限 22
2.5 文件系统 23
2.5.1 硬链接和软链接 24
2.6 重定向标准输入/输出 24
2.6.1 重定向的危险 25
2.6.2 管道传送 25
2.6.3 理解标准输入/输出 26
2.6.4 标准输入/输出:一种类比 27
2.7 页面调度程序:一次显示一屏 28
2.7.1 UNIX过滤器 28
2.9 命令就是组建块 29
2.8 引用规则 29
2.7.2 正则表达式 29
2.10 vi文本编辑器 30
2.10.1 vi命令行编辑 30
2.11 脚本 31
第3章 UNIX目录和路径 32
3.1 UNIX目录树结构 32
3.1.1 层次目录结构 33
3.1.3 如何找到一个名字的路径(完全路径) 34
3.1.2 根目录包含所有其他目录 34
3.2 在UNIX中使用目录 36
3.2.1 标准UNIX目录名字 36
3.2.2 新的UNIX系统中的目录 37
3.3 转到另一个目录 37
3.3.1 转到另一个目录并浏览它的内容 37
3.3.2 使用basename和dirname 38
3.3.3 显示当前目录名 39
3.3.4 改变用户的起始目录(home directory)* 39
3.3.6 改变到当前目录下的子目录(相对) 40
3.3.5 用绝对路径改变目录 40
3.3.7 一步一步改变目录 41
3.3.8 访问当前目录 41
3.3.9 向上返回一个目录回到父目录 42
3.3.10 转到父目录的子目录 42
3.3.11 返回到前面的目录 43
3.3.12 使用绝对路径和相对路径 43
3.3.13 允许使用相对路径参数和绝对路径参数的命令 44
3.3.14 只允许使用一个相对路径或绝对路径的命令 45
3.4 创建新的目录 45
3.5 删除已有的目录 45
3.6 删除完整目录的分支 46
3.7 增加访问目录的效率 47
3.7.1 为经常访问的目录设置CDPATH 47
3.7.2 存储/访问常用的目录名 48
第4章 UNIX命令规则 50
4.1 shell提示符概览 50
4.2 UNIX命令行选项、参数和注解 52
4.2.1 在命令行加入注解 53
4.2.2 输入命令选项 53
4.2.3 输入选项的参数 55
4.2.4 命令行参数不允许出现文件名的命令 56
4.3 从哪里得到帮助 56
4.3.1 利用操作说明获得帮助 56
4.3.2 系统子程序中的操作说明 58
4.3.3 在操作说明中快速找到信息 59
4.3.4 如果不知道命令,找到所需要的操作说明 59
4.3.5 使用改变序列的索引 60
4.4 命令没有找到的错误 61
4.4.1 设置命令的路径 61
4.4.2 将当前目录添加到PATH中 62
4.4.3 PATH中隐含的安全性 63
4.4.5 命令在哪里 63
4.4.4 PATH和Add-On包 63
4.5 当用户输入UNIX命令时经常发生的错误 64
4.5.1 不正确的大写和小写 64
4.5.2 不正确的空格 64
4.5.3 错误地使用箭头键、Insert键、翻页键和其他的特殊键 64
4.5.4 使用Backspace键和Delete键改正错误输入 65
4.5.5 错误地使用了三种类型的引号 66
4.6 UNIX告诉了我什么 67
4.6.1 用法错误 67
4.6.2 >符号(PS2提示符) 67
4.6.3 掉到没有提示符的下一行 68
4.6.4 不能stat文件名 68
4.7 会话挂起时怎么办 69
4.8 用一个文件来保存命令输入或输出(重定向) 71
4.7.1 事先检查Intr键和Erase键 71
4.8.1 保存命令或者管道输出到一个文件中 72
4.8.2 做一个空文件 72
4.8.3 Korn shell中的noclobber选项 73
4.8.4 一个输入文件不能同时也是一个输出文件 73
4.8.5 只改变输出而不改变文件的命令 74
4.8.6 把错误消息保存到一个文件中 74
4.8.7 将输出或错误消息添加到一个文件中 74
4.8.8 在一个文件中既保存输出又保存错误消息 75
4.8.9 复制输出到一个文件中和到屏幕上 75
4.8.10 从一个文件中读取程序的输入 76
4.8.11 从Here-Document读取输入 76
4.9 传递命令的输出作为另一个命令的输入 76
4.9.1 管道传送的效率 77
4.9.2 处理文件名参数或标准输入的命令 77
4.10 允许自己的输出被管道传送或被重定向的命令 78
4.11 重定向符号概览 79
4.11.1 何时使用|和> 80
4.12.1 反斜杠关闭了下面字符的特殊含义 81
4.12 引用规则 81
4.12.2 标识引用功能的字符在命令执行之前被删除 82
4.12.3 单引号删除了所有被它括在里面的字符的字符的特殊含义 82
4.12.4 引用规则字符是无害的 83
4.12.5 单引号中不会出现单引号 83
4.12.6 双引号中允许一些特殊字符 83
4.12.7 引用可以忽略单词的分界线 85
4.12.8 在一个命令中可以联合使用不同类型的引用功能 85
4.12.9 引用空格,把它们嵌入在一个参数中 85
4.12.10 在下一行引用新的一行 86
4.12.11 使用引用来访问含有特殊字符的文件名 86
4.12.12 引用正则表达式通配符 87
4.12.13 引用反斜杠允许echo转义顺序 87
4.12.14 cpio和find引用通配符 88
5.1 GUI和X Window系统介绍 90
第5章 UNIX图形及用户界面(GUI) 90
5.1.1 X Window 91
5.1.2 X终端 91
5.1.3 Window管理器 91
5.1.4 控制台GUI 91
5.2 Solaris桌面系统 92
5.3 Open Windows 92
5.4 公用桌面环境(CDE) 94
5.4.1 使用Motif Window 95
5.4.3 CDE支持什么样的应用程序 99
5.4.2 在窗口中传送文本 99
5.4.4 CDE中更多的帮助 100
5.4.5 在CDE中运行shell命令 100
5.4.6 在CDE中编辑文本文件 101
5.4.7 通过CDE文件管理器拷贝和移动文件/目录 103
5.4.8 使用CDE Mailer读取/发送电子邮件 104
第6章 各种UNIX实用程序 108
6.1 定制应用程序 108
6.2 显示日期和时间 108
6.3 日历命令 109
6.4 计算行和其他的信息 110
6.5 算术的整数计算 110
6.6 一个功能更强大的计算器 112
6.7 StarOffice应用程序集 113
6.7.1 下载StatOffice 113
6.7.2 举例说明:下载Solaris版本的StatOffice 114
6.7.3 查找程序 120
6.7.4 创建一个新的数据库 121
7.1 UNIX文件简介 122
第7章 列出及查找目录和文件 122
第2部分 UNIX文件处理 122
7.1.1 隐藏文件 123
7.1.2 怎样确定文件类型 124
7.1.3 确定一个文件的内容属性 125
7.2 列出文件 126
7.2.1 列出所有文件,包含隐藏文件 126
7.2.2 以列的形式列出文件 126
7.2.4 用长格式列出文件,显示文件的类型、所有者、组、大小、日期和时间 127
7.2.3 在列出的文件后附加功能类型指示符 127
7.2.5 按照文件的最后修改日期在排序列出文件 128
7.2.6 按照文件的最后使用排序列出文件 128
7.2.7 按照最后的i节点变化日期排序列出文件 129
7.2.8 递归列出文件 129
7.2.9 列出一个目录的信息 130
7.2.10 列出文件并显示文件名中的所有控制字符 130
7.3 使用find命令 131
7.3.1 查找所有包含给定文件名的目录 131
7.3.2 指定一个起始目录以加快find命令的查找速度 132
7.3.3 在find命令中使用相对路径 132
7.3.4 在find命令中使用多个起始目录 133
7.3.5 用find命令搜索整个系统 134
7.3.6 消除find命令的错误消息:不能访问某些目录 134
7.3.7 考查find命令选项的类型 135
7.3.8 当你只知道部分文件名时查找文件 135
7.3.9 按照指定级别查找文件 139
7.3.10 使用要求+n,n或者-n的find选项 140
7.3.11 查找没有本地所有者或所属组的文件 142
7.3.12 使用find控制选项(包括逻辑或和分组) 143
7.3.13 find命令的动作选项 146
7.3.14 对每个找到的文件执行多个命令 147
第8章 显示文件、打印文件和管道 149
8.1 显示文件和管道 149
8.1.1 显示一个小文件 150
8.1.2 一次一屏显示文件和管道 150
8.1.3 只显示文件或者管道的起始行 153
8.1.4 只显示文件或者管道的结尾行 154
8.1.5 为输出加上行号 155
8.1.6 显示包含控制字符的文件 156
8.1.7 用大横幅字母显示文本 158
8.1.8 显示DOS文件 158
8.1.9 清除操作说明 159
8.2 打印文件和管道 160
8.2.1 介绍UNIX假脱机(spooling)系统 160
8.2.2 确定你的系统打印机名称 161
8.2.3 打印一个文件或者管道 162
8.2.4 检查打印队列 163
8.2.5 取消一个打印作业 164
8.2.6 从一台坏掉的打印机上移走打印请求 165
8.2.7 规范打印输出的格式 165
第9章 拷贝、移动、重命名、删除和链接文件 168
9.1 选择目的文件 168
9.1.1 处理许可权限拒绝错误 169
9.2 拷贝、移动和重命名文件 169
9.2.1 在当前目录中拷贝某个文件 169
9.2.2 在当前目录下重命名某个文件 170
9.2.3 cp和mv错误 170
9.2.4 拷贝、移动和重命名文件到一个不同的目录 171
9.2.5 确定你的文件指向何方 173
9.2.7 处理确认请求 174
9.2.6 拷贝/移动一个文件列表到一个目录 174
9.2.8 移动或者重命名一个目录 175
9.2.9 拷贝整个目录子树 175
9.3 删除文件 177
9.3.1 删除一个文件列表 177
9.3.2 难以删除的文件名 178
9.3.3 删除整个目录树 179
9.4.1 使用硬链接创建多个名称 180
9.4.2 找出一个文件的所有硬链接 180
9.4.4 使用软(符号)链接 182
9.4.3 删除一个硬链接 182
第10章 比较、排序、修改、组合和分割文件 184
10.1 比较文件 184
10.1.1 显示两个文件的差异 184
10.1.2 允许用短划线(-)代表标准输入的命令 186
10.1.3 分两列显示差异 186
10.1.4 显示三个文件的不同 187
10.1.5 在排序文本文件中查找公共行和独有的行 188
10.1.6 按照内容比较任意文件类型 190
10.1.7 比较不同系统中的文件 190
10.1.8 查找不同名称的相同文件 192
10.2 排序文件或者管道 192
10.2.1 决定行如何被排序(ASCII) 193
10.2.2 在排序时忽略起始空格 194
10.2.3 按大小对数字进行排序 194
10.2.4 小写/大写合并在一起 195
10.2.5 逆序排序 196
10.2.6 在排序时忽略标点符号 196
10.2.7 组合sort选项 197
10.2.8 对基于行中的域进行排序 197
10.2.9 按照主排序键和次排序键排列 199
10.2.10 全局sort选项 200
10.2.11 域sort选项 200
10.3 修改文件或者管道 201
10.3.1 加密一个文件或者管道 201
10.3.2 压缩文件 203
10.3.3 将文件编码为可以传送的简单文本 205
10.4 组合文件 207
10.4.1 将多个文件排序拼接在一起 207
10.4.2 一个接着一个地链接文件 207
10.4.3 将文件并肩粘贴在一起 207
10.4.4 按照一个连接域来合并排序后的文件 208
10.5 将一个文件分割为多个较小的文件 210
10.5.1 将文件分割为等长的块 210
10.5.2 按照部分标题分割一个文件 211
第11章 生成和使用文件列表 212
11.1 使用文件名生成通配符 212
11.1.1 生成以某个模式开头、结尾或者包含该模式的名字 213
11.1.2 检查操作说明查看是否允许文件列表和通配符 214
11.1.3 减少长文件名的输入量 215
11.1.4 的Bourne shell重定向中不允许使用文件名通配符 216
11.1.5 在你的文件列表中忽略目录 217
11.1.6 由多个模式产生一个文件列表 217
11.1.7 在文件列表中包含隐藏文件 217
11.1.8 生成其他目录下的文件列表 218
11.1.9 在某些模式位置允许任意字符 218
11.1.10 指定固定长度的文件名 219
11.1.11 在文件名中的某些位置指定模式 219
11.1.12 指定模式位置中允许的字符 219
11.1.13 在模式位置中指定不允许的字符 221
11.1.15 通配符习语:“or more”或者“at least” 222
11.1.14 匹配隐藏和非隐藏文件 222
11.1.17 匹配固定长度或者可变长度的文件名 223
11.1.16 通配符习语:在当前目录中 223
11.1.18 关闭文件名生成 224
11.1.19 处理参数列表太长的错误 224
11.2 使用反引号生成文件列表 225
11.2.1 处理没有空格的反引号错误 226
11.3 允许一个文件和文件名通配符列表的命令 226
11.4 使用xargs来处理一个项列表 227
第3部分 系统管理 230
第12章 在家中安装UNIX 230
12.1 理解一般的UNIX安装问题 230
12.1.2 个人电脑分区 231
12.1.1 谁不应该安装UNIX 231
12.1.3 让Windows放弃磁盘空间 233
12.1.4 1024个柱面的限制 233
12.1.5 打开你的机器,写下标记 234
12.1.6 避免使用通过声卡连接的CD-ROM驱动器 234
12.1.7 UNIX和Linux 234
12.2 在家中安装SCO UnixWare 7 235
12.2.1 定购UnixWare 7 235
12.2.2 UnixWare 7.0.1组件 237
12.2.3 制作要求的软盘 237
12.2.4 开始安装 237
12.3 在家中安装Sun Solaris 7 246
12.2.7 启动UnixWare 7或者Windows 246
12.2.5 得到SCO UNIX的帮助 246
12.2.6 在切断电源之前关机 246
12.3.1 定购Solaris 7 247
12.3.2 Solaris 7组件 247
12.3.3 安装文档 247
12.3.4 硬件兼容性 248
12.3.5 开始安装Solaris 7 249
12.3.6 Solaris 7中的CDE 1.3 258
12.3.7 在切断Solaris 7 系统的电源之前关机 258
12.3.8 启动Solaris或者Windows 259
12.3.9 隐藏Solaris 260
13.1 UNIX用户帐号 261
第13章 用户、组和登录 261
13.1.1 id命令 262
13.1.2 起始目录(Home Directory) 262
13.1.3 finger命令 263
13.2 显示关于UNIX口令文件的信息 264
13.2.1 改变你的口令 265
13.3 组 265
13.4 登当会话 266
13.4.1 tty命令 266
13.4.2 $TERM变量 266
13.4.3 $et/View tty 设置 267
13.4.4 查看已登录用户的命令 268
13.4.5 uptime命令 269
13.4.6 w命令 269
13.4.7 给所有的用户发一条消息 270
13.4.8 给所有远程用户发送消息 270
13.5 用户帐号管理 270
13.5.1 删除和引退(Retire) 270
13.5.2 成为一个超级用户 271
13.5.3 在IBM公司的AIX UNIX下创建一个新用户 271
13.5.4 在Solaris 7下创建一个新用户 273
13.5.5 在SCO UNIX下创建一个新用户 274
14.1.1 非法登录后的延迟 276
14.1 登录安全 276
第14章 文件许可权限和系统安全 276
14.1.2 次级口令 277
14.1.3 口令期限 277
14.1.4 改变你的口令 277
14.1.5 谁可以看到你的口令 278
14.1.6 允许用户成为其他用户或者系统管理员 279
14.2 为系统规划组 279
14.3 理解文件模式(许可权限) 280
14.3.1 目录许可权限 281
14.3.2 setuid/setgid程序 282
14.3.4 setgid位设置新文件的组 283
14.3.5 目录的读权限和执行权限 283
14.3.3 目录sticky位 283
14.4 改变许可权限/所有者/组 284
14.4.1 使用数值模式设置许可权限 284
14.4.2 使用符号模式设置许可权限 286
14.4.3 改变一个文件的组 288
14.4.4 改变一个文件的所有者 288
14.5 设置新文件的缺省许可权限 288
14.6 查看危险的setuid和setgid许可权限 289
14.6.1 安装文件系统时的setuid/setgid文件 290
第15章 系统启动、关闭和管理作业 291
15.1 启动系统 291
15.1.4 将UNIX内核加载到内存中 292
15.1.5 安装根磁盘并检查它 292
15.1.2 在打开主计算机前打开辅助子系统的电源 292
15.1.3 运行加电诊断 292
15.1.1 拿走所有可启动的媒质 292
15.1.6 单用户模式 293
15.1.7 多用户模式 293
15.1.8 System V的运行级别 294
15.2 关闭系统 294
15.3 在系统启动或关闭时自动执行的作业 296
15.3.1 System V UNIX系统启动时自动执行的作业 296
15.3.2 System V UNIX系统关闭时自动执行的作业 298
15.3.3 BSD UNIX系统启动时自动执行的作业 298
15.4.1 在用户登录时自动执行作业和设置命令 299
15.4 任何用户都能自动执行的作业 299
15.4.2 调度作业以定期返回 300
15.4.3 在Crontabs中使用星号(*)能配符 304
15.4.4 每天早上执行工作日作业 304
15.4.5 在指定日期/时间调度一次性的作业 305
15.4.6 在负载轻时调度一次性的作业 306
15.4.7 由用户开启和关闭crontab/at/batch 306
15.5 分配作业优先级 307
15.5.1 查看作业和它们的优先级 307
15.5.2 以低优先级启动一个作业 307
15.5.3 改变某个已有作业的优先级 308
15.6.1 启动后台作业 309
15.6 管理后台作业 309
15.5.4 比较cron、at、batch、nice和renice 309
15.6.2 防止退出杀死后台作业 310
15.6.3 杀死一个后台作业 310
15.7 使用Korn shell进行额外的作业控制 312
15.7.1 列出后台作业 312
15.7.2 挂起和继续执行作业 312
15.7.3 在Korn shell下杀死一个后台作业 313
15.7.4 在后台作业输出前暂停它们 313
第16章 系统和文件备份 314
16.1 备份用户文件 314
16.1.1 UNIX设备文件 315
16.1.3 UNIX磁盘设备名称 320
16.1.2 磁盘驱动器 320
16.2 选择tar、cpio或其他备份程序 322
16.3 使用tar备份和恢复文件 323
16.3.1 备份一个目录子树 323
16.3.2 备份选择的目录或者文件 324
16.3.3 列出一个tar存档的内容表 324
16.3.4 恢复存档 325
16.3.5 设置并使用tar备份设备表 331
16.3.6 设置tar的块大小 332
16.3.7 tar的局限性 332
16.4 使用cpio备份和恢复文件 332
16.4.1 备份一个目录子树 332
16.4.2 备份选择的目录或者文件 334
16.4.3 列出一个cpio存档的内容表 335
16.4.4 恢复存档 336
16.4.5 设置cpio块大小 341
16.5 将文件保存到DOS格式化的磁盘上然后再恢复它们 341
16.6 备份和恢复操作系统 342
16.6.1 传统的UNIX完全恢复 342
16.6.2 AIX系统中的mksysb 342
16.6.3 UnixWare 7的紧急恢复 343
16.6.4 BackupEKGE和LoneTar 343
第17章 管理系统资源 344
17.1 管理磁盘空间 344
17.1.1 什么是文件系统 344
17.1.4 安装文件系统 346
17.1.2 文件系统表 346
17.1.3 根文件系统 346
17.1.5 卸载文件系统 347
17.1.6 磁盘空间信息 348
17.1.7 如何确定一个文件属于哪个文件系统 349
17.1.8 限制用户的磁盘空间 350
17.1.9 查看并清除lost+found目录 351
17.1.10 磁盘管理的其他一些命令 352
17.2 管理系统性能 353
17.2.1 系统活动报告 353
17.2.2 sar历史文件 356
17.2.3 vmstat命令 356
17.2.4 iostat命令 357
18.1 查找/显示包含某个模式的行 359
第4部分 UNIX文本处理 359
第18章 在一个文件或者管道输出中查找行 359
18.1.1 在选择行时忽略大小写 361
18.1.2 将选择的行保存在文件中 361
18.1.3 将选择的行通过管道输出给其他命令 361
18.1.4 选择你的模式 362
18.1.5 显示不包含模式的行 363
18.1.6 给找到的行添加行号 363
18.1.7 只显示包含某个模式的文件名 363
18.1.8 查找包含两个模式的行 364
18.2 通配符模式在行中的匹配(正则表达式) 365
18.2.2 选择以某个模式开始的行 366
18.2.1 选择包含某个模式的行 366
18.2.3 选择以某个模式结尾的行 367
18.2.4 指明整行的内容 367
18.2.5 在正则表达式中包含shell变量 368
18.2.6 在正则表达式中包含命令替换 368
18.2.7 用引号括住正则表达式以免出现问题 369
18.2.8 允许使用正则表达式的UNIX命令 370
18.2.9 比较文件名通配符和正则表达式通配符 370
18.2.10 在某个模式位置允许任意字符 370
18.2.11 在模式位置指定允许的字符 371
18.2.12 的模式位置指定不允许的字符 372
18.2.13 指定一个正则表达式元素的出现次数 372
18.2.14 指定一个正则表达式元素的零次或者多次出现 373
18.2.15 去掉正则表达式中无限制的“或者更多”(or more) 374
18.3 egrep中可用的额外正则表达式通配符 375
18.3.1 在egrep中指定一个元素的一次或者多次出现 376
18.3.2 在egrep中使用一个正则表达式通配符零次或者多次 376
18.3.3 查找若干模式中的一个 376
18.4 只在Perl中可用的额外正则表达式通配符 377
18.4.1 查找不是更大单词一部分的单词 378
18.5 关闭正则表达式通配符 378
18.6 只检查指定域来选择一行 379
18.6.1 显示恰好匹配一个域的行 379
18.6.4 根据多个条件来显示一行 380
18.6.2 根据某个域的值显示一行 380
18.6.3 显示一个正则表达式匹配某个域的行 380
第19章 从一个文件或者管道输出中替换或者删除文本 382
19.1 按照列位置抽取/删除字符 382
19.2 替换或者删除字符串(使用正则表达式) 384
19.2.1 用一个字符串替换另一个字符串 384
19.2.2 每行只进行一次替换 385
19.2.3 改变限制符 386
19.2.4 从一行中删除字符串 387
19.2.5 使用选择替换或者删除 387
19.2.6 在sed查找串中使用正则表达式通配符 388
19.2.8 在查找或者替换串中使用shell变量 393
19.2.7 使用特殊字符 393
19.2.9 避免替换零次或者多次出现 394
19.2.10 在替换串中使用一个匹配到的通配符 395
19.2.11 删除查找模式之外的所有内容 396
19.2.12 记住以下规则:正则表达式通配符匹配最长可能间距 397
19.3 使用Perl来替换或者删除字符串 398
19.3.1 匹配最短的可能间距 398
19.3.2 为了提高可读性而扩展模式 399
19.3.3 替换不在更大单词中的单词 399
19.3.4 替换一个字符串或者另一个字符串 399
19.4.1 基于域的替换或删除 400
19.4 使用awk来替换或者删除字符串 400
19.3.5 在匹配正则表达式模式时忽略大小写 400
19.3.6 选择性替换或者删除 400
19.4.2 只显示选择的域 401
19.4.3 有条件地替换一个特殊的域值 403
19.4.4 将域格式化为直列 403
19.5 决定何时使用awk或者cut来抽取域 405
19.6 从一个文件或者管道输出中替换/删除字符 406
19.6.1 确定你的UNIX系统中使用的是哪种tr命令 406
19.6.2 将大写字母改变为小写字母,或者将小写字母改变为大写字母 407
19.6.3 将每个字符的第8位置1/置0 408
19.6.4 删除选择的字符 408
19.6.5 将大多数控制字符转换为一个错误字符 408
19.7.2 删除包含某个正则表达式模式的行 409
19.7.3 删除重复的行 409
19.7 替换/删除整行 409
19.7.1 替换整行 409
第20章 使用vi编辑一个文本文件 412
20.1 介绍vi文本编辑器 412
20.2 启动vi 413
20.2.1 为了练习vi创建一个文件 413
20.3 只用10条vi命令编辑任何内容 414
20.3.1 使用h、j 、k和l命令到处移动 414
20.3.2 让vi在出错进发出蜂鸣 415
20.3.3 使用一个重复计数 415
20.3.4 使用i命令插入 415
20.3.5 使用x和dd进行删除 416
20.3.7 使用:wq保存并退出 417
20.3.8 使用:q!放弃更改 417
20.3.6 使用J命令来合并行 417
20.4 在vi中添加帮助功能 418
20.5 学习8个vi命令 419
20.5.1 按Ctrl+l和Ctrl+R刷新屏幕 419
20.5.2 使用u命令来取消更改 419
20.5.3 使用A命令在行末添加文本 420
20.5.4 使用:w定期保存你的工作 420
20.5.5 使用:w命令将文件存入另一个文件 420
20.5.6 处理写权限错误 420
20.5.9 使用lG/G移动到一个文件的开头/结尾 421
20.5.10 使用:f查看文件名、文件大小和你所在的位置 421
20.5.8 使用cW来改变单词 421
20.5.7 使用r命令替换一个字符 421
20.6 帮助你使用vi的小技巧 422
20.6.1 使用U命令恢复整个行 422
20.6.2 使用spell命令来查找拼写错误的单词 422
20.6.3 格式化段落 423
20.6.4 恢复一个丢失了的编辑操作 424
20.6.5 用只读模式启动vi 425
20.7 在vi中移动 425
20.7.1 使用分隔单词、包含单词和非单词 425
20.7.2 通过查找字符串来进行移动 426
20.8 删除文本时使用的vi命令表 427
20.7.5 设置一个标志以便能够回到那里 427
20.7.3 在行中移动到一个指定的字符 427
20.7.4 查找一个匹配的括号符 427
20.9 恢复被删除的文本 428
20.10 改变文本的vi命令表 428
20.11 替换文本 429
第21章 让vi编辑器为你工作 430
21.1 简化重复编辑 430
21.1.1 使用.来重复编辑 430
21.1.2 使用n和.来查找和选择性地重复一个编辑操作 432
21.1.3 映射一个键到一个经常使用的命令序列 433
21.1.4 防止J把你的文本搞乱 435
21.2.1 在文件中替换正则表达式模式 436
21.2 全局和局部文本替换 436
21.2.2 在文件中的某部分替换正则表达模式 437
21.2.3 有条件地替换vi中的文本 437
21.2.4 改变行的缩进 439
21.3 在vi中移动/拷贝部分文本 439
21.3.1 在同一个文件中移动/拷贝文本 439
21.3.2 在不同文件之间移动/拷贝文本 440
21.4 设置插入文本的选项 441
21.4.1 使用/或者?在查找过程中忽略大小写 441
21.4.2 设置vi为总显示输入模式 441
21.4.5 打开自动写选项 442
21.4.4 打开行首自动缩进 442
21.4.3 打开行尾自动回卷 442
21.4.6 使用长字符串的缩写 443
21.4.7 打开行号 443
21.4.8 在.exrc中保存你的选项 443
21.5 使其他UNIX命令在vi中工作 444
21.5.1 在vi中检查其他的UNIX命令 444
21.5.2 在你的文件中插入其他UNIX命令的输出 444
21.5.3 对整个文件或者部分文件进行排序 444
21.5.4 删除和某个模式匹配的行 445
21.5.6 在你的文档中插入一个标题行 446
21.5.7 打印文件的一部分 446
21.5.5 加密/解密文件的所有或部分内容 446
21.5.8 在文件中的某部分对行/单词/字符进行计数 447
21.5.9 编辑多个文件 447
第22章 Korn shell中的命令行编辑 449
22.1 在Korn shell或者Bash shell中的命令行编辑 449
22.1.1 Linux中的命令行编辑 450
22.1.2 打开命令行编辑 450
22.2 vi命令行编辑 450
22.2.1 如何重新执行前面的命令 451
22.2.2 如何编辑一个前面的命令 451
22.2.3 如何纠正当前行 452
22.2.4 命令的历史 452
22.3 使用命令行编辑功能编辑复杂的管道 454
22.2.5 在命令区中移动 454
22.4 别名 457
第23章 Emacs编辑器 458
23.1 技术术语 459
23.2 启动Emacs 459
23.2.1 打开/保存文件以及退出Emacs 460
23.2.2 使用取消功能 461
23.2.3 剪切和粘贴 461
23.2.4 自动备份 463
23.3 绑定键 463
23.4 定义宏 465
23.4.1 重复宏 466
23.5.1 增量查找 467
23.5 查找和替换文本 467
23.5.2 普通查找 468
23.5.3 普通查找和替换 468
23.5.4 规则查找和替换 468
23.5.5 编辑一个匹配项的列表 469
23.5.6 查找中的大小写 470
23.6 拼写检查文档 471
23.7 大模式和小模式 472
23.7.1 载入小模式 472
23.7.2 载入大模式 473
23.8 获得帮助 474
23.8.1 信息页面 474
23.9 继续学习Emacs 475
23.9.1 额外的Emacs软件包 476
23.9.2 有用的Emacs函数 476
23.9.3 网络上的Emacs信息 476
第5部分 网络连接 477
第24章 通过调制解调器访问其他UNIX系统 477
24.1 通过调制解调器访问其他 UNIX系统 477
24.1.1 在UNIX/Linux下不要使用Windows调制解调器 478
24.2 调制解调器通信概述 478
24.3 UNIX串行设备 479
24.3.1 检查串行设备文件 479
24.3.2 检查串行通信配置 480
24.3.3 检查串行通信拨入配置 480
24.3.4 为拨出检查串行设备配置 482
24.3.5 使用cu程序登录 483
24.3.6 配置cu 484
24.3.7 使用cu程序 486
24.3.8 通过uucp传输文件 488
24.3.9 运行远程命令 489
24.3.10 检查uucp任务的状态 489
24.3.11 取消uucp请求 490
24.4 通过调制解调器(PPP)扩展网络 490
24.4.1 配置一个简单的PPP连接 490
24.4.2 停止PPP连接 492
24.5 小结 492
25.1 一些重要的网络连接概念 494
第25 章 在网络上或者Internet上访问其他UNIX系统 494
25.1.1 检查自己的网络连接 495
25.1.2 检查IP地址 496
25.1.3 命名一个UNIX主机 499
25.1.4 使用ping检测连接 500
25.1.5 检查是否正在运行域名服务 501
25.1.6 检查是否连接到Internet 503
25.2 通过网络登录到UNIX 503
25.2.1 使用Telnet登录 503
25.2.2 使用rlogin代替Telnet 504
25.2.3 配置hosts.equiv和.rhosts 504
25.3 通过网络传输文件 506
25.3.1 使用FTP传输多个文件 507
25.3.2 使用rcp传输文件 509
25.4 在网络中的另一个系统上执行命令 509
25.5 在两个UNIX系统(NFS)之间共享目录 510
25.6 使用mailx命令 511
25.6.1 举例 513
25.7 小结 515
第26章 从Windows访问UNIX 516
26.1 Windowst和TCP/IP 516
26.1.1 用ping检测连接 518
26.1.2 查看本地TCP/IP设置 519
26.1.3 从UNIX使用FTP传输文件 520
26.1.4 使用telnet登录到UNIX 522
26.2.1 通过Internet访问UNIX主机 523
26.2 拨号网络连接 523
26.2.2 通过终端连接访问UNIX主机 526
26.2.3 在远程主机与自己的机器之间传输文件 528
26.2.4 使用Windows上的Netscape读取和发送UNIX电子邮件 528
26.3 SMB共享目录和打印机 530
第27章 UNIX和Internet 531
27.1 通过UNIX在Internet上冲浪 531
27.2 从Internet上下载软件 533
27.2.1 下载Lynx 534
27.2.2 在Lynx上运行make 538
27.4 找到UNIX销售商Web站点 539
27.3 使用基于字符的浏览器(Lynx) 539
27.5 访问UNIX技术支持 540
27.6 访问免费(非支持)软件 542
27.6.1 检查补丁/更新 542
27.6.2 检查安全公告 543
27.6.3 检查2000年问题 543
27.7 在UNIX上阅读网络新闻 543
第6部分 脚本编程 547
第28章 编写Bourne shell脚本 547
28.1 编写/执行一个简单的脚本 548
28.2 不用路径就能运行脚本 549
28.3 创建和使用自己的变量 550
28.3.1 用反引号设置变量 551
28.4 与用户交互 552
28.4.1 显示标头和提示 553
28.4.2 在shell变量中使用用户的输入 554
28.5 在命令行提供脚本输入 556
28.6 执行基于测试结果的代码 557
28.6.1 检查文件类型、大小或许可权限 559
28.6.2 检查变量的值 562
28.6.3 在test条件中什么时候需要引号 564
28.6.4 为安全起见$变量要使用双引号括起来 566
28.6.5 检查命令结果 566
28.7 执行算术计算 568
28.8.2 检查最后一个命令的状态 569
28.8 特殊的shell变量 569
28.8.1 检查命令行参数所给的数值 569
28.8.3 使用非冲突的临时文件 570
28.8.4 把所有的参数传递给另一个命令 571
28.9 终止写脚本并设置完成状态 571
28.10 提供适当的UNIX用法错误消息 572
28.10.1 使用exit避免太多的嵌套 573
28.11 调试脚本 575
28.12 循环 577
28.12.1 处理一个目录下的所有文件 578
28.12.2 处理目录树中的所有文件 579
28.13 从项目菜单中选择 580
第29章 编写Perl程序 584
29.1 编写/执行一个简单的Perl脚本 585
29.1.1 一种快捷的终止备注 586
29.2 Perl数据类型 586
29.2.1 文字 587
29.2.2 变量 587
29.2.3 数组和散列 587
29.2.4 全局、局部和自定义变量 588
29.2.5 代码引用 589
29.2.6 文件句柄 589
29.2.7 here文档 589
29.3 特殊的Perl变量 590
29.4.2 在命令行提供脚本输入 592
29.4.1 把脚本输入作为一个参数来提供 592
29.4 与用户进行交互 592
29.5 控制结构 593
29.5.1 什么是真(true) 593
29.5.2 根据测试结果执行代码 594
29.5.3 做决定 595
29.5.4 在一系列代码中循环 596
29.5.5 在整体中循环执行某个操作 596
29.6 Perl中的常用函数 597
29.7 数组处理 598
29.7.1 Push和Pop函数 598
29.7.2 shift和unshift函数 599
29.8.1 close命令 600
29.7.3 splicd函数 600
29.8 文件处理 600
29.8.2 open命令 601
29.9 散列处理 601
29.9.1 each函数 602
29.9.2 keys函数 602
29.9.3 values函数 602
29.10 系统处理 603
29.10.1 time函数 603
29.10.2 localtime函数 603
29.10.3 system命令 604
29.11 变量处理 605
29.11.3 join函数 606
29.11.1 替换 606
29.11.2 split函数 606
29.11.4 chomp函数 607
29.12 调试脚本 607
29.12.1 列表代码 608
29.12.2 执行代码行 609
29.12.3 打印变量的值 609
29.12.4 断点 609
29.13 小结 612
第7部分 附录 613
附录A UNIX命令参考 613
附录B 词汇表 648