第 一 部 分 介 绍 Linux

第 1 章 Linux 操 作 系 统

Linux 是 用 于 像 IBM 兼 容 机 等 带 有 386,486 或 奔 腾 微 处 理 器 的 微 机 上 的 一种 操 作 系 统 ,它 也 有 针 对 DEC A lpha 系 统 ,Macintosh 系 统 ,及 Sun 系 统 的 多 种 版本 。 Linux 是 在 90 年 代 早 期 ,被 Linus Torvald 和 其 它 遍 布 世 界 各 地 的 编 程 人 员共 同 开 发 的 ,作 为 一 种 操 作 系 统 , 它 完 成 了 像 DOS 或 W indows 的 同 样 功 能 。然 而 ,Linux 更 以 灵 活 性 及 有 效 性 而 著 称 。 大 部 分 的 微 机 操 作 系 统 , 像 DOS , 一 直都 是 在 受 限 的 微 机 上 开 发 的 , 仅 最 近 才 变 得 能 在 更 多 种 类 的 机 器 上 使 用 。 像 这 样的 操 作 系 统 需 要 不 断 地 升 级 以 适 应 微 机 硬 件 的 发 展 , 而 Linux 的 开 发 却 是 不 同的 。Linux 是 几 十 年 来 被 用 在 主 机 及 单 机 上 的 ,现 在 已 成 为 工 作 站 首 选 系 统 的 Unix 的 微 机 版 本 。 Linux 使 得 Unix 的 快 速 , 高 效 和 灵 活 性 能 够 用 于 你 的 微 机 , 并 能 更好 地 利 用 个 人 电 脑 所 提 供 的 资 源 。

Linux 以 一 个 好 的 价 钱 完 成 了 一 切 ,它 是 免 费 的 。 不 像 商 用 的 Unix 操 作 系 统 ,

它 是 具 体 由 Free Software Fundation 在 公 共 许 可 下 免 费 分 配 的 ,任 何 人 都 可 以免 费 来 获 得 它 。 Linux 是 有 版 权 的 ,并 不 是 一 个 公 共 的 财 产 ,然 而 ,GNU 公 共 许 可和 公 共 财 产 几 乎 是 同 样 的 效 果 。 这 个 使 用 许 可 使 得 Linux 保 持 了 免 费 , 同 时 又 具有 标 准 化 。 仅 有 一 种 Linux 标 准 。

Linux 是 免 费 的 事 实 有 时 给 人 一 种 误 解 :Linux 不 完 全 是 一 个 专 业 的 操 作 系 统 , 而 事 实 上 ,Linux 是 Unix 的 PC 版 本 ,正 确 地 评 价 Linux ,你 应 该 了 解 Unix 操 作 系统 发 展 的 特 殊 环 境 ,Unix 不 像 大 部 分 其 它 操 作 系 统 。 是 在 一 个 科 研 和 学 术 的 环 境下 开 发 出 来 。 在 大 学 和 实 验 室 里 ,Unix 是 可 选 择 的 系 统 ,在 过 去 几 十 年 里 ,Unix 的发 展 和 整 个 计 算 机 及 通 讯 的 革 命 相 一 致 。 计 算 机 专 业 人 员 经 常 用 Unix 开 发 新 的计 算 机 科 技 。例 如 为 Internet 的 开 发 。尽 管 它 是 一 个 高 科 技 的 系 统 , 从 一 开 始 ,Unix 就 被 设 计 成 非 常 灵 活 的 系 统 。 Unix 系 统 本 身 可 以 被 容 易 地 修 改 产 生 不 同 的 版 本 。事 实 上 , 许 多 厂 商 坚 持 Unix 的 商 业 版 本 ,IBM,SUN 和 HP 都 销 售 并 坚 持 它 们 自 己的 Unix 版 本 ,满 足 他 们 自 己 的 特 殊 需 要 。 Un ix 系 统 在 设 计 上 的 可 继 承 的 灵 活 性从 不 减 弱 它 的 质 量 , 事 实 上 , 正 是 它 的 多 重 版 本 , 使 它 可 以 适 应 任 何 实 用 的 环境 ,Linux 就 是 在 这 种 情 况 下 开 发 出 来 的 ,从 这 个 意 义 上 说 ,Linux 是 Unix 的 另 一 版本 - 为 PC 的 版 本 。 由 计 算 机 专 业 人 员 在 科 研 环 境 下 的 开 发 ,反 映 了 Unix 版 本 通常 被 开 发 的 方 法 ,Linux 具 有 公 共 权 限 并 且 是 免 费 的 事 实 反 映 了 在 科 研 机 构 的 开发 人 员 对 公 共 服 务 的 热 心 支 持 。

作 为 对 Linux 的 介 绍 ,这 章 讨 论 了 Linux 作 为 一 种 操 作 系 统 ,Linux 和 Unix 的历 史 和 Linux 的 整 个 设 计 过 程 。 这 章 也 介 绍 了 如 何 更 好 地 使 用 本 书 。 人 们 经 常带 着 不 同 背 景 开 始 学 Linux ,一 些 特 点 看 上 去 十 分 熟 悉 , 而 另 一 些 会 有 些 不 同 ,无 论你 的 背 景 如 何 ,本 书 通 过 严 谨 的 结 构 提 供 给 读 者 对 Linux 操 作 系 统 的 清 楚 理 解 ,从

而 体 现 出 Linux 的 各 种 不 同 特 点 。

操 作 系 统 和 Linux

  • 个 操 作 系 统 是 为 用 户 管 理 硬 件 和 软 件 的 一 个 程 序 , 操 作 系 统 最 初 是 设 计 成执 行 重 复 管 理 硬 件 的 任 务 。 这 些 任 务 集 中 在 文 件 管 理 , 运 行 程 序 和 从 用 户 得 到 命令 。 你 通 过 一 个 用 户 界 面 和 操 作 系 统 相 联 系 ,这 个 用 户 界 面 允 许 操 作 系 统 接 收 来自 用 户 的 中 断 指 令 ,你 只 需 要 发 送 一 个 指 令 给 操 作 系 统 ,就 可 完 成 像 阅 读 一 个 文 件或 打 印 一 份 文 件 等 的 任 务 。 一 个 操 作 系 统 的 用 户 界 面 可 以 用 只 输 入 命 令 行 一 样简 单 ,也 可 以 用 选 择 菜 单 和 图 标 一 样 复 杂 。

  • 个 操 作 系 统 也 管 理 软 件 应 用 程 序 ,去 执 行 像 编 辑 文 件

    或 计 算 等 不 同 的 任 务 ,

