第1章 UNIX与Shell概述 1
UNIX是一种操作系统 1
计算机硬件概述 1
计算机软件概述 1
第一部分 UNIX是什么 1
UNIX的历史 3
UNIX如何建立Internet 4
UNIX系统的部分类型 5
非AT T的UNIX 5
UNIX的不同版本 5
UNIX与MS-DOS/Windows的区别 6
UNIX标准版和修定版 7
AT T之后的UNIX 8
需要预先了解的重要UNIX概念 9
UNIX内核 9
UNIX shell 9
shell提示符 10
shell变量 11
标准输出、标准错误、标准输入 11
获得访问UNIX 12
用户与组 12
管道及过滤器 12
了解UNIX 13
没有消息就是好消息 13
命令是结构块 13
最少按键 13
第2章 UNIX目录与路径名 14
UNIX目录树形结构概述 14
包含所有其他目录的根目录 14
查找一个名字的路径(完整路径) 15
标准UNIX目录名 16
UNIX中的目录 16
SVR4(Solaris)中的新目录 18
改变到其他目录 18
改变目录并浏览目录内容(cd.Is) 18
使用基本名和路径名 19
显示当前目录名 19
改变到主目录 19
改变到绝对目录 20
改变到当前目录的子目录(相对目录) 20
分步改变目录 21
改变到上一级目录的子目录 22
返回上一级目录(..) 22
访问当前目录(.) 22
返回上次目录 23
描述文件相对路径名的方法 23
创建新目录(mkdir) 24
删除已有的目录(rmdir) 25
删除整个目录子树(rm) 26
更快地访问目录 26
为大多数访问过的目录设置CDPATH 27
保存与访问常用的目录名 28
显示有关用户及系统信息 29
第3章 显示系统信息 29
显示有关其他用户的信息 32
显示有关UNIX口令文件信息 35
显示系统信息 37
获取日期信息(date) 37
获取系统名称信息(uname) 38
理解UNIX文件系统 38
UNIX进程 41
第4章 输入UNIX命令的规则 43
shell提示符回顾 43
UNIX命令行选项、参数与注释 44
输入命令选项 46
为命令行加注释 46
输入选项参数 47
何处获得帮助(man) 48
从手册页面获得帮助 48
识别系统子例程的手册页 50
快速查找手册页中的信息 50
在不知道命令的情况下查找所需手册页 51
使用交叉索引 52
命令未找到“错误” 52
设置到命令的路径 53
PATH变量的安全含义 54
增加当前目录到PATH变量 54
PATH变量与外加软件包 55
查找保存命令文件的位置(type,which,whence) 55
输入UNIX命令时的常见用户错误 55
错误的大小写 55
错误空格 56
箭头、插入、翻页等功能键错误 56
使用回删和删除键修改错误 56
使用三种不同引号的错误 57
用法错误 58
UNIX错误消息 58
大于号>(PS2提示符) 59
转到下一行且无提示符 60
不能stat文件名 60
用户会话被挂起时应如何处理? 60
预先检查intr和erase键(stty) 62
用文件保存命令输出或错误 62
用文件保存命令或管道的输出(>) 63
输入文件不能同时又是输出文件 64
Korn shell中的noclobber选项 64
用文件保存错误(2>) 65
添加输出或错误到文件后(>>) 65
用一个文件保存输出和错误(2> 1) 65
用文件保存输出并显示在屏幕(1tee) 65
第5章 UNIX图形用户界面(GUI) 67
GUI与X Windows概述 67
X Windows 67
X终端 67
Solaris桌面 68
Solaris较早的GUI:Open Windows 68
控制台GUIs 68
窗口管理器 68
公共桌面环境(CDE) 70
使用Motif窗口 74
在窗口之间传递文本 75
CDE支持的应用程序 76
CDE的扩展帮助 77
在CDE 中运行shell 命令 77
在CDE中编辑文本文件 77
CDE文本编辑器--打开文件 78
在CDE中编辑文本文件 78
CDE文本编辑器--基本编辑 79
CDE文本编辑器--拼写检查 80
CDE文本编辑器-格式化段落 81
通过CDE文件管理器拷贝、移动文件和目录 81
使用CDE的邮件软件阅读和发送电子邮件 83
第二部分 处理UNIX文件 85
第6章 列表、查找、显示或打印文件 85
UNIX文件介绍 85
确定文件类型的方法(Is) 85
确定文件内容类型(file) 86
列表文件(Is) 87
根据给定文件名或部分文件名查找文件(find) 89
查找文件(find) 89
使用基于find操作的选项(find) 91
查找内容中包含特定词的文件(find,grep) 92
使用逻辑算符AND、OR和NOT的find选项(find) 92
显示文件 93
显示小文件(cat) 93
一次显示文件或管道输出的一页(pg/move/less) 93
在显示的文件中加行号(nI,cat) 96
显示包含控制字符的文件(cat,od,strings) 97
显示DOS文件(coI) 98
以大型标题字母的形式显示文本(banner) 98
清理手册页(coI) 99
打印文件 100
UNIX假脱机系统介绍 100
确定系统打印机名称(Ipstat) 100
如何打印文件或管道输出(Ip,Ipr) 101
如何检查打印队列(Ipstat) 102
如何取消打印作业(cancel Iprm,qean) 102
从一台故障打印机上转移打印请求(Ipmove) 103
如何格式化打印输出(pr) 103
处理许可禁止错误 105
选择目的地 105
第7章 拷贝、移动、更名或删除文件 105
拷贝、移动或更名文件(cp,mv) 106
在当前目录下拷贝、移动或更名文件(cp,mv) 106
在不同的目录下拷贝、移动或更名文件(cp,mv) 107
确定文件去向(cp,mv) 108
拷贝或移动文件列表到一个目录(cp,mv) 109
处理确认请求 110
移动或更名目录(mv) 110
拷贝整个目录子树(cpio) 110
删除不同目录下的文件(rm) 112
删除文件列表(rm) 112
删除当前目录下的文件(rm) 112
删除文件(rm) 112
删除整个目录子树(rm) 113
为同一个文件创建多个名称(In) 113
使用硬链创建多个名称(In) 114
查找文件的所有硬链(Is,find) 114
删除硬链(rm) 116
使用软链/符号链创建指针(In) 116
确定某个命令是否使用软链 117
确定输出行的排序方式(ASCII) 118
排序文件或管道(sort) 118
第8章 修改、合并与分解文件 118
忽略前置空格的排序(sort-b) 119
按数值大小排序数字(sort-n) 120
保存结果到原始文件 121
大小写字母同等处理(sort-f) 121
反向排序(sort-r) 122
忽略标点符号的排序(sort-d) 122
基于文本行中的字段排序(sort-n) 123
基于主键和次键排序(sort +m ?n) 124
显示文件或管道输出的起始行(head,sed) 127
显示文件或管道输出的结束行(tail) 128
加密文件和管道输出(crypt) 128
压缩文件(compress,gzip) 130
编码文件为可传输的简单文本(uuencode) 131
合并文件 132
多个文件一起排序(sort) 132
级联多个文件(cat) 132
并排粘贴文件(paste) 133
基于联合字段合并排序文件(join) 133
根据段标题分解文件(csplit) 135
分解文件为多个等长文件(split) 135
分解文件为多个较小文件 135
第9章 生成并使用文件名列表 137
使用文件名生成通配符 137
生成以模式开始、结尾或包含模式的名字(*) 137
检查在线手册页,查看是否允许使用文件名列表和通配符 138
减少输入长文件名 140
忽略文件列表中的目录 140
从多个模式中生成一个文件列表 141
在文件列表中包含隐式文件 141
在特定模式位置上允许任何字符(?) 142
生成其他目录的文件列表 142
指定定长文件名 143
在模式位置指定允许的字符([匽) 143
在模式位置指定非允许字符([!匽) 144
使用反引号(‘)生成文件列表 146
处理“参数列表过长”错误 147
处理反引号“无空间”错误 147
使用xargs处理文件列表(xargs) 147
第10章 根据日期、大小或内容比较文件 150
根据日期比较文件 150
根据最近修改日期比较文件(Is) 150
根据上次访问日期比较文件(Is) 151
比较并查找较给定文件新的文件(find) 152
查找不同目录下最近访问或修改过的文件(find) 153
根据长度比较文件 154
确定文件的长度(Is) 154
按长度排序列表文件 155
根据长度查找文件 155
比较文本文件 156
显示两个文件的差异(diff) 156
并排显示文件中的差异(diff) 157
显示三个文件之间的差异(diff) 157
在排序文本文件中查找公共行和特有行(comm) 159
根据内容比较任意类型的文件(cmp) 160
比较不同系统中的文件(sum) 160
查找不同名称的相同文件(sum) 161
第三部分 用户与系统管理 163
第11章 文件许可与系统安全 163
登录安全性 163
非法登录后的延迟 163
第二口令 163
口令时限 164
修改口令 164
谁可以看到用户的口令? 165
规划系统的组 166
理解文件和目录访问许可 166
允许用户成为另一个用户或根用户(su) 166
SUID与SGID程序 168
目录保持位保护用户文件 168
SGID位设置新文件的组 169
目录的读与执行许可 169
修改许可、拥有者与组 170
使用数字模式设置许可(chmod) 170
使用符号模式设置许可(chmod) 171
修改一个文件的拥有者(chown) 172
修改文件的组(chgrp) 172
设置新文件的缺省许可(umask) 173
监视危险的SUID和SGID许可 173
安装文件系统时的SUID/SGID文件 174
第12章 启动、关闭与管理作业 175
启动系统 175
取出可引导介质 175
为主机加电之前为附属子系统加电 175
加电诊断 175
单用户模式 176
加载UNIX内核至内存 176
安装根磁盘并检查(fsck) 176
多用户模式 177
System V的运行级别 177
关闭系统(shutdown) 178
启动或关闭系统时自动执行作业 179
System V UNIX(rc2.d)在系统启动时自动执行作业 179
System V UNIX(rc0.d)在系统关闭时自动执行作业 181
BCD UNIX(rc脚本)在系统启动时自动执行作业 182
用户登录时自动执行作业 183
规划定期重复运行的作业(cron) 183
任意用户均可使用的自动执行作业(profile,cron,at,batch) 183
在定时表中使用星号(*)通配符 186
运行凌晨工作日作业 186
规划只在特定的日期/时间运行一次的作业(at) 187
规划只在系统负载较轻时运行一次的作业(batch) 188
允许与禁止用户cron、at、batch 188
作业优先级 189
观察作业及其优先级(ps) 189
启动一个低优先级作业(nice) 189
改变现有作业的优先级(renice) 190
删除后台作业(kill) 191
防止注销登录导致删除后台作业(nohup) 191
后台作业 191
启动后台作业( ) 191
Korn shell对作业的更多控制 193
列表后台作业(jobs) 193
挂起与继续运行作业(Ctrl+z,bg,fg) 193
在Korn shell下删除后台作业(kill) 194
使后台作业在开始输出结果之前暂停(stty) 194
第13章 使用tar和cpio备份与恢复文件 196
备份用户文件 196
确定要使用的UNIX设备名称 197
UNIX设备文件 197
磁带驱动器 199
UNIX磁带驱动器命名 199
软盘驱动器 201
UNIX软盘驱动器命名 201
选择tar、cpio或其他备份程序 203
使用tar备份和恢复文件 204
备份一个目录子树 204
备份所选目录和文件 205
列表tar归档文件的内容表 206
使用tar恢复归档文件 207
恢复所有文件到原始目录 211
恢复所有文件到另一个目录 211
只恢复所选择的目录或文件 212
设置与使用备份设备tar表 212
设置tar的块长度 213
tar的限制 213
使用cpio备份与恢复文件 213
备份一个目录子树 214
备份所选目录或文件 215
列表cpio归档文件的内容 216
使用cpio恢复归档文件 217
14章 管理系统资源 223
管理磁盘空间 223
安装文件系统 223
卸载文件系统 224
空间信息 224
限制用户的磁盘空间 225
lost+found目录 226
磁盘管理的其他一些命令 227
查找/显示只包含一种模式的行(grep) 228
第15章 在文体或管道中查找行 228
第四部分 UNIX文本处理 228
选择行时忽略大小写(grep-i) 229
保存所选行到文件(grep) 230
管道输出所选行给其他命令(grep) 230
选择模式(grep) 230
显示不包含指定模式的行(grep-1-v) 231
为找到的行加行号(grep-n) 231
只显示包含模式的文件名(grep-1-c) 232
查找包含两种模式的行(grep|grep) 232
行中通配符模式匹配(常规表达式) 233
选择以一种模式作为开始的行(-) 234
选择包含一种模式的行(grep) 234
选择以一种模式结尾的行($) 235
指定整行内容(-$) 235
在常规表达式中使用shell变量 236
在常规表达式中包含命令替换 236
引起常规表达式以防止出现问题 237
允许使用常规表达式的UNIX命令 237
比较文件名通配符与常规表达式通配符 238
在特定模式位置允许使用任何字符(.) 238
在模式位置指定允许出现的字符([...]) 238
在模式位置指定不允许出现的字符([-匽) 239
指定常规表达式元素出现0次或多次(*) 240
舍弃未加限制的“或多个”常规表达式通配符 242
egrep中使用的特殊常规表达式通配符 242
用egrep(+)指定元素出现一次或多次 243
用egrep(?)指定使用常规表达式元素0次或多次 243
查找多种模式中的一种模式(|) 243
仅perl中可用的特殊常规表达式通配符 243
查找不是较长词一部分的词(\b) 244
检查指定字段以选择行(awk) 245
显示字段中精确匹配的行(awk) 245
关闭常规表达式通配符(\,fgrep) 245
根据字段中的数值显示行(awk) 246
当字段中有一个常规表达式匹配时显示行(awk) 246
根据多个条件显示行( , ,||) 246
第16章 替换或删除文件或管道中的文本 248
替换或删除字符串(用常规表达式) 248
替换字符串(sed,常规表达式) 248
在sed查找字符串中使用常规表达式通配符 249
保存替换后输出到原文件(sed) 250
每行只作一次替换(sed) 250
选择性替换或删除 251
改变分界符号(sed) 251
从行中删除字符串(sed,R.E.) 251
使用特殊字符 252
在查找或替换字符串中使用shell变量 253
不要替换0次或多次出现的字符(sed) 253
在替换字串中使用相匹配的通配符(sed) 254
删除查找模式之外的所有的文本(sed) 255
规则:R.E.通配符与最长的可能长度匹配 256
用perl替换或删除字符串 257
如何匹配最短的可能长度(perl) 257
替换一个或另一个字符串(perl) 258
展开模式以增加可读性(perl) 258
替换不在较长词中的词(perl) 258
与R.E.模式相匹配时忽略大小写 259
选择性替换和删除 259
用awk替换或删除字符串 259
基于字段的替换或删除 259
只显示选择字段(awk) 260
有条件地替换特定字段的值(awk) 261
格式化字段为整齐的列(awk) 262
删除列位置字符(cut) 264
从UNIX命令中提取字段 265
替换/删除文件或管道中的字符(tr) 266
确定UNIX系统中的tr类型 266
转换大小写(tr) 268
设置/归零每个字符的第八位(tr) 268
删除所选字符(tr) 268
转换大部分控制字符为一个错误字符(tr) 269
替换/删除整行文本 269
替换整行文本(sed) 269
删除包含R.E.模式的文本行(grep) 269
删除重复行(uniq) 270
第17章 用vi编辑文本文件 272
vi文本编辑器概述 272
如何启动vi 272
创建一个用于练习的vi文件 273
用10条vi命令编辑任何文本 273
用h,j,k,l移动光标 274
vi出错鸣镝 274
使用重复计数器 274
用:wq保存并退出 275
用j连接行 275
用x和dd删除 275
用i插入 275
用:q!取消修改 276
为vi添加帮助工具 276
学习后8条vi命令 277
按Ctrl+L和Ctrl+R刷新屏幕 277
用u 恢复修改 277
使用:w file保存到不同文件 278
处理写许可失败 278
使用:w命令定期保存所做的工作 278
使用A命令在行尾附加文本 278
用r替换一个字符 279
用cW修改词 279
用IG/G到文件的首或尾 279
用:f命令查看文件名、文件长度和位置 279
帮助用户使用vi的技巧 279
用U命令恢复整行 280
使用spell命令查找拼错词 280
格式化段落 280
恢复丢失的编辑 281
vi文本插入命令表 282
在vi中移动光标 282
以只读方式启动vi 282
使用分隔词、包含词或非词 283
vi光标移动命令表 283
通过查找一个字符串移动光标 283
移动光标到行中的一个指定字符 284
查找一个匹配的括起符号 284
设置一个标记以返回 284
用于删除文本的vi命令表 284
修改文本的vi命令表 285
替换文本 286
用.重复编辑 287
第18章 vi编辑器高级功能 287
加速重复性文本编辑 287
用n和.查找并选择性地重复一个编辑操作 288
映射键为常用的命令序列 289
防止J影响文本内容 291
替换全部或部分文本 291
替换整个文件中的R.E.模式 292
替换文件部分R.E.模式 292
在vi中有条件替换 293
在同一个文件中移动/拷贝文本 294
在vi中移动/拷贝文本段 294
修改行首缩进 294
在不同文件之间移动/拷贝文本 295
设置插入文本选项 296
设置vi为显示输入方式状态 296
打开行尾的自动回绕功能 296
打开行首的自动缩进功能 297
使用长字符串缩写功能 297
行号 297
在vi中查看其他UNIX命令 298
在vi中运行其他UNIX命令 298
保存选项到文件.exe中 298
使用/或?查找时忽略大小写 298
插入其他UNIX命令输出到文件 299
排序文件的全部或部分内容 299
删除与模式相匹配的行 300
加密/解密全部或部分文件 300
在文档中插入标题 300
打印文件的一节 301
统计部分文件的行/词/字符 301
编辑多个文件 302
命令历史 303
第19章 Korn Shell中的命令行编辑 303
调出命令行编辑选项 303
vi命令编辑方式 304
别名 307
第20章 emacs编辑器介绍 308
技术术语 308
启动emacs 309
打开/保存文件并退出emacs 310
使用Undo功能 310
剪切和粘贴 311
绑定键 312
自动备份 312
定义宏 314
重复使用宏 315
查找并替换文本 315
增值查找 316
普通查找 316
普通查找和替换 316
常规查找与替换 317
编写匹配文本列表 318
查找中的大小写 318
文档拼写检查 319
主要方式和次要方式 320
加载次要方式 321
加载主要方式 321
获取emacs帮助 322
info页面 322
继续学习emacs 323
其他emacs包 324
正文中未提到的emacs有用函数的列表 324
UNIX串行设备 325
Modem通信概述 325
第21章 通过Modem访问其他UNIX系统 325
第五部分 与其他用户和系统通信 325
检查串行设备文件 326
串行通信的配置 327
串行通信拨入配置 327
拨出的串行配置 328
用cu程序登录 329
配置cu程序 330
使用cu程序 332
用uucp传输文件 334
检查uucp任务状态 335
取消一个uucp请求 335
远行远程命令 335
通过Modem(PPP)扩展网络 336
配置一个简单的PPP连接 336
停止PPP连接 337
最后说明 338
第22章 在网络或Internet上访问其他UNIX系统 339
一些重要的网络连接概念 339
检查网络连接 340
检查IP地址 340
命名UNIX主机 343
用Ping测试连接 344
检查域名服务是否运行 346
检查是否连接到Internet 347
通过网络登录到UNIX 348
使用Telnet登录 348
何时rlogin优于Telnet 348
通过网络传输文件 350
用FTP传输多个文件 351
用rcp传输文件 353
在网络的另一个系统中执行命令 353
最后说明 354
windows和TCP/IP 355
第23章 从Windows访问UNIX 355
用Ping测试连接 357
查看本地TCP/IP设置 358
用ftp与UNIX交换文件 358
用telnet登录到UNIX 360
拨号联网 360
通过Internet访问UNIX主机 361
通过终端连接访问UNIX主机 364
与远程主机交换文件 365
通过Windows中的Netscape阅读和发送UNIX电子邮件 366
从UNIX访问Internet 368
第24章 UNIX和Internet 368
从Internet上下载软件 370
下载Lynx 370
在Lynx中运行make命令 374
使用基于字符的浏览器(Lynx) 375
UNIX销售商Web站点 376
访问UNIX技术支持 377
访问免费(非支持)软件 378
检查补丁/升级 378
检查2000年问题 379
检查安全公告 379
在UNIX上阅读Network News 380
第六部分 shell程序设计 383
第25章 编写Bourne Shell脚本 383
编写/执行一个简单的脚本 383
建立/使用自己的变量 384
用后引号设置一个变量 385
与用户交互 386
显示标题和提示信息(echo) 386
将用户输入放到shell变量(read) 388
根据测试结果执行代码(if) 389
在命令行上提供脚本输入($I ) 389
检查文件类型、长度或访问许可 390
检查变量内容 392
检查命令结果 394
执行算术运算(expr/bc) 396
特殊shell变量 397
检查命令行给定参数的个数($#) 397
检查最后一个命令的执行状态($?) 397
使用非冲突临时文件($?$) 398
传递所有参数给另一个命令($*) 398
给出适当的UNIX使用错误信息 399
结束脚本并设置完成状态(exit) 399
循环通过每个命令行参数(for) 400
调试脚本 401
循环通过项列表(for) 402
处理目录中的所有文件 402
处理目录树中的所有文件 403
选择一个菜单项(case) 404
第26章 编写awk脚本 406
何时使用awk 406
在命令行上使用awk 407
awk的基本原理 407
awk的特色 407
awk处理(模式和操作) 409
常规表达式模式 410
比较运算符和模式 411
复合模式运算符 411
范围模式运算符 412
处理输入 412
编写程序 413
操作 414
变量 414
预定义变量 415
字符串常量 417
字符串运算符 417
字符串 417
嵌入字符串函数 418
特殊字符串常量 419
数组 420
数组函数 420
多维数组 421
嵌入数字函数 421
算术运算符 422
条件运算符 423
条件流程 423
空语句 423
循环 424
do语句 424
循环控制(bread和continue) 425
for语句 425
while语句 426
高级输入输出 426
输入 426
来自命令的输入 427
来自文件的输入 427
getline 427
next和exit 427
结束来自文件或命令的输入 428
输出 428
美观的格式化(printf) 428
输出到一个文件 430
输出到一个命令 430
关闭输出文件或管道 430
函数 431
函数定义 431
函数参数 432
从函数显式返回(return语句) 433
编写报表 434
复杂报表 434
提取数据 434
巧妙的命令 435
最后一个嵌入函数:System 436
最后说明 437
第27章 编写perl程序 438
编写/执行简单的Perl脚本 438
字面 439
有关终止的简单说明 439
与用户交互 439
变量 440
代码引用 441
文件句柄 441
here-is 442
Perl特殊变量 442
将脚本输入作为参数 444
在命令行提供脚本输入 444
什么是真理? 445
控制结构 445
根据测试结果执行代码(if) 446
做出决定(if-elsh) 446
循环通过每个命令行参数(for) 447
循环遍历(foreach) 447
Perl中常用的函数 448
数组操作 449
pop与push 449
shift与unshift 450
open 451
close 451
文件操作 451
splice 451
散列操作 452
each 452
keys 453
values 453
系统操作 453
time 453
localtime 453
变量操作 455
systerm(‘‘) 455
split 456
join 457
chomp 457
调试脚本(-d) 457
列出源代码(I) 458
执行一行代码(n) 459
显示变量值 459
断点 460
最后说明 462
附录A UNIX命令 463
词汇 495