[b]<br>[/b]
[b]国外计算机科学经典教材•unix原理与应用(第4版)[/b]
http://www.tupwk.com.cn/cata/viewbook.asp?id=1655
http://www.ebookcn.com/book/146132#download
[b][b][/b][/b]
[url=http://www.tupwk.com.cn/bookimgs%5c978-7-302-16690-0.jpg]<img class="imgs" src="http://www.tupwk.com.cn/bookimgs%5c978-7-302-16690-0.jpg" border="0" alt="点击放大" height="150">[/url] <span style="color: #990000;">[b]定价:¥78.00[/b]</span><span style="color: #990000;"><br></span>
责任编辑:王 军 王 婷<br>装帧设计:孔祥丰<br>责任校对:成凤进<br>责任印制: <br>出版发行:清华大学出版社 地 址:北京清华大学学研大厦a座 <br>  http://www.tup.com.cn 邮 编:100084<br>  c-service@tup.tsinghua.edu.cn<br> 社 总 机:010-62770175 邮购热线:010-62786544<br> 投稿咨询:010-62772015 客户服务:010-62776969<br>印 刷 者: <br>装 订 者:<br>经 销:全国新华书店<br>开 本:185×260 印 张:41.5 字 数:1016千字<br>版 次:2008年1月第1版 印 次:2008年1月第1次印刷<br>印 数:1~4000<br>定 价:78.00元
<span style="color: #ff6600;">[b]目 录<br>[/b]</span><br><br>第ⅰ部分 初 级 篇<br>第1章 入门 3<br>1.1 什么是操作系统 4<br>1.2 unix操作系统 5<br>1.3 了解自己的机器 5<br>1.4 一个简单的会话过程 7<br>1.4.1 用账号和口令登录 7<br>1.4.2 命令 9<br>1.4.3 显示日期和时间的命令date 9<br>1.4.4 两个重要的事实 10<br>1.4.5 清屏命令——tput 10<br>1.4.6 日历命令——cal 10<br>1.4.7 检查当前用户命令——who 11<br>1.4.8 查看进程命令——ps 12<br>1.4.9 文件列表命令——ls 12<br>1.4.10 把输出重定向到文件 13<br>1.4.11 统计文件的行数<br>命令——wc 13<br>1.4.12 命令之间的导向作用 14<br>1.4.13 shell指令的编程特性 14<br>1.4.14 退出命令——exit 14<br>1.5 unix简史 15<br>1.5.1 unix的bsd版 15<br>1.5.2 unix的其他版本 16<br>1.5.3 internet时代 16<br>1.5.4 来自windows的挑战 17<br>1.6 linux与gnu 17<br>1.7 小结 17<br>第2章 unix的体系结构与命令用法 20<br>2.1 unix的系统结构 21<br>2.1.1 任务分工——内核和壳 21<br>2.1.2 文件与进程 22<br>2.1.3 系统调用 23<br>2.2 unix系统的主要特性 23<br>2.2.1 unix是一个多用户系统 23<br>2.2.2 unix是一个多任务系统 24<br>2.2.3 unix系统采用积木构建法 24<br>2.2.4 unix的工具包 25<br>2.2.5 模式匹配 25<br>2.2.6 编程工具 25<br>2.2.7 帮助文档 26<br>2.3 posix和单一unix规范 26<br>2.4 定位命令文件 27<br>2.5 内部命令与外部命令 28<br>2.6 命令格式 28<br>2.6.1 可选项 29<br>2.6.2 文件名参数 30<br>2.6.3 例外情形 30<br>2.7 命令的灵活使用 31<br>2.7.1 组合命令 31<br>2.7.2 命令自动换行与多行命令 31<br>2.7.3 在前一个命令结束之前输入<br>命令 32<br>2.8 浏览在线帮助文档的man<br>命令 32<br>2.9 man文档的组成 34<br>2.9.1 man帮助页的组成 35<br>2.9.2 利用man文档了解man的<br>用法 35<br>2.10 利用man -k、apropos和<br>whatis命令得到的帮助 36<br>2.11 出错时的处理 37<br>2.12 小结 40<br>第3章 通用命令介绍 43<br>3.1 日历命令——cal 44<br>3.2 显示系统日期命令——date 45<br>3.3 回显命令——echo 45<br>3.4 用printf命令取代echo命令 47<br>3.5 计算器命令——bc 48<br>3.6 会话过程记录命令——script 49<br>3.7 电子邮件基础 50<br>3.8 万能的邮件处理<br>工具——mailx 51<br>3.8.1 发送邮件 51<br>3.8.2 接收邮件 52<br>3.8.3 mailx的内部命令 53<br>3.9 口令修改命令passwd 55<br>3.10 查看系统当前用户的<br>命令——who 56<br>3.11 了解系统特性的<br>命令——uname 57<br>3.12 获取终端名称的命令——tty 58<br>3.13 显示和设置终端特性的<br>命令——stty 59<br>3.14 小结 60<br>第4章 文件系统 63<br>4.1 文件 63<br>4.1.1 普通文件 64<br>4.1.2 目录文件 64<br>4.1.3 设备文件 65<br>4.2 文件的命名规则 65<br>4.3 父目录与子目录的关系 66<br>4.4 home变量——主目录 67<br>4.5 显示当前目录命令——pwd 68<br>4.6 改变当前目录命令——cd 68<br>4.7 创建目录命令——mkdir 69<br>4.8 删除目录命令——rmdir 70<br>4.9 绝对路径 71<br>4.10 相对路径 72<br>4.11 目录列表命令——ls 74<br>4.12 unix文件系统 77<br>4.13 小结 78<br>第5章 普通文件 81<br>5.1 显示和创建文件命令——cat 82<br>5.1.1 cat命令的可选项(-v和-n) 82<br>5.1.2 用cat命令创建文件 82<br>5.2 文件复制命令——cp 83<br>5.3 文件删除命令——rm 85<br>5.4 文件重命名命令——mv 86<br>5.5 分页输出命令——more 87<br>5.5.1 导航 88<br>5.5.2 重复参数 89<br>5.5.3 搜索匹配模式 89<br>5.5.4 在管道中使用more命令 89<br>5.6 lp子系统——文件打印命令 90<br>5.6.1 lp命令可选项 90<br>5.6.2 lp子系统的其他命令 91<br>5.7 文件类型识别命令file 92<br>5.8 统计行数、字数和字符数的<br>命令——wc 92<br>5.9 数据的八进制显示命令od 93<br>5.10 文件比较命令cmp 94<br>5.11 查找两个文件相同之处的<br>命令comm 95<br>5.12 文件转换命令diff 96<br>5.13 实现dos与unix文件的<br>转换:dos2unix和unix2dos<br>命令 96<br>5.14 文件压缩与文件归档 98<br>5.15 压缩和解压缩命令:gzip和<br>gunzip 98<br>5.16 归档程序tar 100<br>5.16.1 创建归档文件(-c) 100<br>5.16.2 解压归档文件(-x) 101<br>5.16.3 浏览归档文件的内容(-t) 101<br>5.17 将压缩与归档功能合二为一<br>的命令:zip和unzip 102<br>5.18 小结 103<br><br>第6章 文件的基本属性 106<br>6.1 显示文件属性命令——ls -l 107<br>6.2 用-d可选列出目录的属性 108<br>6.3 文件所有权 109<br>6.4 文件权限 109<br>6.5 改变文件权限<br>命令——chmod 110<br>6.5.1 相对权限设置 111<br>6.5.2 绝对权限设置 112<br>6.5.3 安全隐患 114<br>6.5.4 递归模式的chmod<br>命令(-r) 114<br>6.6 目录权限 115<br>6.7 改变文件的所有权 115<br>改变文件所有权命令——chown 116<br>6.7.2 改变组所有者<br>命令——chgrp 116<br>6.8 小结 117<br>第7章 vi编辑器 120<br>7.1 初识vi编辑器 121<br>7.1.1 重复因子 123<br>7.1.2 .exrc文件 123<br>7.1.3 几个小技巧 123<br>7.2 输入模式——文本输入和<br>文本替换 124<br>7.2.1 插入文本(i和a命令) 124<br>7.2.2 在行首行尾插入文本 125<br>7.2.3 新建一行(o或o命令) 125<br>7.2.4 文本替换(r、s、r和<br>s命令) 126<br>7.3 保存文件和退出ex模式 127<br>7.3.1 保存文件(:w) 128<br>7.3.2 保存和退出命令<br>(:x 和:wq) 128<br>7.3.3 放弃编辑命令(:q) 129<br>7.3.4 保存所选的行 129<br>7.3.5 暂时返回到shell的命令<br>(:sh或[ctrl+z]) 130<br>7.3.6 从紧急事故中恢复数据<br>(:recover和:r) 130<br>7.4 导航命令 130<br>7.4.1 移动命令(h、j、k和l) 131<br>7.4.2 单词导航(b、e和w) 131<br>7.4.3 移动行首行尾(0、|和$) 132<br>7.4.4 翻页命令([ctrl+f]、[ctrl+b]、<br>[ctrl+d]和[ctrl+u] 132<br>7.4.5 绝对移动命令 133<br>7.5 编辑文本 133<br>7.5.1 删除文本(x和dd) 134<br>7.5.2 移动文本(p) 135<br>7.5.3 复制文本(y和p) 135<br>7.5.4 行合并命令(j) 135<br>7.6 撤消最近一次的编辑操作<br>(u和u) 136<br>7.7 重复上次操作(.) 136<br>7.8 模式搜索(/和?) 137<br>7.9 替换命令(:s) 139<br>7.10 小结 140<br>第8章 shell 143<br>8.1 shell的命令解释过程 144<br>8.2 shell的类型 145<br>8.3 模式匹配——通配符 145<br>8.3.1 *和?通配符 146<br>8.3.2 匹配“." 147<br>8.3.3 字符类 147<br>8.3.4 无规律的匹配模式 148<br>8.3.5 总结 149<br>8.4 转义和引用 149<br>8.4.1 转义机制 150<br>8.4.2 引用 151<br>8.4.3 echo命令中的转义字符 152<br>8.5 重定向符与三个标准文件 152<br>8.5.1 标准输入 153<br>8.5.2 标准输出 154<br>8.5.3 标准错误 155<br><br>8.5.4 连接标准输出和标准输入<br>的过滤器 157<br>8.6 两个特殊文件:/dev/null和<br>/dev/tty 158<br>8.7 管道符 159<br>8.8 分叉符命令tee 162<br>8.9 命令替换 163<br>8.10 shell变量 164<br>8.10.1 引号和转义的作用 165<br>8.10.2 什么情形下使用shell<br>变量 166<br>8.11 小结 167<br>第9章 进程 171<br>9.1 进程的基本概念 172<br>9.1.1 shell进程 172<br>9.1.2 父进程与子进程 173<br>9.1.3 父进程等待或不等待子<br>进程的死亡 173<br>9.2 显示进程状态命令ps 173<br>9.3 系统进程(–e或–a) 176<br>9.4 进程创建的机制 177<br>9.5 内部命令和外部命令 179<br>9.6 进程状态和僵尸状态 179<br>9.7 在后台运行作业 180<br>9.7.1 后台运行命令——& 180<br>9.7.2 nohup命令 180<br>9.8 降低优先级命令——nice 181<br>9.9 用信号方式终止进程 182<br>9.10 作业控制 183<br>9.11 在将来某个时刻运行——at<br>和batch命令 185<br>9.11.1 一次性自动执行<br>命令——at 185<br>9.11.2 批处理命令batch 186<br>9.12 周期性执行作业的<br>命令——cron 186<br>9.13 查看进程运行时间的<br>命令——time 188<br>9.14 小结 188<br>第10章 环境设置 191<br>10.1 shell的演变 192<br>10.2 环境变量 192<br>10.3 常用的环境变量 193<br>10.4 别名(bash和korn shell) 197<br>10.5 命令的历史记录(bash <br>和ksh) 198<br>10.5.1 根据事件代号访问历史<br>命令(!和r) 199<br>10.5.2 根据上下文执行历史<br>命令 200<br>10.5.3 在先前的命令中执行<br>替换 200<br>10.5.4 使用前面命令的最后<br>一个参数($_) 200<br>10.5.5 历史变量 201<br>10.6 行编辑命令(bash和ksh) 201<br>10.6.1 编辑命令行 201<br>10.6.2 在历史列表中搜索先前<br>的命令 202<br>10.7 其他特性(bash和ksh) 202<br>10.7.1 使用set -o命令 203<br>10.7.2 代字符的替换作用 203<br>10.8 启动脚本 204<br>10.8.1 启动文件(.profile和<br>.bash_profile) 204<br>10.8.2 rc文件(bash和ksh) 205<br>10.9 小结 206<br>第11章 文件的其他属性 209<br>11.1 文件系统与文件的inode<br>结点 210<br>11.2 硬链接 211<br>11.2.1 建立硬链接——ln命令 212<br>11.2.2 硬链接的应用 212<br>11.3 符号连接和ln命令 213<br>11.4 目录 214<br><br>11.4.1 读权限 215<br>11.4.2 写权限 215<br>11.4.3 执行权限 215<br>11.5 设置文件和目录默认<br>权限——umask命令 216<br>11.6 修改和访问时间 217<br>11.7 定位文件命令find 218<br>11.7.1 查找条件 220<br>11.7.2 find命令的操作符(!,-o<br>和-a) 222<br>11.7.3 动作部分的可选项 222<br>11.8 小结 223<br>第12章 简单的过滤器 226<br>12.1 实例数据库 227<br>12.2 分页命令pr 227<br>12.3 显示文件头命令——head 229<br>12.4 显示文件尾——tail命令 229<br>12.5 垂直截取——cut命令 231<br>12.5.1 按列截取(-c) 231<br>12.5.2 用cut命令截取字段(-f) 231<br>12.6 粘贴——paste命令 232<br>12.7 排序命令sort 234<br>12.8 定位重复行和非重复行<br>命令——uniq 237<br>12.9 字符变换命令tr 239<br>12.10 一个实例——单词统计表 241<br>12.11 小结 242<br>第13章 使用正则表达式的<br>过滤器--grep与sed 244<br>13.1 模式搜索命令grep 245<br>13.2 初探基本正则表达式(bre) 248<br>13.2.1 字符类 249<br>13.2.2 直接前缀符(*) 250<br>13.2.3 点的作用——匹配单个<br>字符 251<br>13.2.4 位置匹配(^和$) 251<br>13.2.5 元字符不起作用的情形 252<br><br>13.3 扩展正则表达式(ere)和<br>grep命令 253<br>13.3.1 +和? 253<br>13.3.2 多模式匹配(|、(和)) 254<br>13.4 流编辑命令sed 254<br>13.5 行地址 256<br>13.6 使用多个指令(-e和-f) 257<br>13.7 根据上下文寻址 257<br>13.8 把选取的行写入文件(w) 258<br>13.9 文本编辑 259<br>13.9.1 行插入和修改<br>指令(i、a、c) 259<br>13.9.2 删除行(d) 260<br>13.10 替换操作(s) 260<br>13.11 再识基本正则表达式 263<br>13.11.1 重复模式(&) 263<br>13.11.2 间隔正则表达式 263<br>13.11.3 带标志的正则表达式 264<br>13.12 小结 266<br>第14章 shell程序设计基础 269<br>14.1 shell脚本 270<br>14.2 read命令——脚本的交互式<br>执行 271<br>14.3 使用命令行参数 272<br>14.4 exit命令和命令的退出<br>状态 274<br>14.5 逻辑运算符 &&和| |——有<br>条件执行 275<br>14.6 if条件语句 276<br>14.7 利用test和[ ]符号计算<br>表达式的值 277<br>14.7.1 数值比较 277<br>14.7.2 字符串比较 279<br>14.7.3 文件测试 281<br>14.8 case 条件语句 282<br>14.8.1 匹配多个模式 284<br>14.8.2 在case结构中使用<br>通配符 284<br>14.9 数值计算和字符串处理<br>命令expr 284<br>14.9.1 数值运算 285<br>14.9.2 字符串处理 285<br>14.10 脚本程序的另外一种调用<br>方法——$0 287<br>14.11 while循环结构 288<br>14.11.1 利用while循环等待<br>一个文件 289<br>14.11.2 设置无限循环 290<br>14.12 for循环——作用在列表上<br>的循环 290<br>14.12.1 各种列表 291<br>14.12.2 修改文件的扩展名<br>——basename命令 292<br>14.13 操作位置参数命令:set<br>和shift 293<br>14.13.1 位置参数左移命令<br>shift 294<br>14.13.2 执行命令替换的set--<br>命令 295<br>14.14 here文档(<<) 295<br>14.15 程序中断命令trap 297<br>14.16 用set -x命令调试shell<br>脚本 298<br>14.17 数据验证和数据录入实例 298<br>14.17.1 代码列表搜索程序<br>valcode.sh 298<br>14.17.2 数据录入脚本程序<br>dentry1.sh 299<br>14.18 小结 301<br>第15章 系统管理基础 305<br>15.1 系统管理员的登录身份<br>——root 306<br>15.2 系统管理员的特权 307<br>15.2.1 设置系统日期——date<br>命令 307<br><br>15.2.2 向用户传达消息——wall<br>命令 307<br>15.2.3 设置文件大小的最大值<br>——ulimit命令 308<br>15.2.4 控制用户使用at和cron 308<br>15.3 安全维护 308<br>15.3.1 passwd命令可以修改<br>任何口令 308<br>15.3.2 临时权限suid 309<br>15.3.3 粘着位 310<br>15.4 用户管理 311<br>15.4.1 创建组——groudadd<br>命令 311<br>15.4.2 创建用户——useradd<br>命令 312<br>15.4.3 用户配置文件:/etc/passwd<br>和/etc/shadow 312<br>15.4.4 修改和删除用户——<br>usermod和userdel命令 313<br>15.5 启动和关机过程 313<br>15.6 管理磁盘空间 315<br>15.6.1 报告磁盘可用空间——<br>df命令 315<br>15.6.2 报告磁盘使用情况——<br>df命令 316<br>15.7 设备文件 317<br>15.7.1 块设备和字符设备 318<br>15.7.2 主设备号和次设备号 318<br>15.8 操作软盘设备 319<br>15.8.1 软盘格式化命令——<br>format和fdformat 319<br>15.8.2 磁盘复制命令——dd 320<br>15.8.3 操作dos磁盘 320<br>15.9 备份程序cpio 321<br>15.9.1 备份文件(-o) 322<br>15.9.2 恢复文件(-i) 323<br>15.9.3 显示归档文件里的文件<br>列表(-it) 324<br><br>15.9.4 其他可选项 325<br>15.10 tar命令 325<br>15.10.1 备份文件(-c) 326<br>15.10.2 文件恢复(-x) 327<br>15.10.3 显示归档文件的<br>内容(-t) 328<br>15.10.4 其他可选项 328<br>15.11 小结 329<br>第ⅱ部分 高 级 篇<br>第16章 x window系统 335<br>16.1 x系统基础 336<br>16.2 通用桌面环境 338<br>16.3 启动和退出x系统 339<br>16.4 终端仿真程序 340<br>16.5 剪切和粘贴操作 341<br>16.5.1 使用鼠标按钮 342<br>16.5.2 高级的剪切和粘贴<br>操作:xclipboard 342<br>16.6 远程运行x客户端程序 343<br>16.6.1 显示程序 343<br>16.6.2 使用display变量 343<br>16.6.3 使用-display可选项 344<br>16.7 命令行可选项 344<br>16.7.1 窗口位置和大小<br>(-geometry) 345<br>16.7.2 设置颜色(-fg,-bg和-rv) 345<br>16.7.3 其他可选项 346<br>16.8 一些标准的x客户端程序 346<br>16.8.1 文件管理器dtfile 346<br>16.8.2 时钟模拟器xclock 347<br>16.8.3 计算器xcalc 347<br>16.8.4 邮件通知程序xbiff 348<br>16.8.5 显示系统负荷命令<br>xload 348<br>16.8.6 终止窗口命令xkill 349<br>16.9 启动文件 349<br>16.10 x系统的资源 350<br>16.10.1 装载资源命令<br>——xrdb 350<br>16.10.2 -xrm可选项——使<br>配置文件无效 351<br>16.11 小结 351<br>第17章 网络工具 353<br>17.1 tcp/ip基础 354<br>17.1.1 tcp/ip工作原理 354<br>17.1.2 tcp/ip的特点 354<br>17.1.3 ip地址 355<br>17.1.4 守护进程和端口 355<br>17.2 域名解析 356<br>17.3 tcp/ip应用程序 357<br>17.4 检查网络是否连通——<br>ping命令 358<br>17.5 远程登录命令——telnet 358<br>17.6 文件传输协议ftp 359<br>17.6.1 文件和目录基本操作<br>命令 360<br>17.6.2 传输文件 361<br>17.6.3 匿名ftp登录 362<br>17.7 密码学基础 363<br>17.7.1 对称密钥算法 363<br>17.7.2 非对称密钥算法 364<br>17.8 ssh——安全外壳 364<br>17.8.1 主机认证 365<br>17.8.2 rhosts/shosts认证模式 365<br>17.8.3 用对称算法进行用户<br>认证 366<br>17.8.4 利用ssh代理实现<br>非交互式登录 367<br>17.9 ssh工具 368<br>17.9.1 远程登录和命令的<br>执行——ssh和slogin 369<br>17.9.2 安全的文件传输<br>命令——sftp和scp 369<br>17.10 域名系统(dns) 370<br>17.11 电子邮件服务 373<br>17.12 mime——处理邮件中的<br>二进制附件 374<br>17.13 万维网 375<br>17.13.1 统一资源定位器<br>(url) 376<br>17.13.2 web协议http 377<br>17.13.3 执行外部程序 377<br>17.13.4 网页设计语言<br>——html 378<br>17.13.5 web浏览器 379<br>17.14 web上的多媒体——<br>再论mime协议 379<br>17.15 小结 380<br>第18章 高级过滤器——awk命令 383<br>18.1 awk命令简单的过滤功能 384<br>18.2 把一行拆分成字段 385<br>18.3 printf格式化输出 386<br>18.4 变量和表达式 386<br>18.5 比较运算符 387<br>18.5.1 正则表达式运算符:<br>~和!~ 388<br>18.5.2 数值比较 389<br>18.6 数值运算 390<br>18.7 变量 390<br>18.8 -f可选项——把awk程序<br>保存到一个文件里 391<br>18.9 begin段和end段 391<br>18.10 内置变量 392<br>18.11 数组 393<br>18.11.1 关联(哈希)数组 394<br>18.11.2 环境数组<br>environ[ ] 395<br>18.12 函数 395<br>18.13 流程控制——if语句 397<br>18.14 for循环 398<br>18.15 while循环 400<br>18.16 小结 400<br><br>第19章 perl——最重要的文本<br>处理器 403<br>19.1 perl概述 404<br>19.2 chop截尾函数——删除<br>最后一个字符 405<br>19.3 变量与运算符 406<br>19.4 字符串处理函数 407<br>19.5 在命令行中说明文件名 408<br>19.6 默认变量$_ 410<br>19.7 当前行号($.)和范围<br>运算符(..) 410<br>19.8 列表与数组 411<br>19.8.1 命令行参数 argv[ ] 413<br>19.8.2 修改数组元素 414<br>19.9 列表循环——foreach 414<br>19.10 split函数——把一行拆分<br>成列表或数组 415<br>19.10.1 拆分到变量里 416<br>19.10.2 拆分到数组里 416<br>19.11 join命令——合并列表 417<br>19.12 dec2bin.pl——把十进制<br>转化为二进制 418<br>19.13 用grep在数组中搜索<br>一个模式 419<br>19.14 关联数组 420<br>19.15 正则表达式与模式替换 422<br>19.15.1 s和tr函数 422<br>19.15.2 识别空白符、数字和<br>单词 424<br>19.15.3 ire和tre用法 424<br>19.15.4 在位编辑文件 425<br>19.16 文件的处理 425<br>19.17 文件属性测试 426<br>19.18 子程序 427<br>19.19 小结 429<br>第20章 vi编辑器的高级功能 433<br>20.1 操作符 433<br><br>20.1.1 删除、移动文本(d、p<br>和p命令) 434<br>20.1.2 文本复制(y命令) 434<br>20.1.3 修改文本(c命令) 435<br>20.1.4 过滤文本(!命令) 435<br>20.2 ex模式——多文件操作 437<br>20.2.1 文件切换 437<br>20.2.2 插入文件和命令执行<br>结果 438<br>20.3 符号缓冲区——保存多个<br>文本段 439<br>20.4 标号缓冲区——取消多个<br>行删除操作 440<br>20.5 输入控制符([ctrl+v]) 441<br>20.6 字符搜索 442<br>20.7 标签文本 442<br>20.8 定制vi编辑器 443<br>20.8.1 set命令 443<br>20.8.2 map——建立快捷键<br>映射表 444<br>20.8.3 abbr——定义文本输入<br>缩写符 445<br>20.9 小结 446<br>第21章 高级shell程序设计 449<br>21.1 shell与子shell 450<br>21.2 组运算符——()和{} 450<br>21.3 export命令——导出shell<br>变量 451<br>21.4 在当前shell运行<br>脚本——.命令 452<br>21.5 let运算命令(ksh 和<br>bash) 453<br>21.6 数组(ksh和bash) 454<br>21.7 字符串处理(ksh和bash) 455<br>21.7.1 字符串的长度 455<br>21.7.2 根据模式的匹配结果<br>求子串 456<br><br>21.8 带条件的参数替换 457<br>21.9 流的合并 458<br>21.10 shell函数 459<br>21.10.1 利用系统日期生成<br>一个文件名 460<br>21.10.2 函数返回值 460<br>21.10.3 验证输入日期的<br>有效性 461<br>21.11 eval命令——两次求值 462<br>21.12 exec 语句 464<br>21.13 小结 467<br>第22章 程序开发工具 469<br>22.1 处理多文件c语言应用<br>程序 470<br>22.2 一个多文件应用程序 470<br>22.2.1 编译和连接程序 472<br>22.2.2 保留.o文件的原因 473<br>22.3 make命令——保持程序<br>更新 474<br>22.3.1 删除冗余内容 476<br>22.3.2 make的其他功能:文件<br>清理和备份 476<br>22.3.3 宏 477<br>22.4 ar命令——建立一个库文件<br>(归档文件) 478<br>22.4.1 使用库文件 479<br>22.4.2 用make命令维护<br>库文件 480<br>22.5 静态库和共享库 480<br>22.6 版本控制工具——sccs<br>和rcs 481<br>22.7 一次sccs会话 482<br>22.7.1 admin命令——创建<br>一个sccs文件 483<br>22.7.2 get命令——检出版本 484<br>22.7.3 delta——检入命令 485<br>22.7.4 unget命令——取消<br>修改 486<br>22.8 活动和历史信息 486<br>22.8.1 sact——显示活动状态<br>信息 486<br>22.8.2 prs命令——显示sccs<br>历史记录 487<br>22.9 用sccs继续编辑 487<br>22.9.1 get -r命令改变默认的<br>数字编号 488<br>22.9.2 使用标识关键字 489<br>22.10 修订控制系统(rcs) 489<br>22.10.1 用ci建立一个rcs<br>文件 490<br>22.10.2 co和ci——检出和<br>检入命令 491<br>22.10.3 设置版本号 492<br>22.10.4 rlog命令——查看<br>版本状态 492<br>22.10.5 ident命令——使用<br>标识关键字 493<br>22.11 小结 493<br>第23章 系统程序设计(上)——<br>文件 496<br>23.1 系统调用基础 497<br>23.1.1 系统调用与库函数 497<br>23.1.2 系统调用的执行过程 497<br>23.1.3 原子操作 498<br>23.2 打开和关闭文件 498<br>23.2.1 打开或建立一个<br>文件——open命令 499<br>23.2.2 close系统调用——关闭<br>文件 500<br>23.3 i/o系统调用 501<br>23.3.1 read调用——读取文件 501<br>23.3.2 write调用——写入文件 502<br>23.3.3 ccp.c——文件复制<br>程序 502<br>23.3.4 lseek调用——定位偏移<br>指针 503<br>23.3.5 reverse_read.c——逆序<br>读取文件 504<br>23.3.6 截断文件——truncate和<br>ftruncate 505<br>23.4 带缓冲和不带缓冲的读写<br>操作 506<br>23.5 umask命令——文件创建与<br>权限修改 507<br>23.6 错误处理 508<br>23.6.1 strerror函数 508<br>23.6.2 perror函数 509<br>23.6.3 带错误处理的文件逆序读<br>取程序reverse_read2.c 510<br>23.7 文件共享 512<br>23.7.1 文件描述表 513<br>23.7.2 文件表 513<br>23.7.3 vnode表 514<br>23.8 目录浏览 515<br>23.9 读取目录文件 516<br>23.10 修改目录文件的记录 517<br>23.10.1 建立和删除目录——<br>mkdir和rmdir系统<br>调用 518<br>23.10.2 建立硬连接和符号<br>连接——link和<br>symlink调用 518<br>23.10.3 unlink:删除连接 518<br>23.10.4 rename:重命名文件名、<br>目录名和连接文件名 519<br>23.11 stat——读取inode 519<br>23.11.1 attributes.c显示文件<br>部分属性 520<br>23.11.2 作用于st_mode成员上<br>的s_ifmt屏蔽字 521<br>23.11.3 用s_is系列宏判断<br>文件类型 522<br>23.11.4 lsdir.c——只列出目录 522<br>23.12 查看文件的存取权限 524<br><br>23.12.1 check_all_perm.c——<br>查看12个权限位 524<br>23.12.2 access——查看文件<br>所有者的权限 526<br>23.12.3 suid对文件存取的<br>影响 528<br>23.13 修改文件属性 529<br>23.13.1 chmod和fchmod——<br>修改文件权限 529<br>23.13.2 chown——修改文件<br>所有权 530<br>23.13.3 utime——修改文件的<br>时间戳 530<br>23.13.4 atimetime.c——创建具<br>有相同时间戳的文件 531<br>23.14 小结 532<br>第24章 系统程序设计(下)——进程<br>控制 536<br>24.1 进程的几个抽象概念 537<br>24.1.1 虚拟地址空间 537<br>24.1.2 进程表 538<br>24.2 process.c程序——查看进程<br>的权限 539<br>24.3 创建一个进程 540<br>24.3.1 fork系统调用——复制<br>当前进程 540<br>24.3.2 fork.c——一个简单的<br>子进程创建程序 540<br>24.3.3 getenv和setenv——使用<br>环境变量 542<br>24.3.4 childenv.c——传递环境 542<br>24.4 _exit和exit——终止进程 544<br>24.5 等待状态——读取子进程的<br>退出状态值 545<br>24.5.1 wait——等待子进程<br>死亡 545<br>24.5.2 wait.c——说明wait和<br>wexistatus的用法 545<br>24.5.3 waitpid——一个功能<br>更强大的等待机制 546<br>24.6 进程组 547<br>24.7 僵尸进程和孤儿进程 548<br>24.8 exec——进程创建中的最后<br>一个步骤 549<br>24.8.1 execl--"l”系列中最<br>重要函数 549<br>24.8.2 execv--v组中最重要<br>的函数 551<br>24.8.3 exec_and_fork.c——在<br>子进程执行exec 551<br>24.8.4 l家族和v家族的其他<br>成员 552<br>24.9 shell.c——一个类似于<br>shell的程序 553<br>24.10 文件描述符的使用 555<br>24.10.1 dup——复制文件<br>描述符 556<br>24.10.2 dup2——复制描述符<br>的一种更好方法 557<br>24.10.3 fcntl——比dup和<br>dup2更好的函数 558<br>24.11 pipe系统调用——进程<br>之间的通信 559<br>24.11.1 pipe与fork一起使用 560<br>24.11.2 pipe2.c——管道中运行<br>unix命令 561<br>24.12 信号机制 562<br>24.12.1 信号处理 562<br>24.12.2 内核处理信号的过程 563<br>24.12.3 与信号有关的系统<br>调用 564<br>24.13 signal调用——设置信号<br>处理程序 564<br>24.13.1 响应sigalrm信号 565<br>24.13.2 为什么signal调用不<br>可靠 566<br><br>24.13.3 捕获来自键盘终端<br>的信号 567<br>24.14 killprocess.c——用kill产生<br>信号 568<br>24.15 小结 570<br>第25章 高级系统管理 573<br>25.1 安全措施 574<br>25.1.1 口令老化机制 574<br>25.1.2 受限的shell 574<br>25.1.3 只允许一个用户关机 575<br>25.2 分区与文件系统 575<br>25.2.1 引导块 576<br>25.2.2 超级块 576<br>25.2.3 inode块 577<br>25.2.4 数据块 577<br>25.3 常用的文件系统和类型 578<br>25.4 fdisk——建立分区 579<br>25.5 mkfs——创建文件系统 580<br>25.6 加载和卸载文件系统 581<br>25.6.1 用mount加载文件<br>系统 581<br>25.6.2 umount——卸载文件<br>系统 582<br>25.6.3 /etc/fstab文件——配置<br>mount命令 582<br>25.6.4 mount的可选项 583<br>25.7 用fsck命令检查文件系统 584<br>25.8 系统启动和init命令 585<br>25.8.1 init命令——控制<br>运行级 586<br>25.8.2 使用/etc/inittab文件 586<br>25.8.3 init和getty 587<br>25.8.4 rc脚本程序 588<br>25.9 关机操作和sync操作 589<br>25.10 备份 590<br>25.10.1 用find命令进行增量<br>备份(-newer) 590<br>25.10.2 用find命令备份文件<br>系统 590<br>25.10.3 xargs——建立动态<br>命令行 591<br>25.10.4 保存备份文件的列表 591<br>25.11 小结 592<br>附录a c shell的结构 594<br>附录b vi/vim命令手册 601<br>附录c 命令反查表 609<br>附录d 测试题答案 614<br><br><br>??<br><br>unix原理与应用(第4版)<br><br>目 录 <br><br>xii<br><br><br>xix<br><br><br><br><br><br><br>
end