你 需 要 专 门 的 应 用 程 序 。 一 个 编 辑 器 是 一 个 应 用 程 序 的 例 子 。 一 个 编 辑 器 允 许你 去 编 辑 一 个 文 件 ,改 变 或 增 加 新 的 文 本 。 这 个 编 辑 器 本 身 是 一 个 由 计 算 机 可 执行 的 指 令 所 组 成 的 程 序 。 为 了 应 用 这 个 程 序 ,必 须 把 它 装 进 内 存 ,然 后 它 的 指 令 被执 行 。 操 作 系 统 控 制 了 所 有 程 序 的 装 入 和 执 行 ,包 括 所 有 应 用 程 序 。 当 你 打 算 用一 个 编 辑 器 时 ,只 要 简 单 地 指 示 操 作 系 统 去 装 入 编 程 器 应 用 程 序 并 执 行 它 。

文 件 管 理 , 程 序 管 理 和 用 户 交 互 是 所 有 操 作 系 统 传 统 的 共 性 。 Linux 像 所 有Unix 的 版 本 一 样 , 增 加 了 两 个 特 点 , 是 一 个 多 用 户 和 多 任 务 的 系 统 。 作 为 一 个 多任 务 系 统 ,你 可 以 要 求 系 统 同 时 执 行 多 个 任 务 ,例 如 , 当 其 它 文 件 被 打 印 时 , 你 可 以编 辑 另 一 个 文 件 , 你 编 辑 之 前 , 不 用 等 打 印 工 作 被 完 成 。 作 为 一 个 多 用 户 系 统 , 几个 用 户 可 以 同 时 注 册 在 一 个 系 统 中 ,每 个 用 户 通 过 终 端 和 系 统 相 连 。

操 作 系 统 最 初 是 为 有 效 地 支 持 硬 件 而 设 计 的 , 当 计 算 机 首 先 发 展 了 , 他 们 可 能会 受 操 作 系 统 的 限 制 。 操 作 系 统 必 须 能 实 现 计 算 机 的 绝 大 部 分 资 源 ,所 以 操 作 系统 是 为 硬 件 , 并 非 为 用 户 设 计 的 , 操 作 系 统 倾 向 于 呆 板 , 不 灵 活 , 使 用 户 必 须 适 应 硬件 效 率 的 要 求 。

而 Linux, 因 为 来 源 于 Unix ,所 以 被 设 计 的 很 灵 活 ,做 为 Unix 的 一 个 版 本 ,Linux 和 Unix 享 有 同 样 的 灵 活 性 。 其 灵 活 性 来 源 于 Un ix 的 早 期 设 计 。 在 六 十 年 代 末和 七 十 年 代 初 Unix 操 作 系 统 被 工 作 在 AT&T 贝 尔 实 验 室 的 Ken Thompson 开发 出 来 。 它 结 合 了 许 多 操 作 系 统 设 计 方 面 的 新 发 展 , 开 始 ,Un ix 被 设 计 成 为 研 究人 员 的 操 作 系 统 ,一 个 主 要 目 标 是 去 产 生 一 个 能 支 持 科 研 人 员 变 换 要 求 的 系 统 。为 了 做 到 这 一 点 ,Thompson 必 须 设 计 能 处 理 许 多 不 同 种 类 任 务 的 操 作 系 统 ,灵 活性 变 得 比 硬 件 效 率 更 重 要 。 像 Unix 一 样 ,Linux 已 经 能 处 理 用 户 可 能 面 临 的 各 种任 务 。

这 个 灵 活 性 允 许 Linux 成 为 和 用 户 相 通 的 操 作 系 统 ,用 户 不 受 与 操 作 系 统 呆板 联 系 的 限 制 。 取 而 代 之 , 操 作 系 统 成 为 了 提 供 用 户 能 利 用 的 一 套 高 效 工 具 ,面 向用 户 的 科 学 含 义 是 你 能 对 系 统 配 置 或 编 程 以 满 足 你 的 特 殊 需 要 。 用 Linux, 操 作系 统 变 成 了 一 种 操 作 环 境 。

Linux 和 Unix 的 历 史

做 为 Unix 的 一 个 版 本 ,Linux 的 历 史 自 然 起 始 于 Un ix,60 年 代 末 期 。 关 于 新的 操 作 系 统 技 术 有 一 个 共 同 的 努 力 。 在 1968 年 ,一 些 来 自 通 用 电 气 公 司 , 贝 尔 实

验 室 和 麻 省 理 工 学 院 的 研 究 人 员 开 发 一 个 名 叫 Multics 的 特 殊 操 作 系 统 的 研 究 项目 。 Mu lticsd 在 多 任 务 文 件 管 理 和 用 户 连 接 中 综 合 了 许 多 新 概 念 。 在 1970 年AT&T 的 贝 尔 实 验 室 研 究 人 员 Dennis Ritchie 和 Ken Tompson, 在 采 用 很 多Multics 特 点 的 基 础 上 开 发 了 Unix 操 作 系 统 。 它 满 足 了 系 统 对 科 研 环 境 的 要 求 , 使 它 运 行 在 小 型 机 上 , 从 它 的 产 生 开 始 ,Unix 是 一 个 有 价 值 的 高 效 多 用 户 和 多 任务 的 操 作 系 统 。

Unix 系 统 在 贝 尔 实 验 室 开 始 变 得 流 行 , 并 且 越 来 越 多 的 研 究 人 员 开 始 使 用

