
| Syed Mansoor Sarwar在伊阿华州大学获得计算机工程硕士和博士学位,并在9年前就已受聘为波特兰大学工学院教授。Sarwar博士当前的教学和研究方向包括操作系统、软件工程、经验算法、计算机系结构以及分布式计算。 Robert Koretsky波特兰大学工学院讲师,在讲授工程设计计算机应用程序方面已有20年的经验。他当前的教学和研究方向包括参数化固态建模、统计学、工种教育以及计算机编程。Syed Aqeel Sarwar在伊阿华州立大学和NYIT分别获得计算机科学学士和硕士学位。10多年来他曾在多家IT公司任职,包括近两年在加拿大通用电气公司信息技术方案部的工作经验。他的专业包括操作系统和局域网/广域网技术。 |
| 第1章 操作系统综述 1 1.1 引言 1 1.2 操作系统是什么 1 1.3 操作系统提供的服务 2 1.4 文字与图形用户接口 2 1.5 操作系统的类型 3 1.6 Linux家族 4 小结 4 习题 5 第2章 Linux历史 6 2.1 引言 6 2.2 开放源码 7 2.3 Linus Torvalds 7 2.4 Linux发行版 8 2.5 内核的历史 8 2.6 Linux的流行 9 2.7 未来的发展 9 2.8 Web资源 9 小结 9 习题 9 第3章 开始行动 11 3.1 引言 11 3.2 计算机系统硬件 11 3.2.1 内存/主存 12 3.2.2 中央处理器(CPU) 12 3.2.3 磁盘 13 3.2.4 总线 13 3.2.5 输入/输出设备 13 3.3 Linux软件体系结构 14 3.3.1 设备驱动程序层 14 3.3.2 Linux内核 14 3.3.3 系统调用接口 15 3.3.4 语言函数库 16 3.3.5 Linux shell 16 3.3.6 应用程序 16 3.4 登录和退出 16 3.5 改正命令行输入错误 19 3.6 重要的一些系统设置 19 3.7 对初学者有用的几个命令 20 3.7.1 修改密码 21 3.7.2 获取帮助 21 3.7.3 找出用户及其 Linux系统的名字 23 小结 24 习题 25 第4章 Linux shell 26 4.1 引言 26 4.2 各种各样的Linux shell 27 4.2.1 各种shell程序 27 4.2.2 哪种shell能满足需要 28 4.2.3 更改shell的各种方法 29 4.2.4 shell的启动文件和环境变量 31 4.3 一些有用的多用途命令 32 4.3.1 创建和显示目录 32 4.3.2 显示文件 34 4.3.3 打印文件 34 4.3.4 显示日历 34 4.3.5 单向实时消息 34 4.3.6 电子通信的通知和允许 35 4.3.7 为命令创建假名 35 4.3.8 显示系统运行时间 37 4.4 shell元字符 37 小结 38 习题 39 第5章 编辑文本文件 40 5.1 引言 40 5.2 如何使用pico编辑器进行简短编辑 41 5.2.1 使用pico文本编辑器创建一封E-mail 41 5.2.2 如何新建、保存一个文件并退出 41 5.2.3 常用的按键命令和光标移动命令 43 5.2.4 剪切、粘贴和查找 44 5.3 使用vi编辑器获取更多控制 45 5.3.1 shell脚本文件 45 5.3.2 如何开始编辑文件,保存文件并退出 46 5.3.3 vi 命令的格式和操作模式 47 5.3.4 光标移动和编辑命令 49 5.3.5 yank、put命令(复制和粘贴)和substitute命令(搜索和替换) 50 5.3.6 设置vi环境 52 5.3.7 从vi中执行shell命令 52 5.4 使用emacs编辑器获取最大控制 53 5.4.1 DOS 别名 53 5.4.2 如何开始编辑文件,保存文件并退出 53 5.4.3 光标移动和编辑命令 54 5.4.4 键盘宏命令 56 5.4.5 剪切或复制、粘贴、查找和替换 57 5.5 如何使用XEmacs进行图形化编辑 59 5.5.1 用XEmacs编辑数据文件 59 5.5.2 XEmacs菜单和按钮 60 5.5.3 如何开始编辑文件,保存文件并退出 61 5.6 命令行编辑 62 小结 65 习题 65 第6章 电子邮件 67 6.1 引言 67 6.2 如何高效使用Linux中的mail命令 69 6.2.1 用mail命令发送和读取电子邮件 69 6.2.2 用mail命令发送电子邮件 70 6.2.3 用mail命令阅读电子邮件 72 6.2.4 将邮件存储到文件夹中 73 6.2.5 回复、转发邮件并添加附件 73 6.2.6 邮件别名 74 6.3 elm——全屏显示电子邮件系统 75 6.3.1 在elm中发送一封邮件 75 6.3.2 用elm发送电子邮件 75 6.3.3 用elm程序阅读电子邮件 77 6.3.4 在elm中转发和回复邮件 79 6.3.5 把邮件保存到文件夹中 80 6.3.6 elm别名 80 6.4 pine——另一个全屏电子邮件系统 82 6.4.1 用pine发送邮件连同在vi中创建的附件 82 6.4.2 用pine程序发送电子邮件 82 6.4.3 用pine程序阅读电子邮件 84 6.4.4 在pine中处理目录里的电子邮件 85 6.4.5 使用pine的地址簿 86 6.4.6 pine命令总结 88 6.5 图形化电子邮件系统——Kmail 90 6.5.1 开始使用Kmail 90 6.5.2 在Kmail中读电子邮件 92 6.5.3 在Kmail程序发送邮件 93 6.5.4 将邮件简单过滤到目录中 95 小结 96 习题 96 第7章 文件和文件系统结构 99 7.1 引言 99 7.2 Linux文件概念 99 7.3 文件类型 99 7.3.1 简单/普通文件 100 7.3.2 目录 100 7.3.3 连接文件 101 7.3.4 特殊文件(设备) 101 7.3.5 命名管道(FIFO) 101 7.4 文件系统结构 102 7.4.1 文件系统的组织 102 7.4.2 主目录和当前工作目录 102 7.4.3 绝对路径和相对路径 103 7.4.4 一些标准目录和文件 103 7.5 文件结构导航 107 7.5.1 确定主目录的绝对路径 108 7.5.2 浏览文件系统 108 7.5.3 创建文件 111 7.5.4 创建和删除目录 111 7.5.5 使用目录堆栈 112 7.5.6 确定文件属性 115 7.5.7 确定文件内容的类型 117 7.6 Linux中的文件表示和存储 118 7.7 标准文件和文件描述符 120 7.8 文件末尾(eof)标记 121 小 结 122 习 题 122 第8章 文件安全 124 8.1 引言 124 8.2 基于密码的保护 124 8.3 基于文件加密的保护 125 8.4 基于访问权限的文件保护 125 8.4.1 用户分类 125 8.4.2 文件操作/访问权限的分类 126 8.5 读取和更改文件的访问特权 127 8.5.1 读取文件的访问特权 127 8.5.2 改变文件访问特权 128 8.5.3 默认的文件访问特权 131 8.6 特殊访问位 132 8.6.1 set-user-ID(SUID)位 132 8.6.2 set-group-ID(SGID)位 134 8.6.3 sticky位 134 8.7 文件访问权限和类型 135 小 结 136 习 题 136 第9章 基本文件处理 138 9.1 引言 138 9.2 查看文本文件的内容 138 9.2.1 查看完整的文件 138 9.2.2 每次一页地查看文件 140 9.2.3 查看文件的头或尾 142 9.2.4 显示NIS数据库 145 9.3 文件的复制、转移和删除 145 9.3.1 文件的复制 145 9.3.2 文件的转移 147 9.3.3 文件的删除 148 9.3.4 文件大小的确定 149 9.4 文件的追加 151 9.5 文件的合并 152 9.6 文件的比较 153 9.7 删除重复行 157 9.8 文件的打印与打印任务的控制 158 9.8.1 Linux的文件打印机制 158 9.8.2 文件的打印 159 9.8.3 显示打印请求的状态 159 9.8.4 打印任务的取消 160 小 结 160 习 题 161 第10章 高级文件处理 163 10.1 引言 163 10.2 正则表达式 163 10.3 文件压缩 164 10.3.1 gzip命令 164 10.3.2 gunzip命令 165 10.3.3 gzexe命令 167 10.3.4 zcat命令 167 10.3.5 重命名文件 168 10.4 文件排序 168 10.5 搜索命令和文件 171 10.5.1 find命令 171 10.5.2 whereis命令 172 10.5.3 which命令 172 10.6 搜索文件内容 173 10.7 cutting和pasting 176 10.8 编码和解码 179 10.9 历史命令列表 180 小结 185 习题 186 第11章 文件共享 188 11.1 引言 188 11.2 通过副本共享 188 11.3 通过同一用户名登录共享 188 11.4 为共享文件设立适当的访问权限 189 11.5 为团队成员建立一个用户组 189 11.6 通过文件链接共享 189 11.6.1 硬链接 189 11.6.2 硬链接的缺点 195 11.6.3 软链接/符号链接 196 11.6.4 符号链接的类型 199 11.6.5 符号链接的优缺点 199 11.7 查找符号链接 200 小结 201 习题 202 第12章 重定向和管道 203 12.1 引言 203 12.2 标准文件 203 12.3 输入重定向 204 12.4 输出重定向 205 12.5 输出重定向和输入重定向的合并 206 12.6 带文件描述符的I/O重定向操作 207 12.7 标准出错的重定向 207 12.8 用一条命令实现标准输出和标准出错的重定向 208 12.9 用一条命令重定向标准输入、标准输出和标准出错 211 12.10 不覆盖文件内容的重定向(追加) 212 12.11 Linux管道 213 12.12 结合管道使用重定向 216 12.13 在TC shell中的出错重定向 218 12.14 I/O及错误重定向总结 220 小结 221 习题 222 第13章 进程 224 13.1 引言 224 13.2 同一时刻执行的进程 224 13.3 Linux进程的状态 225 13.4 shell命令的执行 226 13.5 进程属性 229 13.6 进程和作业控制 236 13.6.1 前后台进程以及相关命令 236 13.6.2 Linux守护进程 241 13.6.3 命令的顺序和并行执行 241 13.6.4 命令和进程的异常终止 244 13.6.5 命令的有条件执行 247 13.7 Linux进程的层次关系 248 小结 251 习题 252 第14章 连网与网络互联 253 14.1 引言 253 14.2 计算机网络和计算机互联网 253 14.3 计算机网络和网络互联的动机 254 14.4 网络模型 255 14.5 TCP/IP协议 256 14.5.1 TCP和UDP协议 256 14.5.2 数据的路由——IP协议(The Internet Protocol) 257 14.5.3 点分10进制的IPv4地址 258 14.5.4 符号名 259 14.5.5 将名字翻译到IP地址——域名系统 261 14.6 互联网服务和协议 262 14.7 client-server软件模型 262 14.8 应用软件 264 14.8.1 显示主机名 264 14.8.2 显示当前网络中所有登录用户的用户列表 264 14.8.3 显示网络中所有主机状态 266 14.8.4 测试网络连接 266 14.8.5 显示用户信息 267 14.8.6 远程登录 270 14.8.7 远程命令执行 275 14.8.8 文件传输 276 14.8.9 远程复制 279 14.8.10 交互式聊天 280 14.8.11 追踪从一个站点到另一个站点的路由 281 小结 282 习题 282 第15章 Bash编程 284 15.1 引言 284 15.2 运行一个Bash脚本 284 15.3 shell变量和相关的命令 285 15.3.1 控制shell提示符 289 15.3.2 变量声明 290 15.3.3 读写shell变量 292 15.3.4 命令替换 294 15.3.5 输出环境变量 295 15.3.6 重设变量 296 15.3.7 创建只读的用户定义的变量 297 15.3.8 从标准输入设备读入 298 15.4 给shell脚本传递参数 299 15.5 注释和程序头 302 15.6 程序流程控制命令 303 15.6.1 if-then-elif-else-fi语句 303 15.6.2 for语句 310 15.6.3 while语句 311 15.6.4 until语句 313 15.6.5 break和continue命令 315 15.6.6 case语句 315 小结 318 习题 319 第16章 高级Bash编程 321 16.1 引言 321 16.2 数值数据处理 321 16.3 数组处理 327 16.4 here文件 331 16.5 中断(信号)处理 333 16.6 exec命令和文件输入/输出 336 16.6.1 不创建新的进程执行命令 336 16.6.2 通过exec命令的文件输入/输出 337 16.7 Bash中的函数 343 16.7.1 需要函数的原因 343 16.7.2 函数定义 343 16.7.3 函数调用 343 16.7.4 函数的例子 344 16.8 调试shell程序 345 小结 347 习题 347 第17章 TC shell编程介绍 348 17.1 引言 348 17.2 运行一个TC shell脚本 348 17.3 shell变量和相关命令 349 17.3.1 读、写shell变量 352 17.3.2 命令替换 353 17.3.3 输出环境 354 17.3.4 重置变量 355 17.3.5 创建用户自定义只读变量 356 17.3.6 从标准输入中读 357 17.4 向shell脚本传递参数 358 17.5 注释与程序头 360 17.6 流程控制命令 361 17.6.1 if-then-else-endif语句 361 17.6.2 foreach语句 367 17.6.3 while语句 369 17.6.4 break、continue和goto语句 370 17.6.5 switch语句 371 小结 374 习题 374 第18章 高级TC shell编程 376 18.1 引言 376 18.2 数值型数据的处理 376 18.3 数组操作 377 18.4 here document 382 18.5 中断(信号)处理 383 18.6 调试shell程序 386 小结 387 习题 388 第19章 文件系统备份 389 19.1 引言 389 19.2 用tar命令存档和恢复文件 389 19.2.1 档案文件 390 19.2.2 恢复档案文件 393 19.2.3 复制目录层 396 19.3 以tar格式发行软件 397 小结 398 习题 398 第20章 Linux软件开发工具 399 20.1 引言 399 20.2 计算机编程语言 399 20.3 编译过程 401 20.4 软件工程的生命周期 401 20.5 程序生成工具 402 20.5.1 生成C语言源代码 402 20.5.2 缩进C语言代码 402 20.5.3 C程序的编译 405 20.5.4 处理模块化的C程序 407 20.5.5 创建、修改和释放库/归档文件 415 20.5.6 版本控制 420 20.6 静态分析工具 442 剖析C源程序 442 20.7 动态分析工具 446 20.7.1 代码调试 446 20.7.2 运行效率分析 455 小结 456 习题 457 第21章 XFree86和Linux图形用户界面 459 21.1 引言 459 21.2 XFree86基础 460 21.2.1 比较与优势 460 21.2.2 交互的关键组件——事件和请求 461 21.2.3 窗口管理器在用户界面中的角色——FVWM 462 21.2.4 定制XFree86和FVWM 466 21.3 GNOME桌面管理器 471 21.3.1 GNOME桌面的登录、注销及外观显示 471 21.3.2 GNOME面板 472 21.3.3 自定义面板 473 21.3.4 使用GnoRPM安装新软件包 476 21.3.5 Sawfish窗口管理器 479 21.3.6 GNOME Control Center(GNOME控制中心) 482 21.3.7 使用GNOME文件管理器进行文件管理 483 21.4 KDE桌面管理器 484 21.4.1 登录和注销 484 21.4.2 KDE面板 485 21.4.3 新软件包的安装 488 21.4.4 K窗口管理器 490 21.4.5 KDE控制中心 492 21.4.6 使用KFM进行文件管理 493 21.5 Internet资源 495 小结 495 习题 496 附录A Linux的安装 498 附录B 命令字典 507 术语表 567 |
商品评论(0条)