|
捐赠?
Harley Hahn 个人主页
给 Harley 发送留言
来自 Harley Hahn 的 个人寄语
Unix 之书 主页
搜索
章节列表
目录
插图列表
各章...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
术语表
各附录...
A
B
C
D
E
F
G
H
命令 摘要...
• 按字母顺序
• 按类别
Unix-Linux 年表
互联网 资源
错误与 勘误
推荐语
教师 与学生 资料...
主页 与概述
练习 与答案
Unix 模范 课程与
课程大纲
教师用 PowerPoint 文件
|
详细目录 (Detailed Table of Contents)
| 第 1 章: |
|
Unix 简介 |
| | 为什么要使用 Unix? |
| | Unix 语言 |
| | 学习 Unix 的提示 |
| | 不知不觉中使用着 Unix 的人们 |
| | 知道自己在使用 Unix 的人们 |
| | 如何充分利用本书 |
| | 本书做出的假设 |
| | 本书不做的前提假设 |
| | 如何使用本书 |
| 第 2 章: |
|
什么是 Unix?什么是 Linux? |
| | 什么是操作系统? |
| | 什么是内核? |
| | Unix = 内核 + 实用工具 |
| | "Unix" 曾经是一个具体的名字 |
| | "Unix" 如今是一个通用的名字 |
| | 自由软件基金会 |
| | 《GNU 宣言》节选 |
| | GPL 与开源软件 |
| | 20 世纪 70 年代的 Unix:从贝尔实验室到伯克利 |
| | 20 世纪 80 年代的 Unix:BSD 与 System V |
| | 1991 年的 Unix:等待... |
| | ...等待意中人,Linus Torvalds |
| | Linux 发行版 |
| | BSD 发行版 |
| | 你应该使用哪一种 Unix? |
| | 如何获得 Linux 或 FreeBSD? |
| | 什么是 Unix?什么是 Linux? |
| 第 3 章: |
|
Unix 连接 |
| | 人、机器与外星人 |
| | 从前,计算机贵得离谱 |
| | 主机与终端 |
| | 终端室与终端服务器 |
| | 控制台 |
| | Unix 连接 |
| | 没有控制台的主机 |
| | 客户端/服务器的关系 |
| | 按下按键时会发生什么? |
| | 字符终端与图形终端 |
| 第 4 章: |
|
开始使用 Unix |
| | 系统管理员 |
| | 用户名与密码 |
| | 登录(开始你的 Unix 工作) |
| | 开始工作:Shell 提示符 |
| | 注销(停止你的 Unix 工作):logout, exit, login |
| | 大写与小写 |
| | 一个 Unix 工作会话示例 |
| | 更改你的密码:passwd |
| | 如何选择密码;黑客与破解者 |
| | 检查是否有人用过你的 Unix 账户: last |
| | 用户名与用户 |
| | 超级用户的用户名: root |
| | 享受乐趣,同时注意计算安全 |
| 第 5 章: |
|
GUIs:图形用户界面 |
| | 什么是 GUI? |
| | X Window |
| | 谁在主管 X Window? |
| | 抽象的层次 |
| | 窗口管理器 |
| | 桌面环境 |
| | 抽象的层次:再论 |
| | Unix 公司是如何搞砸的 |
| | KDE 与 Gnome |
| | CDE 与总拥有成本 |
| | 选择桌面环境 |
| | 祖母机 |
| 第 6 章: |
|
Unix 工作环境 |
| | 一次同时做多件事:第一部分 |
| | 图形用户界面与命令行界面 |
| | 用图形用户界面登录与注销 |
| | 运行级别 |
| | Microsoft Windows 有运行级别吗? |
| | 学会使用图形用户界面 |
| | 鼠标与菜单 |
| | 窗口的调整、最小化、最大化与关闭 |
| | 控制焦点:任务切换 |
| | 多桌面 / 工作区 |
| | 终端窗口 |
| | 虚拟控制台 |
| | 唯一的那个控制台 |
| | 选择与插入 |
| | 复制与粘贴 |
| | 以超级用户身份工作: su |
| | 以超级用户身份输入单条命令:sudo |
| | 配置文件 |
| | 查看配置文件的内容 |
| | 关机与重启:init, reboot, shutdown |
| | 系统启动或停止时会发生什么?dmesg |
| | 一次同时做多件事:第二部分 |
| 第 7 章: |
|
在 Unix 中使用键盘 |
| | 最早的 Unix 终端 |
| | 电传打字机与 Unix 文化 |
| | Termcap、Terminfo 与 curses |
| | Unix 如何知道你用的是什么类型的终端? |
| | 修饰键;<Ctrl> 键 |
| | Unix 的键盘信号 |
| | 打字时使用的信号:erase、werase、kill |
| | <Backspace> 与 <Delete> 的古怪之处 |
| | 神秘的 ^H 事件 |
| | 停止程序:intr |
| | 停止程序的另一种方式:quit |
| | 暂停显示:stop、start |
| | 文件结束信号:eof |
| | Shell 与 eof 信号 |
| | Bash:捕获 eof 信号 |
| | Korn Shell:捕获 eof 信号 |
| | C-Shell:捕获 eof 信号 |
| | 显示键位映射:stty -a |
| | 更改键位映射:stty |
| | 命令行编辑 |
| | Return 与 Linefeed |
| | Newline 的重要性 |
| | ^J 的一个重要用途:stty sane、reset |
| | 程序员与公主的寓言 |
| 第 8 章: |
|
立即可用的程序 |
| | 在你的系统上找到程序:which、type、whence |
| | 怎样停止一个程序? |
| | 显示时间和日期:date |
| | 显示日历:cal |
| | Unix 的提醒服务:calendar |
| | 关于你系统的信息:uptime、hostname、uname |
| | 关于你自己的信息:whoami、quota |
| | 关于其他用户的信息:users、who、w |
| | 临时锁定你的终端:lock |
| | 让 Unix 提醒你什么时候该走:leave |
| | 一个内置计算器:bc |
| | 用 bc 做计算 |
| | 在 bc 中使用变量 |
| | 用 bc 使用不同的进制 |
| | 逆波兰表示法 |
| | 基于栈的计算器:dc |
| 第 9 章: |
|
文档: Unix 手册与 Info |
| | Unix 的自学传统 |
| | RTFM |
| | 什么是 Unix 手册?man |
| | 手册页 |
| | 显示手册页 |
| | 两种实用的手册页技巧 |
| | man 的替代选择:xman 与 Web |
| | Unix 手册的组织方式 |
| | 使用 man 命令时指定节号 |
| | 手册页的引用方式 |
| | 手册页的格式 |
| | 快速了解命令功能的简便方法:whatis |
| | 搜索命令:apropos |
| | Foo、Bar 与 Foobar |
| | Info 系统 |
| | Info 与树 |
| | 启动 Info:info |
| | 了解 Info |
| | 阅读 Info 文件 |
| | 在节点之间跳转 |
| 第 10 章: |
|
命令语法 |
| | Unix 的自学传统 |
| | 一次输入多条命令 |
| | 输入命令时会发生什么? |
| | 命令语法 |
| | 选项 |
| | 单横线选项与双横线选项 |
| | 参数 |
| | 空白符 |
| | 一个或多个;零个或多个 |
| | 命令的形式化描述:语法 |
| | 从 Unix 手册中学习命令语法 |
| | 这么多选项怎么学得完? |
| 第 11 章: |
|
Shell |
| | 什么是 Shell? |
| | Bourne Shell 家族:sh, ksh, bash |
| | C-Shell 家族:csh, tcsh |
| | 你应该使用哪个 Shell? |
| | 临时更改你的 Shell |
| | 密码文件;更改你的登录 Shell:chsh |
| 第 12 章: |
|
使用 Shell:变量与选项 |
| | 交互式与非交互式 Shell |
| | 环境、进程与变量 |
| | 环境变量与 Shell 变量 |
| | 显示环境变量:env, printenv |
| | 显示 Shell 变量:set |
| | 显示并使用变量的值:echo, print |
| | Bourne Shell 家族:使用变量:export, unset |
| | C-Shell 家族:使用变量:setenv, unsetenv, set, unset |
| | Shell 选项:set -o, set +o |
| | 显示 Shell 选项 |
| | 机器可读,人可读 |
| 第 13 章: |
|
使用 Shell:命令与定制 |
| | 元字符 |
| | 引用与转义 |
| | 强引用与弱引用 |
| | Shell 内置的命令:type |
| | 了解内置命令 |
| | 外部命令与搜索路径 |
| | 修改你的搜索路径 |
| | 黑客如何利用搜索路径 |
| | Shell 提示符 |
| | 修改 Shell 提示符 |
| | 使用变量的值 |
| | 引用变量时该用哪种引号 |
| | 使用转义字符的特殊代码 |
| | 命令替换 |
| | 键入命令并做出修改 |
| | 历史列表:fc、history |
| | 历史列表:设置大小 |
| | 历史列表示例:避免删错文件 |
| | 在 Shell 提示符中显示事件编号与工作目录 |
| | 自动补全 |
| | 自动补全:超出基本用法 |
| | 用自动补全获取乐趣与实惠 |
| | 命令行编辑:bindkey |
| | 别名:alias、unalias |
| | 别名示例:避免删错文件 |
| | 别名示例:复用历史列表中的命令 |
| | 别名示例:在 Shell 提示符中显示工作目录名 |
| | 暂时停用别名 |
| 第 14 章: |
|
使用 Shell:初始化文件 |
| | 初始化文件与注销文件 |
| | 初始化文件与注销文件的名称 |
| | 点文件与 rc 文件 |
| | 使用一个简单的文本编辑器 |
| | 登录 Shell 与非登录 Shell |
| | 初始化文件何时被执行? |
| | Shell 初始化文件小史 |
| | 你的初始化文件里该放什么 |
| | 显示、创建和编辑你的初始化文件 |
| | Shell 脚本中的注释 |
| | Bourne Shell 家族:初始化文件示例 |
| | C-Shell 家族:初始化文件示例 |
| 第 15 章: |
|
标准输入/输出、重定向与管道 |
| | Unix 哲学 |
| | 新的 Unix 哲学 |
| | 标准输入、标准输出与标准错误 |
| | 重定向标准输出 |
| | 防止重定向替换或创建文件 |
| | 重定向标准输入 |
| | 文件描述符;用 Bourne Shell 一族重定向标准错误 |
| | 子 Shell |
| | 用 C-Shell 一族重定向标准错误 |
| | 合并标准输出与标准错误 |
| | 丢弃输出 |
| | 重定向:小结与动手实验 |
| | 管道线 |
| | 拆分管道线:tee |
| | 管道线的重要性 |
| | 条件执行 |
| 第 16 章: |
|
过滤器:入门与基本操作 |
| | 命令与选项的变体 |
| | 过滤器 |
| | 你该自己编写过滤器吗? |
| | 解决问题的过程 |
| | 最简单的过滤器:cat |
| | 增强过滤器的功能 |
| | 最实用的过滤器一览 |
| | 合并文件:cat |
| | 拆分文件:split |
| | 合并文件并倒序排列行:tac |
| | 颠倒字符顺序:rev |
| | 选取数据开头或结尾的若干行:head、tail |
| | 删除数据列:colrm |
| 第 17 章: |
|
过滤器:比较与提取 |
| | 比较文件 |
| | 比较任意两个文件: cmp |
| | 比较已排序的文本文件: comm |
| | 比较未排序的文本文件: diff |
| | 配合 diff 使用的选项 |
| | 比较文件时的输出格式:diff, sdiff |
| | 差异与补丁 |
| | 提取数据列: cut |
| | 记录、字段与分隔符;提取数据字段: cut |
| | 合并数据列: paste |
| 第 18 章: |
|
过滤器:计数与格式化 |
| | 创建行号:nl |
| | 统计行、单词与字符:wc |
| | Unix 如何使用制表符 |
| | 查看制表符与空格 |
| | 把制表符改为空格:expand |
| | 把空格改为制表符:unexpand |
| | 格式化行:fold |
| | 80 字符一行 |
| | 格式化段落:fmt |
| | 打印的旧日时光 |
| | 把文本格式化成分页:pr |
| | 把文本格式化成多栏:pr |
| 第 19 章: |
|
过滤器:选择、排序、 合并与修改 |
| | 选择包含特定模式的行:grep |
| | grep 最重要的几个选项 |
| | grep 的变体:fgrep、egrep |
| | 选择以特定模式开头的行:look |
| | 什么时候用 look,什么时候用 grep? |
| | 找出所有以特定模式开头的词:look |
| | 给数据排序:sort |
| | 控制数据排序的依据:sort -dfn |
| | 检查数据是否已排序:sort -c |
| | ASCII 码;排序序列 |
| | 区域设置与排序序列 |
| | 查找重复行:uniq |
| | 合并两个文件中已排序的数据:join |
| | 从偏序关系推出全序关系:tsort |
| | 在二进制文件中查找字符字符串:strings |
| | 转换字符:tr |
| | 转换不可打印的字符 |
| | 转换字符:高级话题 |
| | 非交互式文本编辑:sed |
| | 用 sed 做替换 |
| | 让 sed 只处理指定的行 |
| | 使用很长的 sed 命令 |
| 第 20 章: |
|
正则表达式 |
| | 正则表达式简介 |
| | 正则表达式起源 |
| | 基本正则表达式与扩展正则表达式 |
| | 匹配行与单词 |
| | 匹配字符;字符类 |
| | 预定义字符类;范围 |
| | 区域设置与排序序列: locale;ASCII 码 |
| | 使用范围与预定义字符类 |
| | 重复操作符 |
| | 如何理解复杂的正则表达式 |
| | 解答三个有趣的谜题;字典文件 |
| 第 21 章: |
|
显示文件 |
| | 用于显示文件的程序概览 |
| | less 简介:启动、退出与帮助 |
| | less 与 more 的故事 |
| | 使用 less |
| | 用 less 在文件中搜索 |
| | 原始模式与规范模式 |
| | 配合 less 使用的选项 |
| | 何时用 less,何时用 cat |
| | 用环境变量定制你的分页器 |
| | 用 less 显示多个文件 |
| | 用 more 显示文件 |
| | 显示文件的开头:head |
| | 显示文件的结尾:tail |
| | 监视不断增长的文件尾部:tail -f |
| | 二进制、八进制与十六进制 |
| | 读写二进制、八进制与十六进制 |
| | 为什么我们用十六进制而不是八进制 |
| | 显示二进制文件:hexdump、od |
| | 为什么这么多计算机术语来自数学? |
| 第 22 章: |
|
vi 文本编辑器 |
| | 为什么 vi 如此重要? |
| | vi 简史 |
| | Vim:vi 的替代方案 |
| | 启动 vi |
| | 启动 Vim:vim |
| | 命令模式与输入模式 |
| | 知道自己处于哪种模式 |
| | 以只读编辑器方式启动 vi:view、vi -R |
| | 系统故障后恢复数据 |
| | 退出 vi |
| | vi 如何使用屏幕 |
| | 使用 vi 和 ex 命令 |
| | 学习 vi 命令的策略 |
| | 创建练习文件 |
| | 移动光标 |
| | 在编辑缓冲区中移动 |
| | 跳回先前的位置 |
| | 搜索模式 |
| | 使用行号 |
| | 插入文本 |
| | 修改文本 |
| | 替换文本 |
| | 删除文本 |
| | 撤销或重复一次更改 |
| | 找回删除的内容 |
| | 移动文本 |
| | 复制文本 |
| | 改变字母的大小写 |
| | 设置选项 |
| | 显示选项 |
| | 在输入时自动折行 |
| | 折断行与合并行 |
| | 复制与移动行 |
| | 输入 Shell 命令 |
| | 把文件中的数据插入编辑缓冲区 |
| | 把 Shell 命令的输出插入编辑缓冲区 |
| | 用程序处理数据:fmt |
| | 把数据写入文件 |
| | 切换到新文件 |
| | 使用缩写 |
| | 宏 |
| | 初始化文件:.exrc、.vimrc |
| | 使用两个初始化文件 |
| | 学习使用 Vim |
| | 总有个中遗憾 |
| 第 23 章: |
|
Unix 文件系统 |
| | 什么是文件? |
| | 文件的类型 |
| | 目录与子目录 |
| | 特殊文件 |
| | 用于硬件的特殊文件 |
| | 用于终端的特殊文件:tty |
| | 用于伪设备的特殊文件 |
| | 命名管道:mkfifo |
| | Proc 文件 |
| | 树形文件系统;文件系统层次标准 |
| | 根目录;子目录 |
| | 挂载文件系统:mount, umount |
| | 根目录巡礼 |
| | /usr 目录巡礼 |
| | 为什么存放程序的目录不止一个? |
| | 主目录 |
| | 虚拟文件系统 |
| 第 24 章: |
|
处理目录 |
| | 路径名与你的工作目录 |
| | 绝对路径名与相对路径名 |
| | 三个方便的路径名缩写:.. . ~ |
| | 在目录树中移动:cd, pwd |
| | 创建新目录:mkdir |
| | 删除目录:rmdir |
| | 移动或重命名目录:mv |
| | 使用目录栈:pushd, popd, dirs |
| | 最重要的程序:ls |
| | 列出目录内容:ls -CrR1 |
| | 排序序列、区域设置与 ls |
| | 辨别文件类型(一):ls -F |
| | 辨别文件类型(二):ls --color |
| | 辨别文件类型(三):file |
| | 跟踪你的磁盘空间使用情况:ls -hs, du, df, quota |
| | 文件有多大?块与分配单元:dumpe2fs |
| | 用通配符做路径名展开 |
| | 点文件(隐藏文件):ls -a |
| | 长目录列表:ls -dhltu |
| | 使用 ls 的实用别名 |
| | 显示目录树:tree |
| 第 25 章: |
|
文件操作 |
| | 创建文件: touch |
| | 为文件命名 |
| | 复制文件: cp |
| | 把文件复制到别的目录: cp |
| | 把一个目录复制到另一个目录: cp -r |
| | 移动文件: mv |
| | 重命名文件或目录: mv |
| | 删除文件: rm |
| | 如何避免删错文件: rm -if |
| | 删除整棵目录树: rm -r |
| | 已删除的文件有可能恢复吗? |
| | 文件权限 |
| | Setuid 权限 |
| | Unix 如何维护文件权限: id, groups |
| | 显示文件权限: ls -l |
| | 文件模式 |
| | 修改文件权限: chmod |
| | Unix 如何为新文件指派权限: umask |
| | 抹去文件的内容: shred |
| | 链接的概念: stat, ls -i |
| | 同一个文件的多个链接 |
| | 创建新链接: ln |
| | 基本文件命令是如何工作的 |
| | 符号链接: ln -s |
| | 在目录上使用符号链接 |
| | 查找与某个 Unix 命令相关的文件: whereis |
| | 通过搜索数据库查找文件: locate |
| | 通过搜索目录树查找文件: find |
| | find 命令:路径 |
| | find 命令:测试 |
| | find 命令:用 ! 运算符对测试取反 |
| | find 命令:处理文件权限错误消息 |
| | find 命令:动作 |
| | 处理找到的文件: xargs |
| 第 26 章: |
|
进程与作业控制 |
| | 内核如何管理进程 |
| | 分叉不止,至死方休 |
| | 孤儿进程与被遗弃的进程 |
| | 区分父进程与子进程 |
| | 最初的第一个进程: init |
| | 前台进程与后台进程 |
| | 制造延迟: sleep |
| | 作业控制 |
| | 在后台运行作业 |
| | 挂起一个作业: fg |
| | 挂起一个 Shell: suspend |
| | 作业控制与多窗口 |
| | 显示你的作业列表: jobs |
| | 把作业移到前台: fg |
| | 把作业移到后台: bg |
| | 学会使用 ps 程序 |
| | ps 程序:基本技能 |
| | ps 程序:选择选项 |
| | ps 程序:状态 |
| | 监视系统进程: top, prstat |
| | 显示进程树: pstree, ptree |
| | 思考 Unix 如何组织进程与文件: fuser |
| | 终止一个进程: kill |
| | 向进程发送信号: kill |
| | 设置进程的优先级: nice |
| | 改变现有进程的优先级: renice |
| | 守护进程 |
| | 上一章的结尾 |
|