它 ,1973 年 ,Dennis Ritchie 和 Ken Tompson 一 起 为 又 用 C 语 言 为 Un ix 编 写 了程 序 代 码 。 Dennis Ritchie 贝 尔 实 验 室 的 后 起 之 秀 , 开 发 了 C 编 程 语 言 作 为 程 序开 发 的 一 种 灵 活 工 具 ,C 语 言 的 优 点 之 一 是 它 能 够 通 过 一 套 编 程 命 令 直 接 访 问 一台 计 算 机 的 硬 件 结 构 。 到 此 为 止 , 一 个 操 作 系 统 必 须 为 每 一 类 计 算 机 上 用 硬 件 为基 础 的 汇 编 语 言 ,专 门 改 写 C 语 言 允 许 Dennis Ritchie 和 Ken Tompson 写 了 能用 C 编 译 器 在 不 同 计 算 机 上 编 译 的 Unix 操 作 系 统 的 统 一 版 本 ,在 效 率 方 面 ,Un ix 操 作 系 统 变 成 了 可 移 植 的 操 作 系 统 , 能 够 不 必 重 新 编 程 运 行 在 各 种 不 同 的 计 算 机上 。

Unix 从 满 足 个 人 的 需 求 设 计 开 始 ,逐 步 成 长 为 由 许 多 不 同 开 发 商 所 支 持 的 标准 软 件 产 品 如 :Novell 和 IBM ,最 初 ,Unix 被 当 成 科 研 产 品 。 第 一 个 Unix 版 本 是免 费 由 许 多 知 名 大 学 的 计 算 机 系 使 用 的 。 在 1972 年 贝 尔 实 验 室 开 始 发 放 商 业版 本 并 且 给 不 同 的 用 户 授 权 使 用 这 个 系 统 。 使 用 者 之 一 是 加 州 大 学 伯 克 莱 分 校的 计 算 机 系 。 伯 克 莱 给 系 统 增 加 了 许 多 新 的 特 点 , 后 来 成 为 了 标 准 。 1975 年 伯克 莱 由 下 属 部 门 BSD 发 行 了 自 己 的 Unix 版 本 。 Unix 的 BSD 版 本 成 为 AT&T 贝 尔 实 验 室 版 本 的 主 要 竟 争 者 。 而 其 它 的 被 独 立 开 发 出 的 Unix 版 本 也 开 始 萌

生 。

1980 年 微 软 公 司 开 发 了 叫 做 Xenix 的 Unix PC 版 本 。 AT&T 几 个 Unix 的

科 研 版 本 1983 年 , 它 们 发 行 了 第 一 个 商 业 版 本 。 名 叫 SYSTEM 3 后 来 被 成 为 对商 用 软 件 产 品 重 要 支 持 Systen v 所 代 替 。

同 时 Unix 的 BSD 版 本 不 断 发 展 ,在 70 年 代 末 期 ,BSD Unix 成 为 了 国 防 部 的高 科 技 研 究 机 构 所 使 用 的 科 研 项 目 的 基 础 ,其 结 果 , 伯 克 莱 发 行 了 一 个 叫 做 BSD Release 4.2 的 有 效 版 本 。

它 包 括 了 高 级 的 文 件 管 理 和 基 于 TCP/IP 网 络 协 议 的 网 络 特 点 。现在 ,TCP/IP 被 Internet 所 使 用 。 BSD Release 4.2 被 许 多 商 所 采 用 , 例 如 SUN M icrosystem s。

Unix 不 同 版 本 的 出 现 导 致 了 Unix 标 准 的 需 要 ,软 件 开 发 商 不 知 道 他 们 和 程序 运 行 有 哪 个 版 本 上 比 较 适 合 ,到 80 年 代 中 期 , 两 个 竞 争 的 标 准 出 现 了 。 一 个 是基 于 AT&T 的 Unix 版 本 ,另 一 个 是 BSD 版 本 。 在 今 天 的 书 店 里 你 能 发 现 分 别 适用 于 这 两 个 版 本 的 不 同 Unix 书 , 一 些 是 System V Unix, 另 一 些 集 中 在 BSD Unix 。

AT&T 建 立 了 一 个 叫 Unix 系 统 实 验 室 的 新 组 织 , 它 的 作 用 就 是 综 合 Unix 的不 同 版 本 ,集 中 开 发 一 个 标 准 系 统 ,1991 年 ,Un ix 系 统 实 验 室 综 合 了 所 有 System V release3, BSD release 4.3, SUN OS 和 Xenix 的 所 有 特 点 。 发 行 了 System V release 4. 为 了 与 System V release 4 竞 争 , 一 些 其 它 公 司 如 IBM 和 惠 普 建 立 了Open Software Foundation(OSF) 去 产 生 自 己 的 Unix 标 准 版 本 ,继 而 出 现 了 两个 标 准 商 业 版 本 OSF 版 本 和 System release 4 。 1993 年 ,AT&T 把 它 的 Unix 转 卖 给 NOVELL 公 司 。 Unix 系 统 实 验 室 成 为 了 Novell 的 Unix 系 统 小 组 的 一 部

分 。 Novell 发 行 了 基 于 System V release 4 的 自 己 的 Unix 版 本 叫 Unixware, 它可 以 和 Novell 公 司 的 Netware 系 统 相 联 。 SUN 公 司 已 经 把 System V release 4 融 进 了 它 的 SUN 系 统 发 行 了 Solaris 。 两 个 相 互 竞 争 的 Unix 使 用 的 图 形 用 户 界面 ,一 个 叫 Motif, 另 一 个 叫 Openlook 已 经 合 并 为 一 个 新 的 工 作 平 台 标 准 , 叫 做 共同 工 作 平 台 环 境 (CDE )。 通 过 不 断 发 展 ,Unix 保 留 下 来 一 个 大 的 能 有 效 运 行 在 工作 站 和 小 型 机 上 的 操 作 系 统 。 Unix 的 一 些 版 本 主 要 被 设 计 为 工 作 站 环 境 ,SunOS 主 要 是 为 SUN 工 作 站 开 发 的 。 AIX 是 为 IBM 工 作 站 开 发 的 , 然而 ,由 于 PC 变 得更 有 效 , 因 此 开 发 Unix 的 PC 版 本 就 开 始 了 。 Xenix 和 System V/386 是 为 IBM 及 其 兼 容 机 而 设 计 的 Unix 商 业 版 本 。AUX 是 运 行 在 Macintosh 下 的 Un ix 版 本 。Unix 固 有 的 可 移 植 性 使 它 几 乎 能 在 任 何 类 型 的 计 算 机 中 被 找 到 : 工 作 站 , 小 型 机或 者 大 型 机 。 固 有 的 可 移 植 性 使 得 产 生 Un ix 的 PC 版 本 成 为 可 能 。 Linux 是 专门 为 Intel 为 基 础 的 个 人 计 算 机 所 设 计 的 。它 起 源 于 荷 兰 赫 尔 辛 基 大 学 (HELSINKI ) 一 个 计 算 机 系 学 生 Linus Toyvald 的 个 人 研 究 项 目 。 那 时 , 学 生 们 使 用 一 个 强调 不 同 Unix 特 点 的 M inix 程 序 ,M inix 是由 Andrew Tannebaum 教 授 开 发 的 ,广泛 分 布 在 Internet 上 给 全 世 界 的 学 生 使 用 。 Linus 打 算 为 M inix 用 户 产 生 一 个 有效 的 Unix PC 版 本 。 他 称 它 为 Linux 。 1991 年 发 行 了 Linux 0.11 版 本 。 Linux 广 泛 分 布 于 Internet, 后 来 的 几 年 ,其 它 的 编 程 人 员 综 合 现 有 的 标 准 Unix 系 统 中出 现 的 大 部 分 应 用 程 序 和 特 点 修 改 并 增 加 了 它 的 内 容 。 所 有 主 要 的 窗 口 管 理 器已 和 Linux 有 了 接 口 ,Linux 有 所 有 的 Internet 工 具 ,像 ftp,telnet 和 SLIP ,它 也 有整 套 的 程 序 开 发 工 具 ,象 C++ 编 译 器 和 调 试 器 。 虽 然 拥 有 全 部 特 点 ,Linux 操 作 系统 保 持 了 小 ,稳 定 和 快 速 。 在 最 简 单 的 格 式 下 ,它 可 以 运 行 在 仅 4MB 的 内 存 。

尽 管 Linux 是 开 发 在 免 费 的 及 Internet 开 放 环 境 中 , 它 仍 具 有 商 业 Un ix 版 本

的 标 准 , 因 为 前 几 十 年 里 ,Unix 版 的 大 量 出 现 , 电 子 电 气 工 程 协 会 (IEEE )在 美 国 标准 化 协 会 (ANSI) 开 发 了 一 个 独 立 的 Unix 标 准 ,这 个 新 的 ANSI Unix 标 准 被 称 做为 计 算 机 环 境 的 可 移 植 性 操 作 系 统 界 面 (PSOIX )。 这 个 标 准 限 定 了 Unix 系 统 如何 进 行 操 作 ,像 系 统 调 用 有 了 专 门 的 详 述 。 PSOIX 限 制 所 有 Un ix 版 本 必 须 依 赖大 众 标 准 ,现 有 大 部 分 Un ix 和 流 行 版 本 都 是 顺 从 POSIX,Linux 从 一 开 始 就 是 遵循 POSIX 开 发 出 开 的 。

Linux 总 览

像 Unix 一 样 ,Linux 一 般 被 分 成 四 个 主 要 部 分 :内 核 ,Shell, 文 件 结 构 和 实 用 工具 。 内 核 是 运 行 程 序 和 管 理 像 磁 盘 和 打 印 机 等 硬 件 设 备 的 核 心 程 序 。 它 从 用 户那 里 收 到 命 令 并 把 命 令 送 给 内 核 去 执 行 。 文 件 结 构 是 文 件 放 在 磁 盘 等 存 贮 设 备上 的 组 织 方 法 。 文 件 以 目 录 的 形 式 被 组 织 每 个 目 录 可 能 包 含 许 多 子 目 录 , 其 中 有许 多 文 件 。

内 核 ,Shell 和 文 件 结 构 一 起 形 成 了 基 本 的 操 作 系 统 结 构 。 使 用 这 三 个 项 目 , 你 就 可 以 运 行 程 序 , 管 理 文 件 以 及 使 用 系 统 , 另外 ,Linux 还 有 被 称 为 实 用 工 具 的 软件 程 序 , 实 用 工 具 被 认 为 是 一 个 系 统 的 标 准 特 征 。 实 用 工 具 是 专 门 的 程 序 ,像 编 辑器 编 辑 器 交 互 程 序 , 执 行 标 准 的 计 算 操 作 等 , 你 甚 至 可 以 产 生 自 己 的 工 具 。

Shell: Bourne, Korn 和 C-Shell

Shell 提 供 了 用 户 和 内 核 的 界 面 , 它 可 被 描 绘 为 一 个 解 释 器 , 它 解 释 由 用 户 输入 的 命 令 并 送 他 们 到 内 核 , 内 核 界 面 是 非 常 简 单 的 ,通 常 你 输 入 一 个 命 令 然 后 按回 车 键 就 可 完 成 ,你 输 入 命 令 的 一 行 经 常 被 指 定 为 命 令 行 ,你 将 发 现 命 令 行 能 变 得十 分 复 杂 。

代 替 命 令 行 界 面 ,Linux 提 供 了 叫 做 X-Windows 的 图 形 用 户 界 面 (GUI) 。 它有 很 多 供 你 使 用 的 窗 口 管 理 器 ,窗 口 管 理 器 的 操 作 就 像 W indows 和 Mac GUIS, 你 有 窗 口 图 标 和 菜 单 ,所 有 的 管 理 通 过 鼠 标 控 制 。 两 个 流 行 的 窗 口 管 理 器 是 Free Virtual 窗 口 管 理 器 (fvwm )和 Open Look 窗 口 管 理 器 (olwm),Motif 窗 口 管 理 器 也可 获 得 , 但 Motif 是 一 个 有 产 权 的 程 序 , 必 须 分 开 购 买 , 另 外 窗 口 管 理 器 ,你 必 须 使用 文 件 和 程 序 管 理 器 , 有 各 种 文 件 和 程 序 管 理 器 是 可 获 得 的 , 例 如 OpenLinux 提供 了 一 个 高 级 的 文 件 管 理 器 和 程 序 管 理 器 ,可 使 用 图 标 栏 和 目 录 夹 。

尽 管 一 个 窗 口 管 理 器 是 一 个 灵 活 的 管 理 界 面 , 它 真 的 只 是 一 个 Shell 的 界 面 , 窗 口 管 理 可 通 过 它 收 到 的 命 令 到 达 Shell, 实 际 是 Shell 解 释 这 个 命 令 并 送 它 到 内核 。 图 1-1 表 明 了 Shell 到 内 核 和 其 它 系 统 成 员 的 关 系 。

第 一 部 分 介 绍 Linux - 图1

图 1-1 内核 ,Shell 和用户界面

Shell 不 仅 解 释 命 令 ,它 还 提 供 了 一 个 你 可 以 配 置 和 编 程 的 环 境 。 Shell 也有 自 己 的 编 程 语 言 , 它 允 许 你 通 过 复 杂 的 方 法 去 编 写 Linux 命 令 的 程 序 。 Shell

编 程 语 言 具 有 普 通 的 编 程 语 言 很 多 特 点 , 如 循 环 结 构 和 分 支 控 制 结 构 ,你 甚 至 可 以产 生 和 应 用 程 序 一 样 有 效 的 Shell 程 序 。

每 个 Linux 系 统 的 用 户 有 他 或 她 自 己 的 用 户 界 面 或 Shell, 能 满 足 他 们 自 己 专门 的 Shell 需 要 ,从 这 个 意 义 上 说 ,一 个 用 户 的 Shell 不 仅 是 一 个 用 户 控 制 的 操 作环 境 。

几 年 以 来 , 几 种 不 同 的 Shell 被 开 发 出 来 , 当 前 有 三 种 主 要 的Shell:Bourne,Korn ,和 C-Shell, 其 中 Bourne Shell 是 贝 尔 实 验 室 开 发 的 ,C-Shell 是 SUN 公 司 Shell 的 BSD 版 本 ,Korn shell 是 Bourne Shell 的 进 一 步 增 强 。 现在 的 Unix 版 本 , 包 括 Linux 在 内 , 都 包 含 了 三 个 Shell, 允 许 你 去 选 择 所 喜 欢 的Shell,Linux 使 用 这 些 增 强 的 公 共 版 本 。 Bourne Again Shell, TC-Shell 和 Public Doma in Korn Shell 。 当 你 开 始 Linux 系 统 时 ,系 统 设 置 在 Bourne Again Shell 下 , 从 那 里 , 你 能 够 转 换 到 其 他 Shell 。

文 件 结 构 :目 录 和 文 件

在 Linux 系 统 中 ,像 DOS 一 样 ,文 件 由 目 录 结 构 来 组 织 。 然 而 , 不像 DOS 的是 ,你 有 更 多 的 灵 活 性 去 控 制 你 的 文 件 ,整 个 Linux 文 件 系 统 是 一 套 大 的 相 互 关 联的 目 录 。 每 个 目 录 里 面 都 包 含 文 件 ,一 些 目 录 是 系 统 保 留 的 标 准 目 录 ,你 能 为 自 己的 文 件 产 生 自 己 的 目 录 , 也 可 从 容 易 地 把 一 个 目 录 下 的 文 件 移 至 另 一 目 录 下 ,你 甚至 能 移 动 整 个 目 录 并 和 系 统 中 的 其 他 用 户 共 享 目 录 和 文 件 。 用 Linux, 你 可 以 设置 目 录 和 文 件 的 权 限 ,以 便 允 许 和 拒 绝 其 他 人 访 问 他 们 。

实 际 上 ,每 个 用 户 的 目 录 最 终 和 其 他 用 户 的 目 录 相 连 。 目 录 是 以 根 目 录 开 始

被 组 织 的 等 级 树 形 结 构 。 所 有 其 他 的 目 录 最 终 是 由 第 一 个 根 目 录 派 生 出 来 。 图1-2 表 面 了 一 个 树 形 等 级 结 构 的 例 子 。 你 可 以 浏 览 整 个 系 统 , 进 入 任 何 可 以 对 你开 放 的 目 录 。 文 件 结 构 的 相 互 关 联 性 使 分 享 数 据 变 得 容 易 , 几 个 用 户 可 以 访 问 同一 个 文 件 。

根 目 录 是 一 个 当 你 第 一 次 设 置 你 的 Linux 系 统 时 所 使 用 的 特 殊 目 录 Linux 是一 个 多 用 户 系 统 。 操 作 系 统 本 身 的 驻 留 程 序 存 放 在 以 根 目 录 开 始 的 专 用 目 录 中 , 有 时 被 指 定 为 系 统 目 录 , 在 图 1-2 中 那 些 根 目 录 下 的 目 录 就 是 系 统 目 录 :man,bin 和 user 。 其 他 的 系 统 目 录 将 在 第 5 章 中 讨 论 。

第 一 部 分 介 绍 Linux - 图2

图 1-2Linux 的文件和目录结构

实 用 工 具 :编 辑 器 、 过 滤 器 和 交 互 程 序

Linux 包 含 大 量 的 工 具 。 一 些 工 具 执 行 简 单 的 操 作 , 另 一 些 是 带 有 他 们 自 己整 套 命 令 的 复 杂 程 序 , 从 一 开 始 这 些 使 用 工 具 被 分 为 三 类 : 编 辑 器 , 过 滤 器 ,和 交 正程 序 。 当 然 不 是 所 有 的 工 具 适 合 这 三 类 。 有 的 工 具 是 执 行 文 件 操 作 和 程 序 管 理 。

所 有 的 Unix 版 本 中 都 有 一 些 标 准 编 辑 器 可 获 得 。 包 括 :Ed,Ex,Vi 和 Emacs 。Ed 和 Ex 是 行 编 辑 器 ,Vi 和 Emacs 是 全 屏 目 编 辑 器 。 所 有 的 标 准 编 辑 器 都 是 由早 期 不 能 处 理 像 今 天 字 处 理 程 序 中 光 标 移 动 的 机 器 中 发 展 而 来 。 尽 管 Vi 和Emacs 有 全 屏 编 辑 能 力 ,但 他 们 不 能 像 由 鼠 标 驱 动 的 字 处 理 器 一 样 容 易 使 用 。Ed 和 Ex 是 每 次 只 能 显 示 和 编 辑 一 行 的 行 编 辑 器 。 尽 管 有 这 些 限 制 , 但 编 辑 器 的 效率 是 很 高 的 ,他 有 大 量 的 命 令 和 复 杂 的 操 作 相 结 合 。

另 一 套 工 具 最 好 被 描 述 为 过 滤 器 (filter), 一 个 过 滤 器 读 取 从 用 户 文 件 或 其 他 地

方 的 输 入 , 检 查 和 处 理 数 据 然 后 输 出 结 果 。 从 这 个 意 义 上 说 , 他 们 过 滤 经 过 他 们 的数 据 有 不 同 类 型 的 过 滤 器 , 一 些 用 行 编 辑 命 令 输 出 一 个 被 编 辑 的 文 件 。 另 外 的 一个 是 模 式 寻 找 文 件 并 以 这 种 模 式 输 出 部 分 数 据 。 还 有 一 些 执 行 字 处 理 操 作 , 检 测一 个 文 件 中 的 格 式 的 命 令 输 出 一 个 格 式 化 的 文 件 ,过 滤 器 的 输 入 可 以 不 是 一 个 文件 , 它 可 以 是 用 户 从 键 盘 敲 入 的 数 据 , 也 可 以 是 另 一 个 过 滤 器 的 输 出 , 过 滤 器 能 相互 连 接 , 因 此 一 个 过 滤 器 的 输 出 能 成 为 另 一 个 过 滤 器 的 输 入 , 甚 至 你 可 以 编 写 自 己的 过 滤 器 程 序 , 一 个 过 滤 器 编 程 语 言 叫 做 awk, 能 使 你 编 写 自 己 的 过 滤 器 。 Linux 也 有 一 套 允 许 你 和 本 系 统 或 其 他 系 统 用 户 相 交 互 的 工 具 , 作 为 一 个 多 用 户 系 统Linux 必 须 和 所 有 用 户 保 持 联 系 。 显 示 的 基 本 要 求 和 文 件 系 统 的 基 本 互 联 性 使得 电 子 邮 件 系 统 容 易 实 现 。 信 息 可 由 系 统 上 的 不 同 用 户 发 送 和 接 收 ,你 甚 至 可 以一 次 对 多 个 用 户 同 时 广 播 一 个 住 处 或 直 接 与 另 一 个 相 连 进 行 一 个 实 时 对 话 。

Linux 和 Unix 系 统 最 重 要 的 特 点 之 一 是 它 的 多 套 Internet 工 具 ,Internet 是在 Unix 系 统 的 基 础 上 设 计 和 开 发 出 来 的 ,像 ftp 和 telnet 等 Internet 工 具 最 先 实现 于 Unix 和 BSD 版 本 。 Darpanet 是 Internet 的 前 身 ,用 来 联 接 美 国 国 内 各 大学 的 Unix 系统 ,Linux 包 含 了 全 套 的 Internet 工 具 和 他 们 提 供 了 与 Internet 的 直

接 相 连 像 SLIP 网 络 浏 览 器 像 Netscape 都 在 Linux 可 获 得 的 。Internet 上 的 Linux 软 件 和 信 息 资 源 Linux 是 在 Internet 上 通 过 共 同 合 作 开 发 出 来 的 ,没 有 一 家 公 司和 机 构 控 制 Linux 。

Internet 上 的 Linux 软 件 及 信 息 源

当 Linux 用 户 决 定 共 同 完 成 一 个 项 目 的 开 发 就 开 始 进 行 ,当 完 成 以 后 , 软 件 由Internet 上 的 一 个 ftp 地 址 来 发 布 。 任 何 Linux 用 户 可 以 到 达 这 个 网 址 来 下 载 软件 。

软 件 是 你 需 要 编 译 的 源 代 码 形 式 或 执 行 的 二 进 制 代 码 。 软 件 包 通 常 包 括 文件 和 配 置 文 件 ,OpenLinux 使 用 叫 做 Redht Package Manager(RPM )的 专 门 安 装工 具 。 你 能 通 过 一 个 简 单 的 命 令 rpm -i 和 所 有 的 文 件 和 配 置 文 件 去 安 装 RPM 软 件 包 ( 详 见 第 3 章 ) 。 大 部 分 当 前 的 软 件 可 在 RPM 软 件 包 中 获 得 。 在ftp.redhat/com/pub/contrib/i386 中 可 发 现 大 量 的 RPM 软 件 包 。 在 这 儿 , 你 应 该首 先 核 对 你 想 使 用 的 软 件 的 RPM 版 本 , 对于 Linux 软 件 和 文 件 的 主 要 ftp 地 址 之一 是 /pub/Linux 目 录 下 的 Sunsite.unc.edu 。 Homesites 是 Linux 软 件 最 初 被邮 寄 的 地 方 M irror Sites 是 这 些 Homesites 的 复 制 。 ftp.caldera.com 和ftp.redhot.com 包 含 了 Linux 文 件 的 扩 展 档 案 。 表 1-1 列 出 了 不 同 的 ftp 位 置 ,通过 与 网 址 相 联 ,你 可 以 获 得 其 他 的 地 址 。 例 如 Linux 在 Wo rld W ide Wed 中 是 在www.sss.com/limux/resoures/web.htm l。其 中 特 别 有 趣 的 是 Limux Game Tome 中 列 出 了 为 Linux 的 大 部 分 流 行 游 戏 。 在 第 3 章 3-2 表 中 列 出 了 几 个 资 源 网 页 。

大 部 分 LINUX 软 件 具 有 Free Sofeware Foundation 支 持 的 GNU 公 共 权 限下 版 权 ,经 常 被 指 定 为 GNU 软 件 ,GNU 软 件 已 经 证 明 是 可 信 的 且 是 有 效 的 。 许多 Linux 使 用 的 工 具 , 像 C 编 译 器 ,Shell 和 编 辑 器 都 是 GNU 软 件 的 应 用 程 序 。你 将 发 现 你 的 OpenLinux 系 统 上 安 装 GNU C++ 和 Lisp 编 译 器 ,Vi 和 Emacs 编辑 器 Bash 和 Tcsh Shell 以及 Tex 和 Ghostscript 文 件 格 式 器 ,许 多 其 他 的 GNU 软 件 应 用 程 度 也 可 在 Internet 的 不 同 ftp 地 址 上 获 得 。 表 1-2 , 详 细 描 述 了 从Internet 上 下 载 软 件 应 用 程 序 及 安 装 他 们 的 过 程 。

近 来 , 主 要 的 软 件 公 司 ,也 开 始 开 发 他 们 的 最 流 行 应 用 程 序 的 linux 版 本 ,你 可以 从 Internet 的 ftp 地 址 :ftp.caldera.com 来 下 载 它 ,SUN 公 司 的 Java Linux 版本 也 可 从 ftp.Blackcown.org 上 获 得 一 个 Wo rdprefect 的 Linux 版 本 也 可 获 得 。

Linux 支 持 资 料 也 在 Internet 上 开 发 的 , 目 前 大 部 分 支 持 资 料 可 以 从 Internet 的 ftp 地 址 处 下 载 ,一 个 叫 Linux Documentation Project 的 Linux 项 目 由 Matt W elsh 带 领 , 正 在 开 发 一 套 Linux 说 明 , 这 个 资 料 可 由 以 下 URL 获得 :http//sunsite.unc.edu/mdw 这 份 支 持 资 料 包 括 了 用 户 指 导 介 绍 和 管 理 指 导 , 它们 可 以 用 超 文 本 或 文 本 的 格 式 获 得 。 表 1-3 列 出 了 这 些 指 导 ,你 能 发 现 对 于 什 么是 How-To 文 件 的 简 单 解 释 ,How- To 文 件 包 括 如 安 装 打 印 和 电 子 邮 件 等 多 个 方面 。 这 个 文 件 通 常 可 从 /pub/linux/doc/how-to 目 录 下 的 Linux ftp 地 址 处 获 得 。

在 /pub/linux/doc 目 录 下 你 能 发 现 Meta-fao 文 件 包 含 不 同 的 Linux 信 息 位 置的 列 表 , 在 相 同 的 位 置 和 目 录 , 你 也 可 以 下 载 Linux 软 件 图 (LSM), 这 是 当 前 为Linux 所 使 用 的 大 部 分 软 件 的 列 表 。 许 多 软 件 公 司 也 有 提 供 他 们 Linux 应 用 程 序的 网 址 , 这 些 被 列 在 表 1-4 中 。

除 了 ftp 网 址 , 也有 Linux Usenet newsgroups .通 过 互 连 网 ,你 能 登 录 Linux

Newsgroups 去 阅 读 其 他 用 户 的 内 容 并 邮 寄 你 的 信 息 。 有 很 多 的 Linux Newsgroups, 都 是 以 comp.os.linux 开 始 的 , 特 别 能 兴 起 初 学 者 兴 趣 的 是com.os.linux.help, 从 那 里 你 可 以 发 出 问 题 , 表 1-5 列 出 了 在 Usenet 上 的 不 同Linux Newsgroups 。

大 部 分 当 前 的 标 准 Linux 软 件 和 文 件 已 经 包 含 在 你 的 OpenLinux Lite CD- ROM 中 。 How-To 文 件 都 是 以 HTML 格 式 可 获 得 的 ,所 以 你 可 以 用 网 浏 览 器 去看 他 们 , 但是 ,在 将 来 ,你 可 能 必 须 直 接 到 达 Linux 和 Internet 网 址 去 获 得 最 新 的 信息 。

当 前 , 唯 一 处 理 Linux 的 出 版 物 是 Linux Gournal ,你 可 以 从 下 面 的 网 址 获 取关 于 它 的 信 息 :www.sss.com/lg 。 也 可 以 联 系 以 下 地 址 :

Linux Gounal

P.O. BOX 85867 Seattle WA 98145 206-527-3385

Linux 发 行 版 本

尽 管 有 唯 一 的 Linux 标 准 版 本 ,但 有 几 个 不 同 的 发 行 公 司 用 略 有 不 同 的 方 法Linux 包 装 和 Linux 软件 ,每 个 公 司 然 后 用 CD-ROM 发 行 Linux 软 件 包 ,后 来 发行 的 可 能 包 含 程 序 的 最 新 版 本 和 新 软 件 , 其 中 一 些 是Slackware,Rdehat,TAMU,Yggdrasil 和 Infomagic 。 Open Linux Lite CD-Rom

包 含 Caldera 的 完 整 Open Linux Linux 系 统 。 一 些 供 应 部 门 ,像 Calderal 和Redhat 也 用 像 字 处 理 的 商 业 软 件 或 像 Netscape 的 商 用 Internet 服 务 器 包 在 它们 的 系 统 中 。

OpenL inux

OpenLinux Linux Lite 光 盘 包 含 了 Caldera 的 完 全 OpenLiux Linux 系 统 , 并 包 含 所 有 GNU 软 件 包 的 软 件 包 以 及 X-Windows 窗 口 管 理 器 Internet 工具 , 它 是 和 POSIX 相 一 致 的 Caldera 提 供 它 的 免 费 的 OpenLinux 系统 ,光 盘 被指 定 为 ” lite ” , 因 为 Ca ldera 也 提 供 一 些 商 用 的 , 有 产 权 的 软 件 包 , 这 些 软 件 包包 括 一 些 像 W ordperfect, netscape 服 务 器 和 Novell Netware 用 户 等 产 品 , 因此 ,不 是 免 费 的 .详 见 caldera 的 网 址 www.caldera.com

总 结

Linux 是 由 Linus Torvald 首 先 开 发 的 , 为 386,486 或 奔 腾 处 理 器 的 PC 系列 使 用 的 一 个 Unix 操 作 系 统 的 版 本 ,Linux 是 以 它 的 高 效 性 和 灵 活 性 而 著 称 , 带 给 你 的 PC 全 部 的 Unix 特 点 ,包 括 多 任 务 ,多 用 户 的 能 力 ,Linux 是 在 GNU 公共 权 限 下 免 费 获 得 的 ,它 是 一 个 符 合 POSIX 标 准 的 操 作 系 统 。

你 的 Linux 软 件 包 不 仅 Linux 操 作 系 统 ,而 且 还 包 括 了 像 编 译 器 编 辑 器 等 的应 用 软 件 。 它 也 包 括 带 有 几 个 窗 口 管 理 器 的 X-Windows 图 形 用 户 界 面 (GUI) 允许 你 用 窗 口 ,图 标 和 菜 单 与 系 统 相 互 交 流 。

Linux 系 统 由 内 核 ,Shell 文 件 结 构 和 实 用 工 具 组 成 ,内 核 是 系 统 的 心 脏 , 它 包含 直 接 管 理 计 算 机 硬 件 的 控 制 程 序 ,Shell 是 用 户 界 面 ,Shell 收 到 来 自 用 户 的 命 令并 把 它 送 入 内 核 去 执 行 。 Shell 能 满 足 个 别 用 户 的 需 要 。 Shell 甚 至 有 自 己 的 编程 语 言 用 于 对 命 令 的 编 辑 。 文 件 结 构 包 括 放 置 文 件 的 目 录 , 目 录 提 供 管 理 文 件 的方 便 途 径 , 你 能 从 一 个 目 录 移 到 另 一 个 目 录 并 且 设 置 权 限 和 其 他 用 户 共 享 其 中 的文 件 。

标 准 的 Linux 系 统 都 有 一 套 叫 做 实 用 工 具 的 程 序 ,实 用 工 具 可 分 三 类 :编 辑 器 , 过 滤 器 , 或 交 互 程 序 , 很 多 编 辑 器 虽 然 效 率 很 高 ,但 使 用 起 来 下 如 现 有 PC 编 辑 器一 样 容 易 , 过 滤 器 是 接 收 数 据 并 产 生 数 据 被 修 改 格 式 的 专 用 工 具 。 交 互 工 具 允 许你 发 送 信 息 或 收 到 来 自 其 他 用 户 的 信 息 。 usenet 和 web 等 Internet 具 允 许 你容 易 地 实 现 信 息 服 务 。

表 1-1Linux ftp 网 址

Linux ftp 网 址

目录

sunsite.unc.edu

/pub/linux

tsx-11.mit.edu

/pub/linux

nic.funet.fi

/pub/os/linux

M irror.Sites

ftp.mcc.ac.uk

/pub/linuxBritain

ftp.ibp.fr

/pub/linuxFrance

ftp.dfv.rwth-aachen.de

/pub/linuxGermany

kirk.bu.oz.au

/pub/linuxAustralia

ftp.uu.net

/systems/unix/linux

ftp.stack.nl

/pub/linux

ftp.caldera.com

/pub/linux

ftp.redhat.com

/pub

ftp.cdrom.com

/pub/linux/Concord,CA

ftp.siriuscc.com

/pub/linux/Dallas,TX

lss.afit.af.mil

/pub/linux/Dayton,OH

ftp.engr.uark.edu

/pub/linux/Fayetteville,AR

ftp.spin.ad.jp

/pub/linux/sunsite.unc.eduTokyo

续 表

ftp.funet.fi

/pub/linux/

ftp.ba-mannheim.de

/pub/linux/Mannheim

ftp.nuri.net

/pub/linux/Seoul

表 1-2Linux 的 应 用 程 序

网 址

应 用 程 序

ftp://ftpredhat.com/

Linux applications in RPM format(shareware)

pub/contrib/i386

ftp://ftp.ncsa.edu

Mosaic Web Browser and Web Server software for Linux

ftp://ftp4.netscape.com

Netscape Web Browser for Linux

ftp://ftp.caldera.com

ftp://ftp.blackdown.org

Sun's Java Development Kit for Linux(link to m irror sites)

http://www.redhat.com

Applixware Office Suite

http://www.sdcorp.com

W ordPerfect 7

wplinux.htm

http://www.caldera.com

Netscape Web Browser for Linux,Caldera O ffice Suite,StarOffice

http://sunscript.sun.com

Tk/Tcl Products

http://www.uk.linux.org/

Linux Commecial Vendors

InderLxCommercial.html

http://www.xnet.com/

Linux Applications and Utilites Page

~blatura/linapps.shtml

表 1-3Linux 的 参 考 资 料

网 址

描 述

http://sunsite.unc.edu/mdw

LDP Web site

ftp://wunsite.unc.edu/pub/

LDP ftp site

Linux/docs/linux-doc-project

http://www.iki.fi/liw/linux/sag/

System Administrators'Guide Homepage

ftp://sunsite.unc.edu/pub

LDP HOW-TO documents

Linux/docs/HOWTO

Guides

Document Format and Web Sites

Linux Installation and Getting

DWI,PostScript,and HTML(online)

Started Guide

Linux User's Guide

DWI,PostScript,and PDF

Linux System Administrator's

DVI,PostScript,and HTML(online)

Guide

Linux Network Adimunstrator's

DWI,PostScript,and HTML(online)

Gu ide

Linux Programmer's Guide

linuxwww.db.erau.edu/LPG(link through LDPWeb

site),DVI,PostScript,and HTML(online)

续 表

The Linux Kernel

DVI and PostScript

Linux Kernel Hacker's Guide

www.redhat.com/(link through LDP W eb site),DVI,PostScript,and HTML(online)

表 1-4 W eb 网 址

网 址

描 述

www.ssc.com/linux

Linux Resources Web site

www.caldera.com

Ca ldera Web site

www.redhat.com

Redhat Web site

sunsite.unc.edu/mdw

W eb site for Linux DocumentationProject

www.ssc.com/lg

Linux Journal

www.linux.org

Linux Organization

www.li.org

Linux International W eb site

www.uk.linux.org

Linux European Web site

www.blackdown.org

W eb site for Linux Java

www.netscape.com

Netscape Web site

www.fokus.gmd.de/linux

Wover Goods for Linux

www.ssc.com/linux/resources/web.ht m l

Linux on the World Wide Web

表 1-5Usenet Newsgroups

新 闻 组

描 述

comp.os.linux.announce Announcements of Linux developments
comp.os.linux.devlopment.apps

For programmers developing Linux

applications

comp.os.linux.devlopment.system

For programmers working on the

Linux

operating system

comp.os.linux.hardware

Linux hardware spectifcations

comp.os.linux.admin

System administration questions

comp.os.linux.misc

Special questions and issues

comp.os.linux.setup

Installation problems

comp.os.linux.answers

Answers to command problems

comp.os.linux.help Questions and answers for particular problems
comp.os.linux.networking

Linux network questions and issues