133
1 Linux Linux POSIX UNIX Linux 20 Linux 使 Windows Linux (General Public Licence GPL) 使 使 Linux Linux Internet Linux Linux 1991 Linus Torvalds ( Torvalds 25 ) Linux 100% Linux 1.1 Linux UNIX Linux LinuxLinux Linux Linux Linux Linux 使 GNU

预备篇 · Web viewOpen Office ——成熟的office应用套件,类似并兼容MS Office。包括了字处理、电子表格、演示文稿、公式编辑和绘图程序。字处理程序可以直接将文档转换为PDF格式。Perl——广受欢迎的解释性编程语言,适合于检索任意文本

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: 预备篇 · Web viewOpen Office ——成熟的office应用套件,类似并兼容MS Office。包括了字处理、电子表格、演示文稿、公式编辑和绘图程序。字处理程序可以直接将文档转换为PDF格式。Perl——广受欢迎的解释性编程语言,适合于检索任意文本

第1章 Linux 基 础Linux 是 一 种 能 运 行 于 多 种 平 台 、 源 代 码 公 开 、

免 费 、 功 能 强 大 、 遵 循 POSIX 标 准 、 与 UNIX 兼 容的 操 作 系 统 。 Linux 自 20 世 纪 中 期 以 来 一 直 在 突飞 猛 进 地 发 展 , 人 们 在 计 算 机 软 件 开 发 和 应 用中 越 来 越 离 不 开 它 。 Linux 的 诞 生 和 发 展 给 全 球的 软 件 业 带 来 了 新 的 机 遇 , 也 使 微 软 的 Windows操 作 系 统 面 临 有 史 以 来 最 大 的 挑 战 。 由 于 Linux属 于 自 由 软 件 , 它 的 源 代 码 是 公 开 的 , 并 遵 循通 用 公 共 许 可 证 (General Public Licence , GPL) , 所 以 用 户可 以 免 费 使 用 , 从 而 使 Linux 在 极 短 的 时 间 内 就成 了 一 套 成 熟 而 稳 定 的 操 作 系 统 。 全 世 界 成 千上 万 的 程 序 专 家 和 Linux 爱 好 者 正 在 通 过 Internet 不断 地 对 Linux 进 行 开 发 、 完 善 和 维 护 。

Linux 操 作 系 统 核 心 最 早 是 1991 年 由 芬 兰 的 Linus Torvalds 在 芬 兰 赫 尔 辛 基 大 学 上 学 时 发 布 的 ( 那 年Torvalds 年 仅 25 岁 ) , 后 来 经 过 众 多 世 界 顶 尖 的 软件 工 程 师 的 不 断 修 改 和 完 善 , Linux 得 以 在 全 球普 及 开 来 , 在 服 务 器 领 域 及 个 人 桌 面 得 到 越 来越 多 的 应 用 , 在 嵌 入 式 开 发 方 面 更 是 具 有 其 他操 作 系 统 无 可 比 拟 的 优 势 , 并 以 每 年 100% 的 用户 数 递 增 , 显 示 了 Linux 强 大 的 实 力 。

1.1 系 统 概 要Linux 是 类 UNIX 计 算 机 操 作 系 统 的 统 称 。 Linux 操

作 系 统 内 核 的 名 称 也 是 “ Linux” 。 Linux 操 作 系 统是 自 由 软 件 和 开 放 源 代 码 发 展 中 最 著 名 的 例 子严 格 来 讲 , Linux 这 个 词 本 身 只 表 示 Linux 内 核 , 但实 际 上 , 人 们 已 经 习 惯 了 用 Linux 来 形 容 整 个 基于 Linux 内 核 并 且 使 用 GNU 工 程 各 种 工 具 和 数 据 库的 操 作 系 统 。

Page 2: 预备篇 · Web viewOpen Office ——成熟的office应用套件,类似并兼容MS Office。包括了字处理、电子表格、演示文稿、公式编辑和绘图程序。字处理程序可以直接将文档转换为PDF格式。Perl——广受欢迎的解释性编程语言,适合于检索任意文本

软件综合开发案例教程——Linux、GCC、MySQL、Socket、Gtk+与开源案例基 于 这 些 组 件 的 Linux 软 件 被 称 为 Linux 发 行 版 。

一 般 来 讲 , 一 个 Linux 发 行 包 包 含 大 量 的 软 件 ,比 如 软 件 开 发 工 具 、 数 据 库 ( 如PostgreSQL 、 MySQL)、 网 络 服 务 器 ( 如 Apache) 、 X Window 、桌 面 环 境 ( 例 如 GNOME 和 KDE) 、 办 公 包 ( 例 如OpenOffice.org)、 脚 本 语 言 ( 如 Perl 、 PHP和 Python) , 等 等 。

Linux 现 在 是 个 人 计 算 机 和 工 作 站 上 的 UNIX 类操 作 系 统 。 它 不 仅 继 承 了 UNIX 的 特 征 , 而 且 在许 多 方 面 超 过 了 UNIX 。 作 为 UNIX 类 操 作 系 统 , 它具 有 下 列 基 本 特 征 :

(a) 是 真 正 的 多 用 户 、 多 任 务 操 作 系 统 ;(b) 是 符 合 POSIX 标 准 的 系 统 ;(c) 提 供 具 有 内 置 安 全 措 施 的 分 层 的 文 件 系

统 ;(d) 提 供 shell命 令 解 释 程 序 和 编 程 语 言 ;(e) 提 供 强 大 的 管 理 功 能 , 包 括 远 程 管 理 功

能 ;(f) 具 有 内 核 的 编 程 接 口 ;(g) 具 有 图 形 用 户 界 面 ;(h) 具 有 大 量 的 实 用 程 序 和 通 信 、 联 网 工 具 ;(i) 具 有 良 好 界 面 编 缉 软 件 。大 量 的 高 级 程 序 设 计 语 言 已 移 植 到 Linux 系 统

上 , 因 而 使 它 成 为 理 想 的 应 用 软 件 开 发 平 台 ,而 且 , 在 Linux 系 统 下 开 发 的 应 用 程 序 具 有 良 好的 可 移 植 性 。 同 时 , Linux 还 有 许 多 独 到 之 处 ,例 如 : 它 的 源 代 码 几 乎 全 部 都 是 开 放 的 ; 它 可以 运 行 在 许 多 硬 件 平 台 上 ; 它 不 仅 可 以 运 行 许多 自 由 发 布 的 应 用 软 件 , 还 可 以 运 行 许 多 商 用化 的 应 用 软 件 ; 它 具 有 强 大 的 网 络 功 能 。

Linux 系 统 的 另 一 特 征 是 它 能 充 分 发 挥 硬 件 的功 能 , 因 而 它 相 比 其 他 操 作 系 统 来 说 运 行 效 率更 高 。

因 此 , Linux 拥 有 广 泛 的 应 用 前 景 。1.1.1 Linux 的 起 源 与 发 展

Linux 的 发 音 为 “ Lin-noks” , 中 文 发 音 为 “ 利 尼克 斯 ” 。 它 的 标 志 是 可 爱 的 企 鹅 , 取 自 芬 兰 的吉 祥 物 。

• 2 •

Page 3: 预备篇 · Web viewOpen Office ——成熟的office应用套件,类似并兼容MS Office。包括了字处理、电子表格、演示文稿、公式编辑和绘图程序。字处理程序可以直接将文档转换为PDF格式。Perl——广受欢迎的解释性编程语言,适合于检索任意文本

第 1章 Linux 基 础Linux 起 源 于 1991 年 , Linus Torvalds 为 了 编 写 一 个 比

Minix(由 谭 邦 宁 教 授 开 发 的 一 个 用 于 操 作 系 统 教学 、 很 小 的 UNIX 操 作 系 统 ) 更 好 的 操 作 系 统 , 首次 在 Internet 上 发 布 了 基 于 Intel 386体 系 结 构 、 类 似 于UNIX 的 Linux 源 代 码 , 这 就 是 最 早 的 Linux 版 本 。 由于 Linux 具 有 结 构 清 晰 、 功 能 简 捷 等 特 点 , 许 多高 等 院 校 的 学 生 和 科 研 机 构 的 研 究 人 员 纷 纷 把它 作 为 学 习 和 研 究 的 对 象 。

Linux 的 历 史 是 和 GNU 紧 密 联 系 在 一 起 的 。 从1983 年 开 始 的 GNU 计 划 ( 该 计 划 致 力 于 开 发 一 个自 由 并 且 完 整 的 类 UNIX 操 作 系 统 , 包 括 软 件 开发 工 具 和 各 种 应 用 程 序 ) 到 1991 年 Linux 内 核 发 布 ,GNU 已 经 几 乎 完 成 了 除 了 系 统 内 核 之 外 的 各 种必 备 软 件 的 开 发 。 在 Linus Torvalds 和 其 他 开 发 人 员的 努 力 下 , GNU 组 件 可 以 运 行 于 Linux 内 核 之 上 。整 个 内 核 是 基 于 GNU 通 用 公 共 许 可 , 也 就 是GPL, 但 是 Linux 内 核 并 不 是 GNU 计 划 的 一 部 分 。1994 年 3 月 , Linux 1.0 版 正 式 发 布 , Marc Ewing 成 立 了Red Hat 软 件 公 司 , 成 为 最 著 名 的 Linux 分 销 商 之 一 。

现 在 , Linux 的 用 户 群 一 般 都 是 专 业 人 士 。 他们 愿 意 安 装 并 设 置 自 己 的 操 作 系 统 , 因 而 往 往比 其 他 操 作 系 统 的 用 户 要 花 更 多 的 时 间 。 这 些用 户 有 时 被 称 作 “ 黑 客 ” 或 “ 极 客 ” (geek) 。

使 用 Linux 的 主 要 成 本 为 移 植 、 培 训 和 学 习 的费 用 , 早 期 由 于 会 使 用 Linux 的 人 较 少 , 并 且 在软 件 设 计 时 并 未 考 虑 非 专 业 者 的 使 用 , 导 致 这方 面 费 用 极 高 。 这 方 面 的 费 用 已 经 随 着 Linux 的日 益 普 及 和 Linux 上 的 软 件 越 来 越 多 、 越 来 越 方便 而 降 低 , 但 这 仍 是 使 用 Linux 的 主 要 成 本 。

然 而 随 着 Linux 慢 慢 开 始 流 行 , 有 些 原 始 设 备制 造 商 (OEM) 开 始 在 其 销 售 的 电 脑 上 预 装 上Linux , Linux 的 用 户 中 也 有 了 普 通 电 脑 用 户 , Linux系 统 也 开 始 慢 慢 出 现 在 个 人 电 脑 操 作 系 统 市 场Linux 在 欧 洲 、 美 国 和 日 本 的 流 行 程 度 较 高 , 欧美 地 区 还 发 行 Linux 平 台 的 游 戏 和 其 他 家 用 软 件 。Linux 开 源 社 区 也 是 以 欧 洲 、 美 国 、 日 本 等 发 达国 家 及 地 区 的 人 士 居 多 。

每 个 孩 子 拥 有 一 台 笔 记 本 电 脑 这 一 项 目 正在 催 生 新 的 、 更 为 庞 大 的 Linux 用 户 群 , 计 划

• 3 •

Page 4: 预备篇 · Web viewOpen Office ——成熟的office应用套件,类似并兼容MS Office。包括了字处理、电子表格、演示文稿、公式编辑和绘图程序。字处理程序可以直接将文档转换为PDF格式。Perl——广受欢迎的解释性编程语言,适合于检索任意文本

软件综合开发案例教程——Linux、GCC、MySQL、Socket、Gtk+与开源案例将 包 括 发 展 中 国 家 的 几 亿 学 童 、 他 们 的 家 庭 和社 区 。 在 2007 年 , 已 经 有 6 个 国 家 分 别 订 购了 至 少 一 百 万 台 的 笔 记 本 电 脑 免 费 发 放 给 学 生谷 歌 、 RedHat 和 eBay 是 该 项 目 的 主 要 支 持 者 。

下 面 简 单 地 回 顾 一 下 Linux 版 本 的 变 化 过 程 :1991 年 10 月 , Linux 第 一 个 公 开 版 0.02版 发 布 。1994 年 3 月 , Linux 1.0 版 发 布 。1999 年 , Linux 2.2 发 布 ; GNOME 1.0 发 布 ; 支 持 Linux

2.2 的 Red Hat 6.0 发 布 ; IBM推 出 全 面 支 持 Linux 的 计 划 ;HP 宣 布 支 持 Linux 。

1999 至 2003 年 , 各 种 Linux 版 本 不 断 发 布 , 在 市场 上 的 影 响 巨 大 。

Linux 内 核 最 初 是 为 Intel 386微 处 理 器 设 计 的 ; 现在 , Linux 内 核 支 持 从 个 人 电 脑 到 大 型 主 机 , 甚至 包 括 嵌 入 式 系 统 在 内 的 各 种 硬 件 设 备 。1.1.2 Linux 的 特 性

Linux 是 一 套 类 UNIX 的 免 费 操 作 系 统 , 但 Linux 系统 的 稳 定 性 、 功 能 完 整 性 及 开 放 性 是 许 多 商 业操 作 系 统 无 法 比 拟 的 。 Linux 还 有 一 个 最 大 的 特色 就 在 于 源 代 码 完 全 公 开 , 在 符 合 GNU GPL 的 原则 下 , 任 何 人 皆 可 自 由 获 取 、 复 制 , 甚 至 修 改源 代 码 , 然 后 再 发 行 , 以 便 将 修 改 的 程 序 代 码回 馈 于 社 会 。

与 其 他 操 作 系 统 相 比 , Linux 具 有 以 下 特 性 :(a) 自 由 与 开 放 : Linux 是 自 由 软 件 , 这 对 科 学

界 来 说 相 当 重 要 。 很 多 工 程 师 由 于 特 殊 需 求 ,常 常 需 要 修 改 系 统 源 码 , 使 该 系 统 可 以 满 足 自己 的 需 求 。 这 个 开 放 性 的 架 构 可 以 满 足 不 同 工程 师 的 需 求 。

(b) 配 置 要 求 低 廉 : Linux 可 以 支 持 个 人 计 算 机的 x86 架 构 , 系 统 资 源 不 必 像 早 先 的 UNIX 系 统 那样 , 仅 适 合 于 公 司 的 单 一 设 备 。 不 过 , 如 果 想要 在 Linux 下 执 行 X-Window系 统 , 硬 件 的 等 级 就 不 能太 低 。

(c) 功 能 强 大 而 稳 定 : Linux 的 功 能 并 不 比 一 些大 型 的 UNIX 工 作 站 低 , 近 年 来 , 越 来 越 多 的 公司 或 团 体 、 个 人 投 入 到 Linux 的 开 发 和 整 合 工 作

• 4 •

Page 5: 预备篇 · Web viewOpen Office ——成熟的office应用套件,类似并兼容MS Office。包括了字处理、电子表格、演示文稿、公式编辑和绘图程序。字处理程序可以直接将文档转换为PDF格式。Perl——广受欢迎的解释性编程语言,适合于检索任意文本

第 1章 Linux 基 础中 。

(d) 独 立 工 作 : 由 于 Linux 使 用 了 很 多 软 件 套 件 ,这 些 软 件 套 件 都 在 Linux 操 作 系 统 上 进 行 了 开 发和 测 试 。 因 此 , Linux 近 来 已 经 可 以 独 立 地 完 成几 乎 所 有 工 作 站 或 服 务 器 的 服 务 , 例 如Web、 Mail、 Proxy 、 FTP等 。1.1.3 主 流 Linux操 作 系 统 发 行 版 简 介

Linux 本 质 上 就 是 一 个 操 作 系 统 最 底 层 的 核 心及 其 提 供 的 核 心 工 具 , 负 责 控 制 硬 件 、 管 理 文件 系 统 、 程 序 进 程 等 。 Linux Kernel(内 核 ) 并 不 负 责提 供 强 大 的 应 用 程 序 , 没 有 编 译 器 、 系 统 管 理工 具 、 网 络 工 具 、 Office 套 件 、 多 媒 体 、 绘 图 软件 等 , 这 样 的 系 统 也 就 无 法 发 挥 其 强 大 功 能 ,用 户 也 无 法 利 用 这 个 系 统 工 作 。 因 此 有 人 便 提出 , 以 Linux Kernel 为 核 心 、 再 集 成 搭 配 各 式 各 样 的系 统 程 序 或 应 用 工 具 程 序 , 组 成 一 套 可 完 整 安装 的 操 作 系 统 。 经 过 如 此 组 合 的 Linux 套 件 , 即为 Linux 发 行 版 。

国 外 封 装 的 Linux 以 Red Hat( 又 称 “ 红 帽Linux”) 、 OpenLinux、 SuSE 、 TurboLinux 等 最 为 成 功 :

Red Hat Linux :http://www.redhat.com

Red Hat 是 个 商 业 气 息 颇 为 浓 厚 的 公 司 , 该 公司 于 1999 年 在 美 国 以 科 技 股 为 主 的 纳 斯 达 克 证券 交 易 所 成 功 上 市 , 并 逐 渐 成 为 Linux 商 业 界 龙头 。

Red Hat 是 目 前 销 售 量 最 高 、 安 装 最 简 便 、 最适 合 初 学 者 的 Linux 发 行 版 , 也 是 目 前 世 界 上 最流 行 的 Linux 发 行 套 件 , 它 的 市 场 营 销 、 包 装 及服 务 做 得 相 当 不 错 , 自 行 开 发 了 RPM 套 件 管 理程 序 及 X桌 面 环 境 GNOME的 众 多 软 件 , 并 将 其 源代 码 回 馈 给 Open Source Community 。

也 正 是 因 为 Red Hat 的 方 便 性 , 安 装 程 序 将 系统 的 构 架 或 软 件 安 装 方 式 全 部 做 了 包 装 , 用 户学 到 的 都 是 在 GUI( 图 形 用 户 界 面 ) 上 输 入 一 些 设置 值 这 样 的 粗 浅 知 识 , 至 于 软 件 安 装 了 哪 些 文件 、 安 装 到 哪 个 文 件 目 录 、 系 统 做 了 哪 些 设 置 ,

• 5 •

Page 6: 预备篇 · Web viewOpen Office ——成熟的office应用套件,类似并兼容MS Office。包括了字处理、电子表格、演示文稿、公式编辑和绘图程序。字处理程序可以直接将文档转换为PDF格式。Perl——广受欢迎的解释性编程语言,适合于检索任意文本

软件综合开发案例教程——Linux、GCC、MySQL、Socket、Gtk+与开源案例使 用 者 则 一 无 所 知 。 一 旦 真 正 遇 到 系 统 程 序 发生 问 题 , 要 解 决 问 题 也 就 比 较 困 难 。

Caldera OpenLinux: http://www.caldera.com/

Caldera 将 OpenLinux这 套 系 统 定 位 为 容 易 使 用 与 设置 的 发 行 版 , 以 集 成 使 用 环 境 与 最 终 用 户 办 公环 境 、 容 易 安 装 使 用 与 简 便 管 理 为 系 统 目 标 ,有 望 成 为 最 流 行 的 公 司 团 体 台 式 Linux 操 作 系 统 ,适 合 初 学 者 使 用 , 全 部 安 装 需 要 1GB的 硬 盘 空 间 。

Caldera 有 自 行 研 发 的 图 形 界 面 的 安 装 程 序 向导 , 安 装 过 程 可 以 玩 俄 罗 斯 方 块 , 提 供 完 整 的KDE 桌 面 环 境 , 附 赠 功 能 强 大 的 商 业 软 件 , 如StarOffice 、 图 形 界 面 的 硬 盘 分 割 工 具 Partition Magic 等 。

SuSE Linux: http : //www.SuSE.com/

SuSE 是 欧 洲 最 流 行 的 Linux 发 行 版 , 而 且 SuSE 是软 件 国 际 化 的 先 驱 , 让 软 件 能 支 持 各 国 语 系 ,贡 献 颇 丰 。 SuSE 也 是 用 RPM 作 为 软 件 安 装 管 理 程序 , 不 过 SuSE 并 不 适 合 新 手 使 用 , 它 提 供 了 非常 多 的 工 具 软 件 , 全 部 安 装 需 4.5GB的 硬 盘 空 间 ,安 装 过 程 也 较 为 复 杂 。

TurboLinux :http://www.TurboLinux.com/

TurboLinux 是 日 本 制 作 的 Linux 发 行 版 , 其 最 大 特色 是 以 日 文 版 、 中 文 简 / 繁 体 版 、 英 文 版 三 种形 式 发 行 , 对 于 软 件 国 际 化 的 推 动 起 到 了 积 极作 用 ; 它 安 装 的 简 易 性 及 系 统 设 置 的 难 度 与 Red Hat 差 不 多 , 且 安 装 界 面 是 汉 化 的 , 系 统 本 身 支持 中 文 简 体 , 在 中 国 国 内 有 广 大 的 用 户 群 。

国 内 Linux 发 行 版 中 做 得 相 对 比 较 成 功 的 是 红旗 和 中 软 两 个 版 本 , 界 面 都 做 得 非 常 美 观 , 安装 也 比 较 容 易 , 新 版 本 逐 渐 屏 蔽 了 一 些 底 层 的操 作 , 适 合 新 手 使 用 。 两 个 版 本 都 源 于 中 国 科学 院 软 件 研 究 所 承 担 的 国 家 863 计 划 的 Linux 项 目 。但 无 论 稳 定 性 与 兼 容 性 , 与 国 外 的 版 本 相 比 都有 一 定 的 差 距 , 操 作 界 面 和 习 惯 与 Windows 越 来越 像 , 提 供 一 定 的 技 术 支 持 和 售 后 服 务 , 适 用于 国 内 做 低 价 的 操 作 系 统 解 决 方 案 。

• 6 •

Page 7: 预备篇 · Web viewOpen Office ——成熟的office应用套件,类似并兼容MS Office。包括了字处理、电子表格、演示文稿、公式编辑和绘图程序。字处理程序可以直接将文档转换为PDF格式。Perl——广受欢迎的解释性编程语言,适合于检索任意文本

第 1章 Linux 基 础红旗Linux :http://www.redflag-linux.com/index.php

中软Linux :http://www.cosix.com

虽 然 开 发 Linux 发 行 版 的 公 司 很 多 , 但 用 户 并不 需 要 担 心 每 个 版 本 是 否 都 不 相 同 。 因 为 每 个Linux 发 行 版 使 用 的 核 心 都 是 在 http://www.kernel.org 上 发布 的 , 所 选 择 的 软 件 几 乎 都 是 目 前 很 知 名 的 软件 , 重 复 性 相 当 高 。 此 外 , 为 了 让 所 有 的 Linux版 本 开 发 差 异 不 会 太 大 , 可 采 用 Linux LSB(Linux Standard Base , Linux 标 准 基 础 ) 来 规 范 开 发 人 员 , 并 遵 循目 录 架 构 的 FHS(File system Hierarchy Standard , 文 件 系 统 层 次标 准 ) 规 范 。 唯 一 存 在 的 差 别 , 可 能 就 是 开 发人 员 自 己 开 发 出 来 的 管 理 工 具 以 及 套 件 管 理 的模 式 。 每 个 Linux 发 行 版 除 了 架 构 的 严 谨 性 与 选择 的 套 件 内 容 外 , 其 实 差 异 并 不 会 太 大 。 用 户可 以 选 择 自 己 喜 好 的 发 行 版 来 安 装 。1.1.4 Linux 的 内 核

Linux 内 核 的 最 初 版 本 是 由 Linus Torvalds 编 写 的 ,为 了 能 够 使 Linux 更 加 完 善 , Torvalds 在 网 络 上 公 开了 Linux 的 源 码 , 邀 请 全 世 界 的 志 愿 者 参 与 Linux 的开 发 。 由 于 许 多 专 业 用 户 自 愿 地 开 发 它 的 应 用程 序 , 并 借 助 Internet 拿 出 来 让 大 家 一 起 修 改 , 所以 它 周 边 的 程 序 越 来 越 多 , Linux 得 到 了 不 断 的完 善 , 并 在 短 时 期 内 迅 速 崛 起 , 如 今 仍 以 相 当快 的 速 度 在 不 断 地 发 展 着 。 Linux 是 一 个 很 有 发展 前 途 的 操 作 系 统 , 也 是 为 数 不 多 可 以 与Microsoft 旗 下 操 作 系 统 相 竞 争 的 操 作 系 统 。

Linux 内 核 由 5 个 主 要 的 子 系 统 组 成 。 这 5 个 子系 统 分 别 是 进 程 调 度 (SCHED) 、 内 存 管 理 (MM) 、 虚拟 文 件 系 统 (VFS) 、 网 络 接 口 (NET) 和 进 程 间 通 信(IPC) 。

各 个 子 系 统 之 间 的 依 赖 关 系 如 下 :(a) 进 程 调 度 与 内 存 管 理 之 间 的 关 系 : 这 两

个 子 系 统 互 相 依 赖 。 程 序 要 在 多 道 程 序 环 境 下运 行 , 必 须 为 之 创 建 进 程 , 而 创 建 进 程 的 第 一件 事 , 就 是 要 将 程 序 和 数 据 装 入 内 存 。

(b) 进 程 间 通 信 与 内 存 管 理 之 间 的 关 系 : 进

• 7 •

Page 8: 预备篇 · Web viewOpen Office ——成熟的office应用套件,类似并兼容MS Office。包括了字处理、电子表格、演示文稿、公式编辑和绘图程序。字处理程序可以直接将文档转换为PDF格式。Perl——广受欢迎的解释性编程语言,适合于检索任意文本

软件综合开发案例教程——Linux、GCC、MySQL、Socket、Gtk+与开源案例程 间 通 信 子 系 统 要 依 赖 内 存 管 理 来 支 持 共 享 内存 通 信 机 制 , 这 种 机 制 允 许 两 个 进 程 除 了 拥 有自 己 的 私 有 内 存 外 , 还 可 存 取 共 同 的 内 存 区 域 。

(c) 虚 拟 文 件 系 统 与 网 络 接 口 之 间 的 关 系 :虚 拟 文 件 系 统 利 用 网 络 接 口 来 支 持 网 络 文 件 系统 (NFS) , 利 用 内 存 管 理 来 支 持 RAMDISK设 备 。

(d) 内 存 管 理 与 虚 拟 文 件 系 统 之 间 的 关 系 :内 存 管 理 利 用 虚 拟 文 件 系 统 来 支 持 交 换 , 交 换进 程 定 期 地 由 调 度 程 序 调 度 , 这 也 是 内 存 管 理依 赖 于 进 程 调 度 的 唯 一 原 因 。 当 一 个 进 程 存 取的 内 存 映 射 被 换 出 时 , 内 存 管 理 向 文 件 系 统 发出 请 求 , 同 时 , 挂 起 当 前 正 在 运 行 的 进 程 。

在 这 些 子 系 统 中 , 进 程 调 度 子 系 统 是 其 他子 系 统 得 以 顺 利 工 作 的 关 键 。 无 论 是 文 件 系 统的 系 统 进 程 还 是 网 络 子 系 统 的 服 务 进 程 , 都 需要 通 过 进 程 调 度 来 获 得 相 应 的 CPU 时 间 以 正 常运 行 。1.1.5 Linux 的 特 点

绝 大 多 数 基 于 Linux 内 核 的 操 作 系 统 都 使 用 了大 量 的 GNU 软 件 , 包 括 shell程 序 、 工 具 、 程 序 库 、编 译 器 及 工 具 , 还 有 许 多 其 他 程 序 , 例 如Emacs。 正 因 为 如 此 , GNU 计 划 的 开 创 者 理 查 德 ·马 修 · 斯 托 曼 博 士 提 议 将 Linux 操 作 系 统 改 名 为GNU/Linux 。

Linux 的 基 本 思 想 有 两 点 : 第 一 , 一 切 都 是 文件 ; 第 二 , 每 个 文 件 都 有 确 定 的 用 途 。 其 中 的第 一 条 , 详 细 来 讲 就 是 系 统 中 的 所 有 都 归 结 为一 个 文 件 , 包 括 命 令 、 硬 件 和 软 件 设 备 、 操 作系 统 、 进 程 等 对 于 操 作 系 统 内 核 而 言 , 都 被 视为 拥 有 各 自 特 性 或 类 型 的 文 件 。 至 于 说 Linux 是基 于 UNIX 的 , 在 很 大 程 度 上 也 是 因 为 这 两 者 的基 本 思 想 十 分 相 近 。

Linux 主 要 被 用 作 服 务 器 的 操 作 系 统 , 但 因 它的 廉 价 性 、 广 泛 性 、 灵 活 性 及 UNIX 背 景 , 使 得它 能 适 合 更 广 泛 的 应 用 。 传 统 上 有 以 Linux 为 基础 的 “ LAMP”(Linux 、 Apache 、 MySQL 、 Perl/PHP/Python 的 组合 ) 经 典 技 术 组 合 , 提 供 了 包 括 操 作 系 统 、 数

• 8 •

Page 9: 预备篇 · Web viewOpen Office ——成熟的office应用套件,类似并兼容MS Office。包括了字处理、电子表格、演示文稿、公式编辑和绘图程序。字处理程序可以直接将文档转换为PDF格式。Perl——广受欢迎的解释性编程语言,适合于检索任意文本

第 1章 Linux 基 础据 库 、 网 站 服 务 器 、 动 态 网 页 的 一 整 套 网 站 架构 支 持 。 而 在 面 向 更 大 规 模 级 别 的 领 域 中 , 如数 据 库 中 的 Oracle、 DB2、 PostgreSQL , 以 及 用 于 Apache的 Tomcat JSP 等 都 已 经 在 Linux 上 有 了 很 好 的 应 用 实例 。 LAMP除 中 小 企 业 广 为 应 用 外 , 它 还 是 当 前网 站 服 务 供 应 商 使 用 较 多 的 平 台 。

1. 低 廉 性基 于 其 低 廉 成 本 与 高 度 可 设 定 性 , Linux 常 常

被 应 用 于 嵌 入 式 系 统 , 例 如 机 顶 盒 、 移 动 电 话行 动 装 置 等 。 在 移 动 电 话 上 , Linux 已 经 成 为 与Symbian、 Windows Mobile 系 统 并 列 的 三 大 智 能 手 机 操 作系 统 之 一 ; 而 在 移 动 装 置 上 , 则 成 为 Windows CE 与Palm OS 之 外 的 另 一 个 选 择 。 目 前 流 行 的 TiVo 数 位摄 影 机 使 用 了 经 过 定 制 化 后 的 Linux 。 此 外 , 有不 少 硬 件 式 的 网 络 防 火 墙 及 路 由 器 , 例 如 部 分LinkSys 的 产 品 , 其 内 部 都 是 使 用 Linux 来 驱 动 , 并采 用 了 Linux 操 作 系 统 提 供 的 防 火 墙 及 路 由 功 能 。

2. 广 泛 性采 用 Linux 的 超 级 电 脑 也 越 来 越 多 , 根 据 最 新

的 TOP 500超 级 电 脑 列 表 , 显 示 世 界 上 最 快 速 的 3组 超 级 电 脑 都 是 使 用 Linux 作 为 其 操 作 系 统 。 而在 列 出 的 500 套 系 统 中 , 采 用 Linux 为 操 作 系 统 的占 了 469 组 ( 即 93.8%) , 前 10 位 中 有 9 组 是 使 用Linux 。

随 着 开 源 软 件 在 世 界 范 围 内 影 响 力 的 日 益增 强 , Linux 在 服 务 器 、 桌 面 、 行 业 定 制 等 领 域获 得 了 长 足 发 展 , 尤 其 在 服 务 器 领 域 , Linux 已经 获 得 了 令 人 瞩 目 的 成 就 。 目 前 , 除 了 微 软 以外 , 国 际 知 名 的 硬 、 软 件 厂 商 都 紧 密 地 与 之 结盟 、 捆 绑 , 甚 至 连 世 界 IT 业 的 龙 头 老 大 ——“ 蓝 色 巨 人 ” IBM也 要 “ 全 面 拥 抱 Linux” 。 这 是 因为 , 开 放 的 Linux 给 用 户 提 供 了 选 择 最 佳 应 用 、最 佳 开 发 环 境 、 最 佳 网 络 功 能 和 最 佳 硬 件 平 台的 自 由 。

专 家 指 出 , 从 产 品 角 度 来 说 , 计 算 机 操 作系 统 分 为 三 类 : 服 务 器 操 作 系 统 、 桌 面 操 作 系统 和 嵌 入 式 操 作 系 统 。 微 软 仅 仅 是 在 桌 面 部 分

• 9 •

Page 10: 预备篇 · Web viewOpen Office ——成熟的office应用套件,类似并兼容MS Office。包括了字处理、电子表格、演示文稿、公式编辑和绘图程序。字处理程序可以直接将文档转换为PDF格式。Perl——广受欢迎的解释性编程语言,适合于检索任意文本

软件综合开发案例教程——Linux、GCC、MySQL、Socket、Gtk+与开源案例占 有 垄 断 地 位 。 在 服 务 器 部 分 , Linux 、 UNIX 和Windows NT 三 分 天 下 的 局 面 已 经 开 始 形 成 。

事 实 上 , Linux 服 务 器 操 作 系 统 在 整 个 服 务 器操 作 系 统 市 场 格 局 中 占 据 了 越 来 越 多 的 市 场 份额 , 并 且 形 成 了 大 规 模 市 场 应 用 的 局 面 。 Linux引 起 了 全 球 IT产 业 的 高 度 关 注 , 并 以 强 劲 的 势头 成 为 服 务 器 操 作 系 统 领 域 中 的 中 坚 力 量 。

在 嵌 入 式 系 统 方 面 , Linux 现 在 已 经 走 在 了 前面 , 在 过 去 几 年 中 , 以 每 年 百 分 之 一 百 到 两 百的 市 场 成 长 速 度 遥 遥 领 先 于 对 手 。

而 在 桌 面 系 统 方 面 , 近 年 来 , 特 别 是 在 国内 市 场 , Linux 的 发 展 非 常 迅 猛 。 国 内 如 中 标 软件 、 红 旗 等 系 统 软 件 厂 商 推 出 的 Linux 桌 面 操 作系 统 , 目 前 已 经 在 政 府 、 企 业 、 OEM 等 领 域 得到 了 广 泛 应 用 。 国 外 的 Novell(SuSE)、 Sun 公 司 也 相 继推 出 了 基 于 Linux 的 桌 面 系 统 。

因 此 , 对 于 Linux 应 用 , 现 在 已 经 有 很 多 基 于Linux 的 解 决 方 案 。 从 全 球 范 围 来 看IBM、 Oracle、 CA 、 SAP等 业 界 巨 头 纷 纷 推 出 了 基 于Linux 的 数 据 库 和 应 用 系 统 , 而 众 多 独 立 软 件 开发 商 也 纷 纷 仿 效 , 不 断 将 已 有 的 应 用 移 植 到Linux 上 , 给 用 户 以 更 多 的 选 择 。 在 中 国 , 中 科红 旗 、 中 软 等 本 地 Linux 厂 商 也 在 积 极 努 力 , 开发 适 合 中 国 企 业 的 Linux 应 用 方 案 。 以 红 旗 Linux 为例 , 它 已 经 提 供 了 基 于 Linux 的 安 全 服 务 器 、 数据 库 服 务 器 、 集 群 服 务 器 以 及 双 机 集 群 (HA) 系统 。 这 些 应 用 方 案 已 经 在 邮 政 、 北 京 市 政 府 等领 域 得 到 了 成 功 的 应 用 。 此 外 , Linux 解 决 方 案的 高 性 价 比 也 是 促 使 企 业 选 择 Linux 的 重 要 因 素 。

我 国 出 台 的 《 鼓 励 软 件 产 业 和 集 成 电 路 产业 发 展 的 若 干 政 策 》 , 其 重 点 是 扶 持 软 件 产 业而 国 家 出 台 的 政 府 采 购 法 , 要 求 政 府 在 非 特 殊情 况 下 采 用 国 产 软 件 , 这 使 得 Linux 应 用 的 政 策环 境 得 到 改 善 。 这 几 年 , 政 府 采 购 规 模 越 来 越大 , 其 中 在 软 件 上 投 入 50 亿 元 左 右 , 这 对 于 中国 软 件 业 , 特 别 是 以 国 产 软 件 为 主 的 Linux 的 广泛 应 用 和 快 速 发 展 更 增 添 了 新 的 动 力 。

• 10 •

Page 11: 预备篇 · Web viewOpen Office ——成熟的office应用套件,类似并兼容MS Office。包括了字处理、电子表格、演示文稿、公式编辑和绘图程序。字处理程序可以直接将文档转换为PDF格式。Perl——广受欢迎的解释性编程语言,适合于检索任意文本

第 1章 Linux 基 础3. 灵 活 性Linux 以 它 的 高 效 性 和 灵 活 性 著 称 。 它 能 够 在

PC 上 实 现 全 部 的 UNIX 特 性 , 具 有 多 任 务 、 多 用户 的 能 力 。 Linux 可 在 GNU 公 共 许 可 权 限 下 免 费 获得 , 是 一 个 符 合 POSIX 标 准 的 操 作 系 统 。 Linux 操作 系 统 软 件 包 不 仅 包 括 完 整 的 Linux 操 作 系 统 ,而 且 还 包 括 了 文 本 编 辑 器 、 高 级 语 言 编 译 器 等应 用 软 件 。 它 还 包 括 带 有 多 个 窗 口 管 理 器 的 X Window 图 形 用 户 界 面 , 如 同 我 们 使 用 Windows NT 一 样 ,允 许 我 们 使 用 窗 口 、 图 标 和 菜 单 对 系 统 进 行 操作 。

4. 备 受 青 睐 的 原 因Linux 之 所 以 受 到 广 大 计 算 机 爱 好 者 的 喜 爱 ,

主 要 原 因 有 两 个 : 一 是 它 属 于 自 由 软 件 , 用 户不 用 支 付 任 何 费 用 就 可 以 获 得 它 和 它 的 源 代 码并 且 可 以 根 据 自 己 的 需 要 对 它 进 行 必 要 的 修 改无 偿 使 用 它 , 无 约 束 地 继 续 传 播 ; 另 一 个 原 因是 , 它 具 有 UNIX 的 全 部 功 能 , 任 何 使 用 UNIX 操 作系 统 或 想 要 学 习 UNIX 操 作 系 统 的 人 都 可 以 从 Linux中 获 益 。

运 行 Linux 需 要 的 配 置 并 不 高 , 支 持 众 多 的 PC外 部 设 备 , 并 且 这 样 一 个 功 能 强 大 的 软 件 完 全免 费 , 其 源 代 码 是 完 全 公 开 的 , 任 何 人 都 能 拿来 使 用 ( 但 要 遵 从 GNU 的 版 权 制 度 ) 。

Linux 核 心 程 序 的 著 作 权 归 Linus 本 人 所 有 , 其他 应 用 程 序 归 各 自 的 作 者 所 有 , 但 按 照 GNU 授权 , 任 何 人 都 可 以 采 取 收 费 或 免 费 方 式 来 发 行Linux , 并 在 符 合 该 授 权 的 规 范 下 做 修 改 。 这 样就 有 了 一 大 批 的 免 费 程 序 移 植 到 了 Linux 上 , 包括 GNU Emacs 、 XFree86 、 Mozilla 等 经 典 软 件 , 并 且 在 不断 壮 大 中 。 由 于 源 代 码 是 公 开 的 , 任 何 一 个 使用 Linux 的 人 在 添 置 了 新 硬 件 后 都 能 自 己 编 写 驱动 程 序 , 所 以 Linux 对 新 硬 件 的 支 持 已 经 超 过 了许 多 专 业 UNIX 系 统 。 Linux 的 成 功 , 如 果 没 有 Internet是 不 可 能 的 , 因 为 Linux 实 际 上 是 世 界 各 地 众 多程 序 员 共 同 开 发 的 结 果 。

• 11 •

Page 12: 预备篇 · Web viewOpen Office ——成熟的office应用套件,类似并兼容MS Office。包括了字处理、电子表格、演示文稿、公式编辑和绘图程序。字处理程序可以直接将文档转换为PDF格式。Perl——广受欢迎的解释性编程语言,适合于检索任意文本

软件综合开发案例教程——Linux、GCC、MySQL、Socket、Gtk+与开源案例5. 不 断 完 善 中现 在 的 Linux 经 过 数 次 改 版 ( 包 括 核 心 的 升 级

和 外 围 程 序 的 完 善 ) , 已 经 发 展 成 了 一 个 遵 循POSIX 标 准 的 纯 32 位 多 任 务 操 作 系 统 , 64 位 版 本也 在 广 泛 地 应 用 之 中 。 Linux 可 以 兼 容 大 部 分 的UNIX 系 统 , 很 多 UNIX 的 程 序 不 需 要 改 动 或 者 只 需很 少 的 改 变 就 可 以 运 行 于 Linux 环 境 ; 它 内 置 了TCP/IP 协 议 , 可 以 直 接 连 入 Internet , 作 为 服 务 器 或终 端 使 用 ; 它 内 置 了 Java解 释 器 , 可 直 接 运 行 Java源 代 码 ; Linux 具 备 程 序 语 言 开 发 、 文 字 编 辑 和排 版 、 数 据 库 处 理 等 能 力 ; 它 还 提 供 X-Window 图形 界 面 ; 它 虽 然 主 要 用 于 x86 系 列 的 个 人 电 脑 ,但 也 有 其 他 不 同 硬 件 平 台 的 版 本 , 支 持 现 在 流行 的 所 有 硬 件 设 备 。 就 性 能 上 来 说 , 它 并 不 弱于 Windows 甚 至 UNIX , 而 且 靠 仿 真 程 序 还 可 以 运 行Windows 应 用 程 序 。 它 有 成 千 上 万 的 各 类 应 用 软件 , 并 不 输 于 Windows 的 应 用 软 件 数 量 , 其 中 也有 商 业 公 司 开 发 的 赢 利 性 的 软 件 。 最 可 贵 的 是它 是 一 个 真 正 的 UNIX 系 统 , 可 以 供 专 业 用 户 和想 学 UNIX 的 人 在 自 己 的 个 人 电 脑 上 使 用 。 Linux 是一 个 非 常 灵 活 的 系 统 , 但 相 对 于 Windows 而 言 也是 一 个 比 较 难 用 的 系 统 , 就 如 同 大 多 数 用 户 用不 惯 Mac OS 的 单 键 鼠 标 一 样 。 若 想 要 对 Linux 轻 车熟 路 , 你 必 须 懂 得 一 些 相 关 知 识 , 软 、 硬 件 的配 置 , 最 好 还 懂 点 程 序 , 因 为 没 有 人 义 务 地 为你 提 供 技 术 支 持 , 除 了 和 其 他 用 户 交 流 之 外 ,你 必 须 自 己 解 决 问 题 。 当 然 , 如 果 你 只 是 作 为日 常 应 用 , 就 不 需 要 那 么 复 杂 啦 , Linux 一 样 会为 你 提 供 完 美 的 操 作 环 境 , 你 所 要 做 的 就 是 改变 使 用 习 惯 和 成 见 。

早 期 的 操 作 系 统 是 没 有 图 形 界 面 的 , 自 从Apple 公 司 于 1984 年 推 出 System 1.0 开 始 , 个 人 电 脑 才实 现 了 真 正 的 GUI(Graphics User Interface , 图 形 用 户 界 面 ) ,从 此 电 脑 变 得 更 加 具 有 亲 和 力 , 也 更 加 易 于 使用 。 Windows 的 图 形 化 开 始 于 Windows 3.1/3.2 , 但 直 到Windows 95 的 出 现 , 才 标 志 着 多 媒 体 时 代 的 到 来 ,从 此 计 算 机 变 得 能 说 会 唱 起 来 。 Linux 始 于 UNIX ,却 青 出 于 蓝 而 胜 于 蓝 , 同 样 拥 有 着 不 俗 的 图 形

• 12 •

Page 13: 预备篇 · Web viewOpen Office ——成熟的office应用套件,类似并兼容MS Office。包括了字处理、电子表格、演示文稿、公式编辑和绘图程序。字处理程序可以直接将文档转换为PDF格式。Perl——广受欢迎的解释性编程语言,适合于检索任意文本

第 1章 Linux 基 础用 户 界 面 , 性 能 更 稳 定 、 界 面 也 更 漂 亮 , 可 以和 世 界 上 曾 经 出 现 过 的 、 最 美 丽 的 操 作 系 统 媲美 ! 不 同 于 现 在 的 Windows XP , Linux 的 图 形 界 面 是基 于 Console 之 上 的 , 类 似 于 Windows 95 架 构 于 DOS 之上 , 在 Linux 下 实 现 图 形 界 面 的 是 X-Window 系 统 ( 区别 于 MS 的 Windows) 。

Linux 上 最 常 用 的 X Window 是 Xfree 86 , 它 是 MIT的 X11R 5 的 移 植 版 , 使 用 Openlook 窗 口 管 理 系 统 , 所 以Xfree 86 是 免 费 的 。 Xfree 86 支 持 现 行 所 有 的 PC 显 示 卡 ,但 不 一 定 支 持 它 们 的 Windows 加 速 特 性 , 比 如DirectX 9 。

到 目 前 为 止 , 可 以 支 持 中 文 的 Linux 已 不 再 凤毛 麟 角 , 而 且 中 文 应 用 软 件 正 在 不 断 丰 富 。 但一 些 商 业 软 件 并 未 完 成 移 植 , 其 中 有 诸 多 原 因在 此 不 详 述 。

6. Linux 所 具 有 的 优 点根 据 前 面 的 介 绍 , 可 以 总 结 出 Linux 具 有 如 下

优 点 :1) 开 放 性开 放 性 是 指 系 统 遵 循 世 界 标 准 规 范 , 特 别

是 遵 循 开 放 系 统 互 联 (OSI) 国 际 标 准 。 凡 遵 循 国际 标 准 所 开 发 的 硬 件 和 软 件 , 都 能 彼 此 兼 容 ,可 方 便 地 实 现 互 联 。

2) 系 统 稳 定Linux 是 基 于 UNIX 概 念 而 开 发 出 来 的 操 作 系 统 ,

具 有 与 UNIX 系 统 相 似 的 程 序 接 口 和 操 作 方 式 ,继 承 了 UNIX 稳 定 且 高 效 的 特 点 。

3) 免 费 或 少 许 费 用由 于 Linux 基 于 GPL, 因 此 任 何 人 均 可 以 自 由 获

取 Linux 。 “ 安 装 套 件 ” 发 行 者 发 行 的 安 装 光 盘仅 需 少 许 费 用 即 可 获 得 。

4) 安 全 性 、 漏 洞 的 快 速 修 补Linux 采 取 了 许 多 安 全 技 术 措 施 , 包 括 对 读 、

写 控 制 、 带 保 护 的 子 系 统 、 审 计 跟 踪 、 核 心 授权 等 , 这 为 网 络 多 用 户 环 境 中 的 用 户 提 供 了 必要 的 安 全 保 障 。

• 13 •

Page 14: 预备篇 · Web viewOpen Office ——成熟的office应用套件,类似并兼容MS Office。包括了字处理、电子表格、演示文稿、公式编辑和绘图程序。字处理程序可以直接将文档转换为PDF格式。Perl——广受欢迎的解释性编程语言,适合于检索任意文本

软件综合开发案例教程——Linux、GCC、MySQL、Socket、Gtk+与开源案例由 于 Linux 的 支 持 者 众 多 , 有 相 当 多 的 热 心 团

体 、 个 人 参 与 开 发 , 因 此 可 以 随 时 获 得 最 新 的安 全 信 息 , 并 随 时 更 新 , 相 对 较 安 全 。

5) 多 任 务 、 多 用 户与 Windows 系 统 不 同 , Linux 主 机 上 可 以 同 时 允

许 多 人 上 线 工 作 , 并 且 资 源 分 配 较 为 公 平 。 可以 在 一 个 Linux 主 机 上 规 划 出 不 同 等 级 的 用 户 ,而 且 每 个 用 户 登 录 系 统 时 的 工 作 环 境 可 以 不 同还 可 以 允 许 不 同 的 用 户 在 同 一 个 时 间 登 录 主 机以 便 同 时 使 用 主 机 的 资 源 。

6) 相 对 而 言 资 源 耗 费 较 少Linux 只 要 一 台 Intel Pentium 100 以 上 级 别 的 计 算 机 就

可 以 安 装 并 且 使 用 流 畅 。 当 然 , 如 果 假 设 的 是大 型 主 机 ( 服 务 于 百 人 以 上 的 主 机 系 统 ) , 那 么就 需 要 比 较 好 的 机 器 了 。

7) 设 备 独 立 性设 备 独 立 性 是 指 操 作 系 统 把 所 有 外 部 设 备

统 一 当 作 文 件 来 看 待 , 只 要 安 装 它 们 的 驱 动 程序 , 任 何 用 户 都 可 以 像 使 用 文 件 一 样 , 操 纵 、使 用 这 些 设 备 , 而 不 必 知 道 它 们 的 具 体 存 在 形式 。

8) 良 好 的 用 户 界 面Linux 为 用 户 提 供 了 图 形 用 户 界 面 。 它 利 用 鼠

标 、 菜 单 、 窗 口 、 滚 动 条 等 设 施 , 给 用 户 呈 现一 个 直 观 、 易 操 作 、 交 互 性 强 的 、 友 好 的 图 形化 界 面 。

9) 丰 富 的 网 络 功 能Linux 在 通 信 和 网 络 功 能 方 面 优 于 其 他 操 作 系

统 。 Linux 为 用 户 提 供 了 完 善 、 强 大 的 网 络 功 能 ,能 够 有 效 地 进 行 Internet 通 信 、 文 件 传 输 和 远 程 访问 。

10) 良 好 的 可 移 植 性Linux 是 一 种 可 移 植 的 操 作 系 统 , 能 够 在 从 微

型 计 算 机 到 大 型 计 算 机 的 任 何 环 境 中 和 任 何 平台 上 运 行 。 可 移 植 性 为 运 行 Linux 的 不 同 计 算 机平 台 与 其 他 任 何 机 器 进 行 准 确 而 有 效 的 通 信 提

• 14 •

Page 15: 预备篇 · Web viewOpen Office ——成熟的office应用套件,类似并兼容MS Office。包括了字处理、电子表格、演示文稿、公式编辑和绘图程序。字处理程序可以直接将文档转换为PDF格式。Perl——广受欢迎的解释性编程语言,适合于检索任意文本

第 1章 Linux 基 础供 了 手 段 , 不 需 要 另 外 增 加 特 殊 、 昂 贵 的 通 信接 口 。

11) 适 合 需 要 小 核 心 程 序 的 嵌 入 式 系 统由 于 Linux 用 很 少 的 程 序 代 码 就 可 以 实 现 一 个

完 整 的 操 作 系 统 , 因 此 相 当 适 合 嵌 入 式 系 统 。Linux 很 适 合 做 诸 如 手 机 、 数 码 相 机 、 PDA 、 家 电用 品 等 的 操 作 系 统 。

当 然 , Linux 还 有 待 改 进 的 地 方 :(a) 没 有 特 定 的 支 持 厂 商 Linux 上 的 所 有 套 件

几 乎 都 是 自 由 软 件 , 而 每 个 自 由 软 件 的 开 发 人员 可 能 并 不 属 于 公 司 团 体 , 而 是 属 于 非 营 利 性质 的 团 体 。

(b) 图 形 界 面 还 不 够 友 好 虽 然 早 在 1994 年Linux 1.0 发 布 时 , 就 已 经 含 有 XFree 86的 X Window 架 构 了 ,但 是 X Window 毕 竟 是 Linux 上 的 一 个 软 件 , 而 不 是Linux 最 核 心 的 部 分 。1.1.6 Linux 与 Windows操 作 系 统

和 Linux 一 样 , Windows 是 完 全 的 多 任 务 操 作 系统 。 它 们 支 持 同 样 的 用 户 接 口 、 网 络 和 安 全 性但 Windows 操 作 系 统 是 商 用 的 操 作 系 统 , 由 微 软公 司 控 制 接 口 和 设 计 。 因 此 , 用 户 无 法 对Windows 做 任 何 改 动 。

在 稳 定 性 方 面 , Linux 和 Windows 运 行 的 稳 定 性各 有 优 劣 。 但 Linux 的 任 何 程 序 都 是 相 对 独 立 的 ,哪 怕 GNOME和 KDE( 窗 口 管 理 程 序 ) 也 是 独 立 的 。 因此 软 件 的 崩 溃 难 以 造 成 系 统 的 瘫 痪 ( 死 机 ) 。 此时 , 只 要 重 新 运 行 程 序 就 可 以 恢 复 。 Windows 的死 机 频 率 远 远 高 于 Linux 。

在 多 用 户 方 面 , Linux 是 真 正 的 多 用 户 系 统 ,可 以 有 多 个 用 户 真 正 登 录 。 而 相 对 来 说Windows 就 很 勉 强 。

在 对 中 文 的 支 持 方 面 , Windows 的 多 个 版 本 对于 中 文 的 支 持 是 很 强 的 , 字 体 也 很 漂 亮 。 而Linux 虽 然 也 支 持 中 文 , 但 要 完 全 支 持 中 文 需 要手 动 做 很 多 设 置 。 不 过 由 于 几 乎 每 个 软 件 都 要设 置 字 体 和 字 符 编 码 , 即 使 做 得 再 好 , 仍 然 可

• 15 •

Page 16: 预备篇 · Web viewOpen Office ——成熟的office应用套件,类似并兼容MS Office。包括了字处理、电子表格、演示文稿、公式编辑和绘图程序。字处理程序可以直接将文档转换为PDF格式。Perl——广受欢迎的解释性编程语言,适合于检索任意文本

软件综合开发案例教程——Linux、GCC、MySQL、Socket、Gtk+与开源案例能 看 到 中 文 乱 码 , 而 且 开 源 的 中 文 字 体 基 本 都不 大 好 看 。 因 此 , Linux 在 中 文 显 示 上 其 效 果 不如 Windows 。

在 安 全 性 方 面 , Windows 的 安 全 性 是 很 有 问 题的 , 为 此 , 必 须 安 装 各 种 杀 毒 软 件 、 防 火 墙 、防 垃 圾 软 件 、 防 间 谍 软 件 等 保 证 安 全 的 软 件 ,而 这 些 软 件 的 安 装 占 去 了 很 多 的 系 统 资 源 。 即使 这 样 , 还 是 防 不 胜 防 。 相 对 而 言 , Linux 的 安全 性 好 很 多 。

在 应 用 软 件 方 面 , 虽 然 Linux 下 的 软 件 有 很 多 ,但 相 比 Windows , 还 是 少 很 多 。 Linux 没 有 特 定 的 支持 厂 商 , 而 微 软 的 商 业 运 作 很 成 功 。

在 易 用 性 方 面 , Windows 相 当 容 易 上 手 , 而Linux 的 学 习 成 本 则 很 高 , 特 别 是 做 系 统 配 置 时 ,Linux 的 复 杂 性 就 充 分 体 现 出 来 了 。 加 上 Linux 的 文档 材 料 远 不 如 Windows , 这 使 得 Linux 的 学 习 和 使 用成 本 都 增 加 了 。

由 于 受 知 识 产 权 的 限 制 , 所 以 无 论 是 使 用PC 平 台 上 的 Windows , 还 是 使 用 应 用 于 大 中 型 机的 UNIX , 都 无 法 窥 视 到 其 内 部 结 构 。 这 些 系 统很 可 能 存 在 不 为 我 们 所 知 的 漏 洞 , 如 果 这 些 漏洞 为 别 有 用 心 者 所 利 用 , 将 会 产 生 各 种 安 全 问题 。 操 作 系 统 不 同 于 其 他 软 件 产 品 , 它 是 其 他应 用 程 序 得 以 运 行 的 平 台 。 由 于 我 们 无 法 获 知这 些 系 统 的 细 节 , 所 以 我 们 无 法 确 保 计 算 机 应用 的 安 全 , 长 此 以 往 , 将 会 对 软 件 产 业 发 展 产生 深 远 的 负 面 影 响 。

Linux 的 出 现 , 一 方 面 促 进 了 许 多 国 家 软 件 产业 的 发 展 , 另 一 方 面 , 它 也 为 广 大 学 生 提 供 了一 份 宝 贵 的 学 习 资 料 。 目 前 UNIX 、 Linux 、 Windows三 种 操 作 系 统 三 分 天 下 , 最 终 谁 能 占 领 市 场 的主 流 而 成 为 市 场 霸 主 , 目 前 还 没 有 定 论 。 但 总的 说 来 , Linux 的 发 展 前 景 是 很 广 阔 的 。

1.2 Linux文件系统文 件 系 统 是 包 括 在 一 个 磁 盘 ( 包 括 光 盘 、 软

盘 、 闪 盘 以 及 其 他 存 储 设 备 ) 或 分 区 的 目 录 结

• 16 •

Page 17: 预备篇 · Web viewOpen Office ——成熟的office应用套件,类似并兼容MS Office。包括了字处理、电子表格、演示文稿、公式编辑和绘图程序。字处理程序可以直接将文档转换为PDF格式。Perl——广受欢迎的解释性编程语言,适合于检索任意文本

第 1章 Linux 基 础构 。 一 个 可 应 用 的 磁 盘 设 备 可 以 包 含 一 个 或 多个 文 件 系 统 。 文 件 系 统 是 文 件 的 数 据 结 构 或 组织 方 法 。 文 件 系 统 是 基 于 操 作 系 统 的 , 建 立 在磁 盘 媒 质 上 的 可 见 体 系 结 构 。 在 计 算 机 行 业 ,文 件 系 统 是 组 织 存 储 文 件 或 数 据 的 方 法 , 目 的是 使 文 件 和 数 据 易 于 查 询 和 存 取 。

一 般 计 算 机 中 的 一 块 硬 盘 可 以 分 为 一 个 主分 区 和 若 干 个 扩 展 分 区 ( 逻 辑 分 区 ) , Linux 操 作系 统 可 以 安 装 在 任 何 地 方 , 因 此 许 多 机 器 上 可以 同 时 安 装 多 个 Windows 及 Linux 系 统 。

在 Linux 下 没 有 盘 符 的 概 念 , 不 管 是 什 么 存 储盘 , 在 它 里 面 都 是 一 样 对 待 的 。 系 统 里 只 有 从根 目 录 往 下 一 层 层 的 目 录 , 一 个 盘 可 以 有 多 个目 录 , 一 个 目 录 也 可 能 会 跨 多 个 盘 。 文 件 系 统是 Linux 操 作 系 统 的 重 要 组 成 部 分 , Linux 文 件 系 统具 有 强 大 的 功 能 。 Linux 支 持 多 种 文 件 系 统 , 从而 更 加 灵 活 , 并 且 可 以 和 许 多 其 他 操 作 系 统 共存 。 Linux 已 经 可 以 支 持 15 种 以 上 的 文 件 系 统 :EXT 、 EXT2 、 xia 、 minix 、 umsdos 、 msdos 、 vfat 、 proc、 smb、 ncp 、 iso 9660 、 sysv、 hpfs、 affs 以 及 ufs 等 。 毫 无 疑 问 ,它 今 后 支 持 的 文 件 系 统 类 型 还 将 增 加 。

(a) EXT2: EXT2 是 GNU/Linux 系 统 中 标 准 的 文 件 系 统 。这 是 Linux 中 使 用 最 多 的 一 种 文 件 系 统 , 它 是 专门 为 Linux 设 计 的 , 拥 有 极 快 的 速 度 和 极 小 的 CPU占 用 率 。 EXT2 既 可 以 用 于 标 准 的 块 设 备 ( 如 硬盘 ) , 也 可 以 应 用 于 软 盘 等 移 动 存 储 设 备 上 。

(b) EXT3 : EXT3 是 EXT2 的 下 一 代 , 也 就 是 在 保 有EXT2 的 格 式 之 下 再 加 上 日 志 功 能 , 是 一 种 日 志文 件 系 统 (Journal File System), 其 最 大 特 点 是 : 它 能 够将 整 个 磁 盘 的 写 入 动 作 完 整 地 记 录 在 磁 盘 的 某个 区 域 上 , 以 便 有 需 要 时 回 溯 追 踪 。 当 在 某 个过 程 中 断 时 , 系 统 可 以 根 据 这 些 记 录 直 接 回 溯并 重 整 被 中 断 的 部 分 , 重 整 速 度 相 当 快 。 该 分区 格 式 被 广 泛 应 用 在 Linux 系 统 中 。

(c) Linux swap : 它 是 Linux 中 一 种 专 门 用 于 交 换 分区 的 swap 文 件 系 统 。 Linux 使 用 这 一 整 个 分 区 作 为交 换 空 间 。 一 般 这 个 swap 格 式 的 交 换 分 区 是 主内 存 的 两 倍 。 在 内 存 不 够 时 , Linux 会 将 部 分 数据 写 到 交 换 分 区 上 。

• 17 •

Page 18: 预备篇 · Web viewOpen Office ——成熟的office应用套件,类似并兼容MS Office。包括了字处理、电子表格、演示文稿、公式编辑和绘图程序。字处理程序可以直接将文档转换为PDF格式。Perl——广受欢迎的解释性编程语言,适合于检索任意文本

软件综合开发案例教程——Linux、GCC、MySQL、Socket、Gtk+与开源案例(d) VFAT : VFAT 叫 长 文 件 名 系 统 , 这 是 一 个 与

Windows 系 统 兼 容 的 Linux 文 件 系 统 , 支 持 长 文 件 名 ,可 以 作 为 Windows 与 Linux 交 换 文 件 的 分 区 。

(e) 其 他 : RAMFS , 内 存 文 件 系 统 , 速 度 很 快 ;NFS, 网 络 文 件 系 统 , 由 SUN 发 明 , 主 要 用 于 远程 文 件 共 享 ; MS-DOS , MS-DOS 文 件 系 统 ;FAT , Windows XP 操 作 系 统 采 用 的 文 件 系 统 ;NTFS , Windows NT/XP 操 作 系 统 采 用 的 文 件 系 统 ;HPFS , OS/2 操 作 系 统 采 用 的 文 件 系 统 ; PROC , 虚拟 的 进 程 文 件 系 统 ; ISO 9660 , 大 部 分 光 盘 所 采用 的 文 件 系 统 ; ufsSun, OS 所 采 用 的 文 件 系 统 ;NCPFS , Novell 服 务 器 所 采 用 的 文 件 系 统 ;SMBFS , Samba的 共 享 文 件 系 统 ; XFS, 由 SGI 开 发 的先 进 日 志 文 件 系 统 , 支 持 超 大 容 量 文 件 ;JFS , IBM的 AIX所 使 用 的 日 志 文 件 系 统 ; ReiserFS, 基于 平 衡 树 结 构 的 文 件 系 统 ; udf , 可 擦 写 的 数 据光 盘 文 件 系 统 。

其 中 , EXT2(或 EXT3)是 Linux 默 认 的 文 件 系 统 。 我们 把 EXT2(或 EXT3)以 及 Linux 支 持 的 文 件 系 统 称 为 逻辑 文 件 系 统 。 本 书 将 以 Linux 最 标 准 的 EXT2 文 件 系统 为 例 进 行 介 绍 。1.2.1 文 件 系 统

文 件 系 统 是 操 作 系 统 用 以 表 明 磁 盘 或 分 区上 文 件 的 一 种 方 法 以 及 数 据 结 构 , 也 即 磁 盘 上文 件 组 织 的 方 法 。 文 件 系 统 创 建 过 程 是 存 储 设备 建 立 文 件 系 统 的 过 程 , 一 般 也 被 称 为 格 式 化或 初 始 化 , 通 过 一 些 初 始 化 工 具 来 进 行 。 一 般情 况 下 , 每 个 类 型 的 操 作 系 统 都 有 这 方 面 的 工具 , 也 有 多 功 能 的 第 三 方 工 具 , 在 Linux 中 有 mkfs 系 列 工 具 。

1. 逻 辑 分 区和 很 多 文 件 系 统 一 样 , EXT2 建 立 在 数 据 被 保

存 在 数 据 块 中 的 文 件 内 这 个 前 提 下 。 这 些 数 据块 长 度 相 等 且 这 个 长 度 可 以 变 化 , 某 个 EXT2 文件 系 统 的 块 大 小 在 创 建 ( 使 用 mke2fs) 时 设 置 。 每个 文 件 的 大 小 要 大 于 或 等 于 块 大 小 的 整 数 倍 。

• 18 •

Page 19: 预备篇 · Web viewOpen Office ——成熟的office应用套件,类似并兼容MS Office。包括了字处理、电子表格、演示文稿、公式编辑和绘图程序。字处理程序可以直接将文档转换为PDF格式。Perl——广受欢迎的解释性编程语言,适合于检索任意文本

第 1章 Linux 基 础如 果 块 大 小 为 1024 字 节 , 则 一 个 1025 字 节 的 文 件将 占 据 两 个 1024 字 节 大 小 的 块 。 这 样 你 将 不 得不 浪 费 差 不 多 一 个 块 的 空 间 。 我 们 通 常 需 要 在CPU 的 内 存 利 用 率 和 磁 盘 空 间 使 用 上 进 行 折 中 。而 大 多 数 操 作 系 统 , 包 括 Linux 在 内 , 为 了 减 少CPU 的 工 作 负 载 而 被 迫 选 择 相 对 较 低 的 磁 盘 空间 利 用 率 。 并 不 是 文 件 中 每 个 块 都 包 含 数 据 ,其 中 有 些 块 被 用 来 包 含 描 述 此 文 件 系 统 结 构 的信 息 。 EXT2 通 过 一 个 inode 结 构 来 描 述 文 件 系 统 中的 文 件 并 确 定 此 文 件 系 统 的 拓 扑 结 构 。 inode 结构 描 述 文 件 中 的 数 据 占 据 哪 个 块 以 及 文 件 的 存取 权 限 、 文 件 修 改 时 间 及 文 件 类 型 。 EXT2 文 件系 统 中 的 每 个 文 件 用 一 个 inode 表 示 , 且 每 个 inode有 唯 一 的 编 号 。 文 件 系 统 中 所 有 的 inode 都 被 保存 在 inode 表 中 。 EXT2 目 录 仅 是 一 个 包 含 指 向 其 目录 入 口 指 针 的 特 殊 文 件 ( 也 用 inode 表 示 ) 。

对 于 文 件 系 统 而 言 , 文 件 仅 是 一 系 列 可 读写 的 数 据 块 。 文 件 系 统 并 不 需 要 了 解 数 据 块 应该 放 置 到 物 理 介 质 上 的 什 么 位 置 , 这 些 都 是 设备 驱 动 程 序 要 完 成 的 任 务 。 无 论 何 时 , 只 要 文件 系 统 需 要 从 包 含 它 的 块 设 备 中 读 取 信 息 或 数据 , 它 将 请 求 底 层 的 设 备 驱 动 程 序 读 取 一 个 基本 块 大 小 整 数 倍 的 数 据 块 。 EXT2 文 件 系 统 将 它所 使 用 的 逻 辑 分 区 划 分 成 数 据 块 组 。 每 个 数 据块 组 将 那 些 对 文 件 系 统 完 整 性 最 重 要 的 信 息 复制 出 来 , 同 时 将 实 际 文 件 和 目 录 看 作 信 息 与 数据 块 。 为 了 在 发 生 灾 难 性 事 件 时 对 文 件 系 统 修复 , 这 些 复 制 非 常 有 必 要 。

2. 文 件 系 统 的 结 构文 件 系 统 只 有 挂 载 才 能 使 用 , Linux 操 作 系 统

是 通 过 mount 进 行 的 , 挂 载 文 件 系 统 时 要 有 挂 载点 ( 挂 载 点 实 际 上 就 是 Linux 中 磁 盘 文 件 系 统 的 入口 目 录 ) 。 比 如 , 我 们 在 安 装 Linux 的 过 程 中 , 有时 会 提 示 我 们 分 区 , 然 后 建 立 文 件 系 统 , 接 着是 提 问 你 的 挂 载 点 是 什 么 , 我 们 大 多 选 择 的 是根 目 录 。 在 Linux 系 统 的 使 用 过 程 中 , 也 会 挂 载其 他 硬 盘 分 区 , 也 要 选 中 挂 载 点 。 挂 载 点 通 常是 一 个 空 置 的 目 录 , 最 好 是 我 们 自 建 的 空 置 目

• 19 •

Page 20: 预备篇 · Web viewOpen Office ——成熟的office应用套件,类似并兼容MS Office。包括了字处理、电子表格、演示文稿、公式编辑和绘图程序。字处理程序可以直接将文档转换为PDF格式。Perl——广受欢迎的解释性编程语言,适合于检索任意文本

软件综合开发案例教程——Linux、GCC、MySQL、Socket、Gtk+与开源案例录 。

文 件 系 统 是 用 来 组 织 和 排 列 文 件 存 取 的 ,Linux 文 件 系 统 使 用 索 引 节 点 来 记 录 文 件 信 息 ,作 用 类 似 于 Windows 的 文 件 分 配 表 。 索 引 节 点 是一 个 结 构 , 它 包 含 了 一 个 文 件 的 长 度 、 创 建 及修 改 时 间 、 权 限 、 所 属 关 系 、 磁 盘 中 的 位 置 等信 息 。 每 个 文 件 或 目 录 都 与 索 引 节 点 数 组 中 的唯 一 一 个 元 素 对 应 。 系 统 给 每 个 索 引 节 点 分 配了 一 个 号 码 , 称 为 索 引 节 点 号 。 Linux 文 件 系 统将 文 件 索 引 节 点 号 和 文 件 名 同 时 保 存 在 目 录 中目 录 只 是 将 文 件 的 名 称 和 它 的 索 引 节 点 号 结 合在 一 起 的 一 张 表 。

文 件 结 构 是 文 件 存 放 在 磁 盘 等 存 储 设 备 上的 组 织 方 法 。 在 Linux 中 , 我 们 可 以 通 过 ls等 工 具来 查 看 其 结 构 。 Linux 系 统 中 的 每 个 分 区 都 是 一个 文 件 系 统 , 都 有 自 己 的 目 录 层 次 结 构 。 Linux的 目 录 结 构 是 树 型 结 构 , 树 的 根 在 顶 部 , 各 种目 录 和 文 件 从 树 根 向 下 分 支 。 顶 层 目 录 (/)被 称为 根 目 录 , 其 他 的 所 有 目 录 都 是 从 根 目 录 出 发而 生 成 的 子 目 录 。 在 Linux 中 , 无 论 操 作 系 统 管理 几 个 磁 盘 分 区 , 这 样 的 目 录 树 只 有 一 个 。Linux 文 件 系 统 的 结 构 如 图 1-1 所 示 :

图1-1 Linux文件系统的结构3. 虚 拟 文 件 系 统Linux 在 传 统 的 逻 辑 文 件 系 统 基 础 上 , 增 加 了

一 个 虚 拟 文 件 系 统 (Virtual File System , VFS) 的 接 口 层 :VFS在 最 上 层 , 管 理 各 种 逻 辑 文 件 系 统 , 屏 蔽 了它 们 之 间 的 差 异 , 为 用 户 命 令 、 函 数 调 用 和 内核 其 他 部 分 提 供 访 问 文 件 和 设 备 的 统 一 接 口 ,使 得 不 同 的 逻 辑 文 件 系 统 按 照 同 样 的 模 式 呈 现在 使 用 者 面 前 , 如 图 1-2 所 示 。 对 于 用 户 来 讲 ,觉 察 不 到 逻 辑 文 件 系 统 的 差 异 , 可 以 使 用 同 样的 命 令 来 操 作 不 同 的 逻 辑 文 件 系 统 所 管 理 的 文

• 20 •

Page 21: 预备篇 · Web viewOpen Office ——成熟的office应用套件,类似并兼容MS Office。包括了字处理、电子表格、演示文稿、公式编辑和绘图程序。字处理程序可以直接将文档转换为PDF格式。Perl——广受欢迎的解释性编程语言,适合于检索任意文本

第 1章 Linux 基 础件 , 可 以 在 它 们 之 间 自 由 地 复 制 文 件 。

图1-2 虚拟文件系统的结构4. 文 件 系 统 的 组 织 结 构如 图 1-1 所 示 , Linux 文 件 系 统 的 组 织 结 构 主 要

反 映 在 目 录 的 组 织 结 构 上 ( 见 表 1-1)。表1-1 Linux文件系统的组织结构及重要目录

目 录 说 明

/bin

这是存放诸如 ls 、mv 、 rm、mkdir 、 rmdir、gzip 、 tar、 telnet及 ftp等常用执行程序的地方 ( 这些执行程序的执行方法会在后面提到 ) ,有时候这个目录的内容与 /usr/bin 是一样的,是一般使用者使用的执行程序存放的位置

/boot

存放Linux 核心与开机相关文件的地方,这个目录下的 vmlinuz-xxx 就是Linux 的Kernel 。而如果你的开机管理程序选择 grub 的话,那么这个目录内还有 /boot/grub 这个子目录

/dev一些与设备有关的文件。基本上UNIX 或Linux 系统均把设备当成一个文件来看待,例如 /dev/fd0代表软盘,而 /dev/cdrom 则代表光盘,等等

( 续表 )

目 录 说 明

/etc

系统在开机过程中需要读取的文件均在这个目录中,例如Lilo 的参数、人员的账 号与密码、系统的主要设定、 http 网页的参数内容、你所要开启的服务项目等都在这个目录中,所以在这个目录下工作的时候,请记住一定要备份

/etc/rc.d这个路径主要是记录一些开关机过程中的 scripts 文件, scripts 有点像是DOS下的批处理 (.bat)

/etc/rc.d/

init.d

所有服务预设的启动 scripts 都是放在这里的,例如要启动与关闭 iptables的话,可以执行以下命令:/etc/rc.d/init.d/iptables start

/etc/rc.d/init.d/iptables stop

• 21 •

Page 22: 预备篇 · Web viewOpen Office ——成熟的office应用套件,类似并兼容MS Office。包括了字处理、电子表格、演示文稿、公式编辑和绘图程序。字处理程序可以直接将文档转换为PDF格式。Perl——广受欢迎的解释性编程语言,适合于检索任意文本

软件综合开发案例教程——Linux、GCC、MySQL、Socket、Gtk+与开源案例

/etc/

xinetd.d

这个路径在较新的Linux 发行版中才有。早期版本中用来开启服务的文件是 inetd.conf ;但是在较新的版本中,开启服务已经变成使用 xinetd.conf 这个文件

/etc/X11 这是与X Windows 有关的设定文件所在的目录

/home基本上,这是系统预设的用户目录 (home directory) ,在你新增一般用户账户的时候,预设的用户目录都在这里设定好了

/lib在Linux 执行或编译一些程序的时候,均会用到一些库 (library),这些库就在这个目录下

/lost+fount系统不正常产生错误时,会将一些遗 失的片 段存放于此目录下。通常这个目录会自动出现在设备目录下

/mnt这是软盘与光盘预设挂载点的地方;通常软盘挂在 /mnt/floppy 下,而光盘挂在 /mnt/cdrom 下

/opt

表示的意思是可选择,有些软件包也会被安装在这里,也就是自定义软件包,比如在Fedora Core 5.0中,OpenOffice 就是安装在这里。有些我们自己编译的软件包,也可以安装在这个目录中;通过源码包安装的软件,可以放在 ./configure --prefix=/opt/ 目录。

/proc

系统核心与执行程序的一些信息。例如,你的网络状态的问题!这个目录将在启动Linux 的时候自动被挂上,而且该目录底下不会占用硬盘空间!因为里面都是“内存”内的数据

/root 系统管理员目录

/sbin

存 放 一 些 系 统 管 理 常 用 的 程 序 , 例 如fdisk、mke2fs 、 fsck 、mkswap、mount ,等等。与 /bin 不太一样的地方在于,这个目录下的程序通常是给 root 等系统管理员使用的

/tmp这是让一般使用者暂时存放文件的地方,例如在安装 Linux 下的软件时,可能软件默认的工作目录就是 /tmp ,所以要定期清理它

/usr

这是最重要的一个目录了,里面含有相当多的系统信息,内有许多目录,用来存放程序与指令等。这个目录有点类似于Windows 下的“Program Files”目录

/usr/bin 存放可执行程序,如前所述,这个目录的文件与 /bin 几乎是相同的/usr/

include

一些软件的 header 。基本上,当我们以 tarball 方式 ( 以*.tar.gz 的方式安装软件 ) 安装某些数据时,会使用到的一些库都在这个目录下

/usr/lib 内含许多程序与子程序所需的函数库( 续表 )

目 录 说 明

/usr/local 在安装完了Linux 之后,基本上所有的配备你都有了,但软件总是可以升

• 22 •

Page 23: 预备篇 · Web viewOpen Office ——成熟的office应用套件,类似并兼容MS Office。包括了字处理、电子表格、演示文稿、公式编辑和绘图程序。字处理程序可以直接将文档转换为PDF格式。Perl——广受欢迎的解释性编程语言,适合于检索任意文本

第 1章 Linux 基 础级的,例如要升级你的 proxy 服务,则通常软件默 认的安装地方就是 /usr/

local(local是“本地”的意思 ) ,其中的执行文件安装在 /usr/local/bin 这个地方

/usr/sbin 存放系统管理程序,与 /sbin的功能类似/usr/share/

doc

存放一些系统说明文件的地方,例如安装了 lilo ,那么在该目录底下找一找,就可以查到 lilo 的说明文件

/usr/

share/man存放一些程序的说明文件

/usr/src这是存放核心原代码的默 认目录,未来我们要编译核心的时候,就必须到这个目录下

/usr/X11R6 X Window System存放相关文件的目录

/var

所有服务的登录文件或错误信息文件 (log files) 都在 /var/log下,一些数据库( 如MySQL数据库 ) 则在 /var/lib 下。此外,未读邮件的默 认存放地点为 /var

/spool/mail

/var/adm 比如软件包安装信息、日志、管理信息等/var/log 系统日志存放目录/var/spool 打印机、邮件、代理服务器等假 脱机目录

1.2.2 文 件文 件 系 统 中 的 文 件 是 数 据 的 集 合 , 它 不 仅

包 含 着 文 件 中 的 数 据 , 而 且 还 有 文 件 系 统 的 结构 , 所 有 Linux 用 户 和 程 序 看 到 的 文 件 、 目 录 、链 接 及 文 件 保 护 信 息 等 都 存 储 在 其 中 。

1. Linux 系 统 文 件 的 类 型Linux 系 统 中 文 件 的 类 型 包 括 : 普 通 文 件 、 目

录 文 件 、 链 接 文 件 、 设 备 文 件 、 管 道 (FIFO)文 件和 套 接 字 文 件 等 。

普 通 文 件 是 流 式 文 件 , 如 文 本 文 件 、 C语 言源 代 码 、 Shell 脚 本 、 二 进 制 的 可 执 行 文 件 等 ,可 用 cat 、 less 、 more 、 vi、 emacs 来 查 看 内 容 , 用 mv来 变 更 文 件 名 。

目 录 文 件 用 于 表 示 管 理 系 统 中 的 全 部 文 件 ,包 括 文 件 名 、 子 目 录 名 及 其 指 针 。 它 是 Linux 存储 文 件 名 的 唯 一 地 方 , 可 用 ls列 出 目 录 文 件 。

链 接 文 件 是 指 向 同 一 索 引 节 点 的 那 些 目 录

• 23 •

Page 24: 预备篇 · Web viewOpen Office ——成熟的office应用套件,类似并兼容MS Office。包括了字处理、电子表格、演示文稿、公式编辑和绘图程序。字处理程序可以直接将文档转换为PDF格式。Perl——广受欢迎的解释性编程语言,适合于检索任意文本

软件综合开发案例教程——Linux、GCC、MySQL、Socket、Gtk+与开源案例条 目 。 用 ls来 查 看 时 , 链 接 文 件 的 标 志 用 “ l”开头 , 而 文 件 后 以 “ ->” 指 向 所 链 接 的 文 件 。

设 备 文 件 包 括 块 设 备 文 件 和 字 符 设 备 文 件 。块 设 备 文 件 表 示 磁 盘 、 光 盘 等 , 字 符 设 备 文 件联 系 着 按 照 字 符 进 行 操 作 的 终 端 、 键 盘 等 设 备它 们 常 放 在 /dev 目 录 内 。 例 如 , 软 驱 A 称 为 /dev/fd0 。 Linux 无 “ C:” 盘 的 概 念 , 而 是 用 /dev/had 表 示 第一 硬 盘 。

管 道 (FIFO) 文 件 提 供 进 程 间 通 信 的 一 种 方 式 。套 接 字 (socket) 文 件 和 网 络 通 信 有 关 。设 备 文 件 、 管 道 (FIFO)文 件 和 套 接 字 文 件 等 ,

统 称 为 特 殊 文 件 。2. 文 件 的 权 限 属 性

文 件 包 括 10 个 属 性 内 容 , 如 图 1-3 所 示 。

图1-3 文件的10个属性内容第 一 个 属 性 表 示 这 个 文 件 是 目 录 还 是 链 接

文 件 等 : “ d” 表 示 目 录 , “ -”表 示 文 件 , “ ln”表 示 链 接 文 件 , “ b” 表 示 设 备 文 件 中 可 供 存 储的 接 口 设 备 , “ c” 表 示 设 备 文 件 中 的 串 行 端 口设 备 。

接 下 来 的 属 性 中 , 3 个 为 一 组 , 且 均 为r 、 w、 x 这 3 个 参 数 的 组 合 。 其 中 , “ r”表 示 可读 , “ w” 表 示 可 写 , “ x” 表 示 可 执 行 。 第 一 组为 “ 文 件 所 有 者 的 权 限 ” , 第 二 组 为 “ 同 用 户组 的 权 限 ” , 第 三 组 为 “ 其 他 非 本 用 户 组 的 权限 ” 。

3. 更 改 文 件 权 限

1) 更 改 所 属 用 户 组 chgrp

[root@linux ~]# chgrp [-R] dirname/filename

参 数 :

• 24 •

Page 25: 预备篇 · Web viewOpen Office ——成熟的office应用套件,类似并兼容MS Office。包括了字处理、电子表格、演示文稿、公式编辑和绘图程序。字处理程序可以直接将文档转换为PDF格式。Perl——广受欢迎的解释性编程语言,适合于检索任意文本

第 1章 Linux 基 础-R : 进 行 递 归 的 持 续 更 改 , 即 连 同 子 目 录

下 的 所 有 文 件 、 目 录 都 更 新 成 这 个 用 户 组 。 它常 常 用 在 更 改 某 一 目 录 的 情 况 。

2) 更 改 文 件 拥 有 者 chown

[root@linux ~]# chown [-R] 账户名称:文件或目录

[root@linux ~]# chown [-R] 账户名称:用户组名称、文件或目录

参 数 :-R : 进 行 递 归 的 持 续 更 改 , 即 连 同 子 目 录

下 的 所 有 文 件 、 目 录 都 更 新 成 这 个 用 户 组 。 它常 常 用 在 更 改 某 一 目 录 的 情 况 。

3) 更 改 9 个 属 性 chmod

[root@linux ~]# chmod[-R] [Who] [opt] [mod] 文件或目录参 数 :who: 表 示 对 象 , 是 u 、 g 、 o 、 a 字 母 中 的 一

个 或 组 合 。 u 表 示 文 件 所 有 者 , g 表 示 同 组 用 户 ,o 表 示 其 他 用 户 , a 表 示 所 有 用 户 。

opt : 符 号 类 型 改 变 文 件 权 限 , “ +” 添 加 某个 权 限 , “ – ” 取 消 某 个 权 限 , “ =” 赋 予 给 定的 权 限 , 并 取 消 原 有 的 权 限 。

mod: 数 字 类 型 的 权 限 属 性 , 为 r 、 w、 x 属 性数 值 的 和 , 其 中 r 、 w 、 x 的 属 性 数 值 分 别 为4 、 2 、 1 。

-R : 进 行 递 归 的 持 续 更 改 , 即 连 同 子 目 录下 的 所 有 文 件 、 目 录 都 更 新 成 这 个 用 户 组 。 它常 常 用 在 更 改 某 一 目 录 的 情 况 。

表 1-2 是 文 件 权 限 改 变 列 表 , 请 读 者 参 阅 。表1-2 文件权限改变列表

chmod

u(user)

g(group)

o(others)

a(all)

+(加上 )

-( 除去 )

=(设置 )

r

w

x

文 件 或 目录

4. 目 录 相 关 操 作

1) 切 换 目 录 : cd

• 25 •

Page 26: 预备篇 · Web viewOpen Office ——成熟的office应用套件,类似并兼容MS Office。包括了字处理、电子表格、演示文稿、公式编辑和绘图程序。字处理程序可以直接将文档转换为PDF格式。Perl——广受欢迎的解释性编程语言,适合于检索任意文本

软件综合开发案例教程——Linux、GCC、MySQL、Socket、Gtk+与开源案例 [root@linux ~]# cd 相对路径或绝对路径

2) 显 示 当 前 所 在 的 目 录 : pwd

[root@linux ~]# pwd [-P]

参 数 :-P: 显 示 出 实 际 路 径 , 而 非 使 用 链 接 路 径 。3) 建 立 新 目 录 : mkdir

[root@linux ~]# mkdir [-mp] 目录名

参 数 :-m : 设 置 文 件 的 权 限 。 直 接 设 置 , 不 要 管

默 认 权 限 。-p: 帮 助 直 接 建 立 所 需 要 的 目 录 递 归 。4) 删 除 “ 空 ” 目 录 : rmdir

[root@linux ~]# rmdir [-p] 目录名

参 数 :-p: 与 上 层 的 “ 空 ” 目 录 也 一 起 删 除 。5. 执 行 文 件 路 径 的 变 量 : $PATH

[root@linux ~]# echo $PATH

6. 管 理 文 件 与 目 录

1) 查 看 文 件 和 目 录 ls

[root@linux ~]# ls [-aAdfFhilnrRSt] 目录名

[root@linux ~]# ls [--color={never, auto, always}] 目录名

[root@linux ~]# ls [--full-time] 目录名

参 数 :-a: 全 部 文 件 , 与 隐 藏 文 件 ( 开 头 为 “ .”的 文

件 ) 一 起 列 出 来 。-A : 全 部 文 件 , 与 隐 藏 文 件 ( 但 不 包 括 “ .”

与 “ ..” 这 两 个 目 录 ) 一 起 列 出 来 。-d: 仅 列 出 目 录 本 身 , 而 不 是 列 出 目 录 内 的

文 件 数 据 。-f: 直 接 列 出 结 果 , 而 不 进 行 排 序 (ls 默 认 会

• 26 •

Page 27: 预备篇 · Web viewOpen Office ——成熟的office应用套件,类似并兼容MS Office。包括了字处理、电子表格、演示文稿、公式编辑和绘图程序。字处理程序可以直接将文档转换为PDF格式。Perl——广受欢迎的解释性编程语言,适合于检索任意文本

第 1章 Linux 基 础对 文 件 名 排 序 ) 。

-F: 根 据 文 件 、 目 录 等 信 息 , 附 加 数 据 结 构 。例 如 : “ *” 表 示 可 执 行 文 件 , “ /”表 示 目 录 ,“ =” 表 示 套 接 字 文 件 , “ |”表 示 FIFO 文 件 。

-h: 列 出 文 件 大 小 ( 例 如 GB 、 KB , 等 等 ) 。-i : 列 出 inode 位 置 , 而 非 列 出 文 件 属 性 。-l : 列 出 长 数 据 串 , 包 含 文 件 的 属 性 。-n: 列 出 UID与 GID, 而 非 用 户 与 用 户 组 的 名 称 。-r: 将 排 序 结 果 反 向 输 出 , 例 如 原 文 件 名 为

由 小 到 大 , 反 向 后 则 为 由 大 到 小 。-R : 与 子 目 录 内 容 一 起 列 出 来 。-S: 将 文 件 按 大 小 排 序 。-t : 按 时 间 排 序 。--color=never : 不 要 按 照 文 件 属 性 用 不 同 的 颜 色

显 示 。--color=always : 显 示 颜 色 。--color=auto : 让 系 统 自 行 按 照 设 置 来 判 断 是 否

使 用 颜 色 。--full-time : 以 完 整 时 间 模 式 ( 包 含 年 、 月 、 日 、

时 、 分 ) 输 出 。--time={atime,ctime} : 输 出 访 问 时 间 或 改 变 权 限 属

性 的 时 间 , 而 非 内 容 更 改 时 间 。2) 复 制 文 件 或 目 录 cp

[root@linux ~]# cp [-adfilprsu] 源文件 (sourse) 目标文件 (destination)

[root@linux ~]# cp [options] source1 source2 source3 ... directory

参 数 :-a: 相 当 于 -pdr的 意 思 。-d: 若 源 文 件 为 链 接 文 件 的 属 性 (link file), 则 复

制 链 接 文 件 属 性 而 非 文 件 本 身 。-f: 若 有 重 复 或 其 他 疑 问 , 不 询 问 用 户 而 强

制 复 制 。-i : 若 目 标 文 件 已 经 存 在 , 在 覆 盖 时 会 先 询

问 是 否 真 的 操 作 。-l : 建 立 硬 连 接 的 链 接 文 件 , 而 非 复 制 文 件

本 身 。-p: 与 文 件 的 属 性 一 起 复 制 , 而 非 使 用 默 认

属 性 。

• 27 •

Page 28: 预备篇 · Web viewOpen Office ——成熟的office应用套件,类似并兼容MS Office。包括了字处理、电子表格、演示文稿、公式编辑和绘图程序。字处理程序可以直接将文档转换为PDF格式。Perl——广受欢迎的解释性编程语言,适合于检索任意文本

软件综合开发案例教程——Linux、GCC、MySQL、Socket、Gtk+与开源案例-r: 递 归 持 续 复 制 , 用 于 目 录 的 复 制 操 作 。-s: 复 制 符 号 链 接 文 件 , 即 “ 快 捷 方 式 ” 文

件 。-u: 若 目 标 文 件 比 源 文 件 旧 , 则 更 新 目 标 文

件 。3) 删 除 文 件 或 目 录 rm

[root@linux ~]# rm [-fir] 文件或目录

参 数 :-f: 强 制 删 除 。-i : 交 互 模 式 , 在 删 除 前 会 询 问 用 户 是 否 真

的 操 作 。-r: 递 归 删 除 , 常 用 于 目 录 的 删 除 。4) 移 动 文 件 或 目 录 , 或 重 命 名 mv

[root@linux ~]# mv [-fiv] source destination

[root@linux ~]# mv [options] source1 source2 source3 ... directory

参 数 :-f: 强 制 直 接 移 动 而 不 询 问 。-i : 若 目 标 文 件 已 经 存 在 , 就 会 询 问 是 否 覆

盖 。-u: 只 有 当 目 标 文 件 已 经 存 在 , 且 源 文 件 比

较 新 时 才 会 更 新 。7. 查 看 文 件 内 容

1) 直 接 查 看 文 件 内 容 cat( 正 向 显 示 )

[root@linux ~]# cat [-AEnTv]

参 数 :-A : 相 当 于 -vET 的 整 合 参 数 , 可 列 出 一 些 特

殊 字 符 。-E: 将 结 尾 的 换 行 符 “ $” 显 示 出 来 。-n: 显 示 行 号 。-T: 将 “ Tab” 键 以 “ ^I” 显 示 出 来 。-v: 列 出 一 些 看 不 出 来 的 特 殊 字 符 。tac( 反 向 显 示 )

• 28 •

Page 29: 预备篇 · Web viewOpen Office ——成熟的office应用套件,类似并兼容MS Office。包括了字处理、电子表格、演示文稿、公式编辑和绘图程序。字处理程序可以直接将文档转换为PDF格式。Perl——广受欢迎的解释性编程语言,适合于检索任意文本

第 1章 Linux 基 础 [root@linux ~]# tac 文件

cat 是 将 “ 第 一 行 到 最 后 一 行 连 续 显 示 在 屏幕 上 ” , 而 tac 则 是 将 “ 最 后 一 行 到 第 一 行 反 向显 示 在 屏 幕 上 ” 。

nl( 显 示 时 添 加 行 号 )

[root@linux ~]# nl [-bnw] 文件

参 数 :-b: 指 定 行 号 的 显 示 方 式 , 主 要 有 两 种 :

-b a : 表 示 不 论 是 否 有 空 行 , 都 同 样 列 出 行号 。

-b t : 如 果 有 空 行 , 空 行 不 要 列 出 行 号 。-n: 列 出 行 号 表 示 的 方 法 , 主 要 有 3 种 :

-n ln: 行 号 在 屏 幕 的 最 左 方 显 示 。-n rn : 行 号 在 字 段 的 最 右 方 显 示 , 且 不 加

0 。-n rz: 行 号 在 字 段 的 最 右 方 显 示 , 加 0 。

2) 翻 页 查 看 more( 一 页 一 页 翻 动 )

[root@linux ~]# more 文件

在 more 程 序 的 运 行 过 程 中 , 有 如 下 几 个 按 键可 以 使 用 :

● 空 格 键 : 表 示 向 下 翻 一 页 。● Enter : 表 示 向 下 翻 一 行 。● / 字 符 串 : 表 示 在 这 个 显 示 的 内 容 中 ,向 下 搜 索 “ 字 符 串 ” 。

● :f : 立 刻 显 示 文 件 名 以 及 当 前 显 示 的 行数 。

● :q: 表 示 立 刻 离 开 more , 不 再 显 示 该 文件 的 内 容 。

less(一 页 一 页 翻 动 )

• 29 •

Page 30: 预备篇 · Web viewOpen Office ——成熟的office应用套件,类似并兼容MS Office。包括了字处理、电子表格、演示文稿、公式编辑和绘图程序。字处理程序可以直接将文档转换为PDF格式。Perl——广受欢迎的解释性编程语言,适合于检索任意文本

软件综合开发案例教程——Linux、GCC、MySQL、Socket、Gtk+与开源案例 [root@linux ~]# less 文件

在 less 程 序 的 运 行 过 程 中 , 有 如 下 几 个 按 键可 以 使 用 :

● 空 格 键 : 表 示 向 下 翻 一 页 。● [pagedown]: 表 示 向 下 翻 一 页 。● [pageup]: 表 示 向 上 翻 一 页 。● / 字 符 串 : 表 示 在 这 个 显 示 的 内 容 中 ,向 下 搜 索 “ 字 符 串 ” 。

● ? 字 符 串 : 表 示 在 这 个 显 示 的 内 容 中 ,向 上 搜 索 “ 字 符 串 ” 。

● :n: 重 复 前 一 个 搜 索 ( 与 / 或 ? 有 关 ) 。● :N : 反 向 重 复 前 一 个 搜 索 ( 与 / 或 ? 有关 ) 。

● :q: 表 示 立 刻 离 开 less , 不 再 显 示 该 文 件的 内 容 。

3) 数 据 选 取 head( 取 出 前 几 行 )

[root@linux ~]# head [-n number] 文件

参 数 :-n: 后 面 接 数 字 , 表 示 显 示 几 行 的 意 思 。tail( 取 出 后 几 行 )

[root@linux ~]# tail [-n number] 文件

参 数 :-n: 后 面 接 数 字 , 表 示 显 示 几 行 的 意 思 。4) 非 纯 文 本 文 件 od

[root@linux ~]# od [-t TYPE] 文件

参 数 :-t : 后 面 可 以 跟 如 下 各 种 “ 类 型 ” (TYPE) 的 输

• 30 •

Page 31: 预备篇 · Web viewOpen Office ——成熟的office应用套件,类似并兼容MS Office。包括了字处理、电子表格、演示文稿、公式编辑和绘图程序。字处理程序可以直接将文档转换为PDF格式。Perl——广受欢迎的解释性编程语言,适合于检索任意文本

第 1章 Linux 基 础出 :

● a : 使 用 默 认 的 字 符 输 出 。● c : 使 用 ASCII字 符 输 出 。● d[size]: 使 用 十 进 制 输 出 数 据 , 每 个 整 数占 用 size 字 节 大 小 。

● f[size] : 使 用 浮 点 数 输 出 数 据 , 每 个 整 数占 用 size 字 节 大 小 。

● o[size]: 使 用 八 进 制 输 出 数 据 , 每 个 整 数占 用 size 字 节 大 小 。

● x[size]: 使 用 十 六 进 制 输 出 数 据 , 每 个 整数 占 用 size 字 节 大 小 。

5) 修 改 文 件 时 间 与 创 建 新 文 件 : touch 每 个 文 件 在 Linux 下 都 会 记 录 3 个 主 要 的 修 改

时 间 :● modification time(mtime , 修 改 时 间 ) : 当 该 文 件的 “ 内 容 数 据 ” 更 改 时 , 就 会 更 新 这 个 时间 。

● status time(stime , 状 态 时 间 ) : 当 该 文 件 的“ 状 态 ” 改 变 时 , 就 会 更 新 这 个 时 间 。

● access time(atime , 访 问 时 间 ) : 当 “ 读 取 文 件内 容 ” 时 , 就 会 更 新 这 个 读 取 时 间 。 [root@linux ~]# touch [-acdmt] 文件

参 数 :-a: 仅 修 改 access time。-c: 仅 修 改 时 间 , 而 不 建 立 文 件 。-d: 后 面 可 以 接 日 期 , 也 可 以 使 用 “ -date=="日

期 或 时 间 "”。-m : 仅 修 改 mtime 。

• 31 •

Page 32: 预备篇 · Web viewOpen Office ——成熟的office应用套件,类似并兼容MS Office。包括了字处理、电子表格、演示文稿、公式编辑和绘图程序。字处理程序可以直接将文档转换为PDF格式。Perl——广受欢迎的解释性编程语言,适合于检索任意文本

软件综合开发案例教程——Linux、GCC、MySQL、Socket、Gtk+与开源案例-t : 后 面 可 以 跟 时 间 , 格 式 为

“ [YYMMDDhhmm]”。8. 搜 索 文 件

1) 寻 找 “ 执 行 文 件 ” : which

[root@linux ~]# which [-a] command

参 数 :-a: 将 所 有 可 找 到 的 命 令 均 列 出 , 而 不 仅 仅

列 出 第 一 个 找 到 的 命 令 。2) 寻 找 特 定 文 件 : whereis

[root@linux ~]# whereis [-bmsu] 文件或目录名

参 数 :-b: 只 找 二 进 制 文 件 。-m : 只 找 在 帮 助 文 件 manual 路 径 下 的 文 件 。-s: 只 找 源 文 件 。-u: 没 有 帮 助 文 件 的 文 件 。3) locate

[root@linux ~]# locate 文件的完整或部分名称

这 是 一 个 非 常 方 便 好 用 的 命 令 , 使 用 locate 来查 找 数 据 的 时 候 特 别 快 。 但 是 , 它 有 使 用 上 的限 制 。 因 为 它 是 通 过 数 据 库 来 搜 索 的 , 而 建 立数 据 库 时 默 认 每 天 执 行 一 次 ; 所 以 , 搜 索 在 数据 库 更 新 之 前 新 建 的 文 件 时 , locate 会 告 诉 您“ 找 不 到 该 文 件 ” , 因 为 必 须 要 先 更 新 数 据 库 。

4) find

[root@linux ~]# find [PATH] [option] [action]

参 数 :与 时 间 有 关 的 参 数 :● -atime n : n 为 数 字 , 含 义 为 在 n 天 之 前 的“ 一 天 之 内 ” 访 问 过 的 文 件 。

● -ctime n : n 为 数 字 , 含 义 为 在 n 天 之 前 的

• 32 •

Page 33: 预备篇 · Web viewOpen Office ——成熟的office应用套件,类似并兼容MS Office。包括了字处理、电子表格、演示文稿、公式编辑和绘图程序。字处理程序可以直接将文档转换为PDF格式。Perl——广受欢迎的解释性编程语言,适合于检索任意文本

第 1章 Linux 基 础“ 一 天 之 内 ” 修 改 过 状 态 的 文 件 。

● -mtime n: n 为 数 字 , 含 义 为 在 n 天 之 前 的“ 一 天 之 内 ” 修 改 过 数 据 内 容 的 文 件 。

● -newer file : file 为 一 个 存 在 的 文 件 , 即 只 要文 件 比 file 还 要 新 , 就 会 被 列 出 来 。与 用 户 或 用 户 组 名 称 有 关 的 参 数 :● -uid n : n 为 数 字 , 这 个 数 字 是 用 户 的 账户 ID , 即 UID, 这 个 UID是 记 录 在 /etc/passwd 里 与账 户 名 称 对 应 的 数 字 。

● -gid n : n 为 数 字 , 这 个 数 字 是 用 户 组 名称 的 ID , 即 GID, 这 个 GID记 录 在 /etc/group 中 。

● -user name : name 为 用 户 账 户 名 称 。● -group name : name 为 用 户 组 名 称 。● -nouser : 查 找 文 件 的 拥 有 者 不 在 /etc/passwd中的 用 户 。

● -nogroup: 查 找 文 件 的 拥 有 用 户 组 不 在 /etc/

group 中 的 用 户 组 。与 文 件 权 限 及 名 称 有 关 的 参 数 :● -name filename : 搜 索 文 件 名 为 filename 的 文 件 。● -size [+-]SIZE : 搜 索 比 SIZE 还 要 大 (+) 或 小 (-)

的 文 件 , 这 个 SIZE 的 规 格 有 : c 表 示 byte, k表 示 1024bytes 。

● -type TYPE : 搜 索 文 件 的 类 型 为 TYPE , 类 型主 要 有 一 般 正 规 文 件 (f) 、 设 备 文 件 (b、 c)、目 录 (d) 、 链 接 文 件 (l)、 套 接 字 (s) 及 FIFO(p) 等 。

● -perm mode : 搜 索 文 件 属 性 “ 刚 好 等

• 33 •

Page 34: 预备篇 · Web viewOpen Office ——成熟的office应用套件,类似并兼容MS Office。包括了字处理、电子表格、演示文稿、公式编辑和绘图程序。字处理程序可以直接将文档转换为PDF格式。Perl——广受欢迎的解释性编程语言,适合于检索任意文本

软件综合开发案例教程——Linux、GCC、MySQL、Socket、Gtk+与开源案例于 ” mode 的 文 件 , 这 个 mode 为 类 似 chmod的 属性 值 。

● -perm -mode : 搜 索 文 件 属 性 “ 必 须 要 全 部包 括 mode 的 属 性 ” 的 文 件 。

● -perm +mode : 搜 索 文 件 属 性 “ 包 含 任 一 mode

的 属 性 ” 的 文 件 。附 加 操 作 :● -exec command : command 为 其 他 命 令 , -exec 后 面可 再 接 额 外 的 命 令 来 处 理 搜 索 到 的 结 果 。

● -print : 将 结 果 打 印 出 来 , 这 个 动 作 是 默认 动 作 。

1.2.3 EXT2 文 件 系 统在 EXT2 文 件 系 统 中 , 将 每 个 文 件 分 为 两 个 部

分 来 存 储 , 一 个 是 文 件 的 属 性 , 另 一 个 则 是 文件 的 内 容 。 文 件 的 属 性 包 括 所 属 用 户 组 、 所 属用 户 、 能 否 执 行 、 文 件 建 立 时 间 、 文 件 特 殊 属性 等 。 EXT2 规 划 出 inode 与 块 来 分 别 存 储 文 件 的 属性 与 内 容 。 块 是 数 据 存 储 的 最 小 单 位 , 是 记 录“ 文 件 内 容 数 据 ” 的 区 域 。 inode 除 了 记 录 文 件的 属 性 外 , 同 时 还 必 须 具 有 指 针 的 功 能 , 即 指向 文 件 内 容 存 放 的 块 , 让 操 作 系 统 可 以 正 确 获取 文 件 的 内 容 。

Linux 系 统 到 底 是 如 何 读 取 一 个 文 件 的 内 容 呢 ?EXT2 文 件 系 统 建 立 一 个 目 录 时 , EXT2 会 给 该

目 录 分 配 一 个 inode 和 至 少 一 个 块 。 其 中 , inode 记录 该 目 录 的 相 关 属 性 , 并 指 向 分 配 到 的 那 个 块而 块 则 记 录 在 这 个 目 录 下 的 相 关 文 件 ( 或 目 录 )的 关 联 性 。

EXT2 文 件 系 统 建 立 一 个 普 通 文 件 时 , EXT2 会给 该 文 件 分 配 至 少 一 个 inode 与 相 对 于 该 文 件 大小 的 块 数 量 。 例 如 , 假 设 一 个 块 为 4KB, 要 建 立一 个 100KB 的 文 件 , Linux 将 分 配 一 个 inode 与 25 个 块来 存 储 该 文 件 。

• 34 •

Page 35: 预备篇 · Web viewOpen Office ——成熟的office应用套件,类似并兼容MS Office。包括了字处理、电子表格、演示文稿、公式编辑和绘图程序。字处理程序可以直接将文档转换为PDF格式。Perl——广受欢迎的解释性编程语言,适合于检索任意文本

第 1章 Linux 基 础inode 本 身 并 不 记 录 文 件 名 , 而 是 记 录 文 件 的

相 关 属 性 , 文 件 名 则 记 录 在 目 录 所 属 的 块 区 域文 件 的 相 关 连 接 会 记 录 在 目 录 的 块 数 据 区 域 ,所 以 , 要 读 取 一 个 文 件 的 内 容 时 , Linux 会 先 由根 目 录 获 取 该 文 件 的 上 层 目 录 所 在 的 inode , 再由 该 目 录 所 记 录 的 文 件 相 关 性 获 取 该 文 件 的inode , 最 后 通 过 inode 内 提 供 的 块 指 针 , 获 取 最 终的 文 件 内 容 。

例 如 读 取 /etc/crontab, 流 程 为 :(1) 操 作 系 统 根 据 根 目 录 (/)的 相 关 数 据 可 获 取

/etc 目 录 所 在 的 inode , 并 读 取 /etc 这 个 目 录 的 所 有相 关 属 性 。

(2) 根 据 /etc 的 inode 的 数 据 , 可 以 获 取 /etc 目 录 下所 有 文 件 的 关 联 数 据 是 存 放 在 哪 一 个 块 中 , 并前 往 该 块 读 取 文 件 的 关 联 性 属 性 。

(3) 由 上 一 个 步 骤 的 块 , 可 以 知 道 crontab 文 件的 inode 所 在 地 , 并 前 往 该 inode 。

(4) 由 上 一 个 步 骤 的 inode , 可 以 获 取 crontab 文 件的 所 有 属 性 , 并 前 往 由 inode 所 指 向 的 块 区 域 ,顺 利 获 取 crontab 的 文 件 内 容 。

EXT2 主 要 有 以 下 几 种 特 性 :● 块 与 inodes在 一 开 始 格 式 化 时 就 已 经 固 定了 。

● 一 个 分 区 能 够 容 纳 的 文 件 数 与 inode 有 关 。● 一 般 来 说 , 每 4KB的 硬 盘 空 间 分 配 一 个

inode 。● 一 个 inode 的 大 小 为 128 字 节 。● 块 为 固 定 大 小 , 当 前 支 持 1024/2048/4096字 节等 。

● 块 越 大 , 则 损 耗 的 硬 盘 空 间 也 越 多 。● 对 于 单 一 文 件 , 若 块 大 小 为 1024 字 节 ,则 容 量 最 大 为 16GB ; 若 块 大 小 为 4096 字 节 ,则 容 量 最 大 为 2TB。

● 对 于 整 个 分 区 : 若 块 大 小 为 1024 字 节 ,则 容 量 为 2TB; 若 块 大 小 为 4096 字 节 , 则 容量 为 32TB 。

● 文 件 名 最 长 可 达 255 字 符 , 完 整 文 件 名可 长 达 4096 字 符 。

• 35 •

Page 36: 预备篇 · Web viewOpen Office ——成熟的office应用套件,类似并兼容MS Office。包括了字处理、电子表格、演示文稿、公式编辑和绘图程序。字处理程序可以直接将文档转换为PDF格式。Perl——广受欢迎的解释性编程语言,适合于检索任意文本

软件综合开发案例教程——Linux、GCC、MySQL、Socket、Gtk+与开源案例

1.2.4 Linux 支 持 的 其 他 文 件 系 统Linux 的 标 准 文 件 系 统 是 EXT2 , 增 加 了 日 志 功

能 的 文 件 系 统 是 EXT3 。 此 外 , Linux 还 支 持 很 多 其他 的 文 件 格 式 。 尤 其 是 近 年 来 又 推 出 了 几 种 速度 很 快 的 日 志 式 文 件 系 统 , 如 SGI 的 XFS文 件 系 统 、可 以 适 用 于 更 小 型 文 件 的 ReiserFS文 件 系 统 , 以 及Windows 的 FAT文 件 系 统 等 。 Linux 支 持 的 常 见 文 件 系统 有 :

● 传 统 文 件 系 统 : EXT2/minix/MS-DOS/FAT( 用 vfat 模块 )/iso9660( 光 盘 ) , 等 等 。

● 日 志 式 文 件 系 统 : EXT3/ReiserFS/Windows( NTFS)/IBM(JFS)/SGI(XFS) 。

● 网 络 文 件 系 统 : NFS/SMBFS 。要 知 道 Linux 支 持 的 文 件 系 统 有 哪 些 , 可 以 查

看 下 面 这 个 目 录 : [root@linux ~]# ls –l /lib/modules/`uname -r`/kernel/fs

查看系统当前已启用的文件系统: [root@linux ~]# cat /proc/filesystems

1.2.5 文 件 系 统 的 简 单 操 作1. df

用 来 显 示 当 前 磁 盘 总 容 量 与 剩 余 可 用 容 量的 命 令 。

[root@linux ~]# df [-ahikHTm] [ 目录或文件名 ]

参 数 :-a: 列 出 所 有 的 文 件 系 统 , 包 括 系 统 特 有 的

/proc 等 文 件 系 统 。-k: 以 KB 为 单 位 显 示 各 文 件 系 统 。-m : 以 MB 为 单 位 显 示 各 文 件 系 统 。-h: 以 GB 、 MB 、 KB 等 格 式 显 示 。-H : 以 1MB=1000KB 取 代 1MB=1024KB 的 计 算 方 式 。-T: 连 同 该 分 区 的 文 件 系 统 名 称 ( 例 如 EXT3)一

• 36 •

Page 37: 预备篇 · Web viewOpen Office ——成熟的office应用套件,类似并兼容MS Office。包括了字处理、电子表格、演示文稿、公式编辑和绘图程序。字处理程序可以直接将文档转换为PDF格式。Perl——广受欢迎的解释性编程语言,适合于检索任意文本

第 1章 Linux 基 础起 列 出 。

-i : 不 用 硬 盘 容 量 、 而 以 inode 的 数 量 显 示 。显 示 的 列 表 项 :● Filesystem : 表 示 该 文 件 系 统 是 在 那 个 分 区 ,所 用 到 的 设 备 名 称 。

● lk-blocks: 说 明 下 面 的 数 字 单 位 是 1KB。 可利 用 -h或 -m 来 改 变 容 量 。

● Used : 已 经 使 用 的 硬 盘 空 间 。● Available : 剩 余 的 磁 盘 空 间 大 小 。● Use% : 磁 盘 的 使 用 率 。 如 果 使 用 率 高 达

90%或 以 上 , 最 好 需 要 注 意 一 下 , 以 免 容 量不 足 造 成 系 统 出 问 题 。

● Mounted on : 磁 盘 载 入 的 目 录 所 在 ( 载 入点 ) 。

2. du

用 来 显 示 当 前 磁 盘 文 件 容 量 的 命 令 。 类 似于 在 Windows 下 可 以 使 用 资 源 管 理 器 来 管 理 磁盘 。

[root@linux ~]# du [-ahskm] 文件或目录名称

参 数 :-a: 列 出 所 有 文 件 与 目 录 的 容 量 , 因 为 默 认

仅 统 计 目 录 下 面 的 文 件 容 量 。-h: 以 人 们 易 读 的 容 量 格 式 (G/M) 显 示 。-s: 列 出 总 量 , 不 列 出 每 个 目 录 占 用 的 容 量 。-k: 以 KB 形 式 列 出 容 量 。-m : 以 MB 形 式 列 出 容 量 。3. 链 接 文 件 : ln

链 接 文 件 有 点 类 似 于 Windows 的 “ 快 捷 方 式 ” ,就 是 很 多 的 链 接 文 件 都 指 向 同 一 个 源 文 件 。 链接 文 件 分 成 硬 链 接 与 符 号 链 接 两 种 , 这 两 种 链

• 37 •

Page 38: 预备篇 · Web viewOpen Office ——成熟的office应用套件,类似并兼容MS Office。包括了字处理、电子表格、演示文稿、公式编辑和绘图程序。字处理程序可以直接将文档转换为PDF格式。Perl——广受欢迎的解释性编程语言,适合于检索任意文本

软件综合开发案例教程——Linux、GCC、MySQL、Socket、Gtk+与开源案例接 文 件 的 结 构 完 全 不 一 样 。

1) 硬 链 接 或 实 际 链 接硬 链 接 只 是 在 某 个 目 录 下 新 增 一 个 该 文 件

的 关 联 数 据 而 已 。 这 样 做 的 好 处 是 “ 安 全 ” ,不 管 删 除 关 联 文 件 中 的 哪 一 个 , 其 实 都 是 仅 删除 目 录 下 面 的 文 件 关 联 数 据 , 并 没 有 更 改 原 文件 的 inode 与 块 数 据 。 而 且 , 不 管 是 哪 个 目 录 链接 到 正 确 的 crontab 的 inode 与 块 , 都 可 以 正 确 无 误地 进 行 数 据 的 修 改 。

一 般 来 说 , 使 用 硬 链 接 设 置 链 接 文 件 时 ,磁 盘 空 间 与 inode 的 数 目 都 不 会 改 变 。 因 为 硬 链接 只 是 在 某 个 目 录 下 的 块 中 多 写 入 一 个 关 联 数据 , 所 以 并 不 会 用 掉 inode 与 磁 盘 空 间 。

由 于 硬 链 接 是 在 同 一 个 分 区 上 建 立 数 据 关联 , 所 以 硬 链 接 是 有 限 制 的 : 不 能 跨 文 件 系 统也 不 能 链 接 目 录 。

2) 符 号 链 接 ( 即 快 捷 方 式 )符 号 链 接 是 指 在 建 立 一 个 独 立 的 文 件 时 ,

这 个 文 件 会 让 数 据 的 读 取 指 向 它 链 接 的 文 件 内容 。 由 于 只 是 利 用 文 件 来 作 为 指 向 的 动 作 , 所以 , 当 源 文 件 被 删 除 之 后 , 符 号 链 接 的 文 件 不能 打 开 , 会 一 直 显 示 “ 无 法 打 开 某 文 件 ” 。 由符 号 链 接 所 建 立 的 文 件 为 一 个 独 立 的 新 文 件 ,所 以 会 占 用 inode 与 块 。

根 据 上 面 的 说 明 , 似 乎 硬 链 接 比 较 安 全 ,但 是 由 于 硬 链 接 的 限 制 太 多 , 包 括 无 法 做 “ 目录 ” 的 链 接 , 所 以 用 得 比 较 少 , 而 符 号 链 接 使用 得 较 多 。

[root@linux ~]# ln [-sf] 源文件 目标文件

参 数 :-s: 如 果 ln不 加 任 何 参 数 就 进 行 链 接 , 那 么

就 是 硬 链 接 , -s就 是 符 号 链 接 。-f: 如 果 目 标 文 件 存 在 , 就 主 动 将 目 标 文 件

直 接 删 除 后 再 建 立 。

• 38 •

Page 39: 预备篇 · Web viewOpen Office ——成熟的office应用套件,类似并兼容MS Office。包括了字处理、电子表格、演示文稿、公式编辑和绘图程序。字处理程序可以直接将文档转换为PDF格式。Perl——广受欢迎的解释性编程语言,适合于检索任意文本

第 1章 Linux 基 础

1.3 Linux常用命令Linux 提 供 了 几 百 条 命 令 , 虽 然 这 些 命 令 的 功

能 不 同 , 但 它 们 的 使 用 方 式 和 规 则 都 是 统 一 的命 令 格 式 也 是 一 致 的 。1.3.1 Linux 命 令 格 式

Linux 命 令 的 一 般 格 式 是 :command [option] [argument1] [argument2] ...

command 是 命 令 名 , 由 小 写 的 英 文 字 母 构 成 ,往 往 是 表 示 相 应 功 能 的 英 文 单 词 或 单 词 的 缩 写例 如 : date表 示 日 期 ; who表 示 谁 在 系 统 中 ; cp是copy 的 缩 写 , 表 示 拷 贝 文 件 等 。 option 是 对 命 令 的特 别 定 义 , 以 “ -”开 始 , 多 个 option 可 用 一 个 “ -”连 起 来 , 如 “ ls -l –a” 与 “ ls –la”的 效 果 是 一 样 的 。命 令 行 的 参 数 提 供 命 令 运 行 的 信 息 , 或 者 是 命令 执 行 过 程 中 所 使 用 的 文 件 名 , 通 常 参 数 是 一些 文 件 名 , 告 诉 命 令 从 哪 里 可 以 得 到 输 入 , 以及 把 输 出 送 到 什 么 地 方 。 根 据 命 令 的 不 同 , 参数 分 为 可 选 的 或 必 需 的 ; 所 有 的 命 令 从 标 准 输入 接 受 输 入 , 输 出 结 果 显 示 在 标 准 输 出 , 而 出错 信 息 则 显 示 在 标 准 错 误 输 出 设 备 。 可 使 用 重定 向 功 能 对 这 些 设 备 进 行 重 定 向 。

命 令 在 正 常 执 行 后 返 回 一 个 0 值 , 表 示 执 行成 功 ; 如 果 命 令 出 错 或 未 完 全 完 成 , 则 返 回 一个 非 零 值 ( 在 shell中 可 用 变 量 $?查 看 ) 。 在 shell脚 本中 可 用 此 返 回 值 作 为 控 制 逻 辑 的 一 部 分 。

Linux 操 作 系 统 的 联 机 帮 助 对 每 个 命 令 的 准 确语 法 都 做 了 说 明 , 可 以 使 用 命 令 man来 获 取 相 应命 令 的 联 机 说 明 , 如 “ man ls” 。1.3.2 常 用 命 令 列 表

Linux 常 用 命 令 如 表 1-3 所 示 。表1-3 Linux常用命令列表

• 39 •

Page 40: 预备篇 · Web viewOpen Office ——成熟的office应用套件,类似并兼容MS Office。包括了字处理、电子表格、演示文稿、公式编辑和绘图程序。字处理程序可以直接将文档转换为PDF格式。Perl——广受欢迎的解释性编程语言,适合于检索任意文本

软件综合开发案例教程——Linux、GCC、MySQL、Socket、Gtk+与开源案例帮助命令:help  显示内部命令帮助man 获取相关命令的帮助信息

例如:man dir 可以获取关于dir的使用信息info 获取相关命令的详细使用方法

例如: info info 可以获取如何使用 info 的详细信息文件操作:cat 显示文件内容和合并多个文件cd 切换目录clear 清屏chattr 改变文件属性chgrp 改变文件或目录的所属组chmod 改变文件或目录的权限chown 改变文件的属权comm 比较两个已排过序的文件cp 将文件拷 贝至另一文件dd 从指定文件读取数据写到指定文件df 报告 磁盘空间使用情况diff 比较两个文本文件,列出行不同之处dir 显示目录内容du 统计目录 / 文件所占磁盘空间的大小file 辨识文件类型emacs 功能强大的编辑环境find 搜索文件并执行指定操作 (find2)

grep 按给定模式搜 索文件内容head 显示指定文件的前若干行less 按页显示文件ln 创建文件链接ls 显示目录内容locate 查找符合条件的文件

( 续表 )

more 在终端屏幕按帧显示文本文件mkdir 创建目录mv 文件或目录的移动或更名rm/rmdir 删除文件 / 目录sed 利用脚本来处理文本文件sort 对指定文件按行进行排序

• 40 •

Page 41: 预备篇 · Web viewOpen Office ——成熟的office应用套件,类似并兼容MS Office。包括了字处理、电子表格、演示文稿、公式编辑和绘图程序。字处理程序可以直接将文档转换为PDF格式。Perl——广受欢迎的解释性编程语言,适合于检索任意文本

第 1章 Linux 基 础tail 显示指定文件的最后部分touch 创建文件tr 转换字符vi 全屏编辑器wc 显示指定文件中的行数、词数或字符数which 在环境变量$PATH设置的目录里查找符合条件的文件压缩与备份:bzip2/bunzip2 .bz2 文件的压 缩 / 解压 缩程序cpio 备份文件dump 备份文件系统gzip/gunzip gz文件的压 缩 / 解压 缩程序gzexe 压缩可执行文件restore 还原由转 储 (dump) 操作所备份下来的文件或整个文件系统 ( 一个分

区 )

tar 将若干文件存档或读取存档文件unarj 解压 缩 .arj 文件zip/unzip 压缩 / 解压 缩 zip 文件zipinfo 列出zip 压缩文件的详细信息磁盘操作:cd/pwd 切换目录 / 显示当前工作目录df 显示磁盘的相关信息du 显示目录或文件的大小e2fsck 检查EXT2/EXT3 文件系统的正确性fdisk 对硬盘进行分区fsck 检查文件系统并尝试修复错误losetup 设置循环设备ls 列出目录内容mkdir 创建目录mformat 对MS-DOS 文件系统的磁盘进行格式化mkbootdisk 建立目前系统的启动盘mke2fs 建立EXT2 文件系统

( 续表 )

mkfs 格式化命令mkswap 创建 swap文件系统mkisofs 制作 iso 光盘映像文件mount/umount 加载文件系统 / 卸载文件系统quota 显示磁盘已使用的空间与限制quotacheck  检查配额

• 41 •

Page 42: 预备篇 · Web viewOpen Office ——成熟的office应用套件,类似并兼容MS Office。包括了字处理、电子表格、演示文稿、公式编辑和绘图程序。字处理程序可以直接将文档转换为PDF格式。Perl——广受欢迎的解释性编程语言,适合于检索任意文本

软件综合开发案例教程——Linux、GCC、MySQL、Socket、Gtk+与开源案例quotaon 启用配额quotaoff 关闭配额edquota 设置用户磁盘配额sync 将内存缓 冲区内的数据写入磁盘tree 以树 状图列出目录的内容系统操作:alias 设置指令的别名cal  显示日历chfn 修改用户信息chkconfig 检查、设置系统的各种服务clock 调整RTC时间chsh 修改登录Shell

date 显示或设置系统时间与日期dmesg 显示开机信息eval 重新运算求出参数的内容exit 退出目前的shell

export 设置或显示环境变量finger 查找并显示用户信息free 显示内存状态groupadd  添加组groupmod  修改组属性groupdel 删除组gpasswd 将用户添加到组或从组中删除grub-install  安装GRUB

halt  关闭系统hosted 显示主机标识hostname 显示主机名id 显示用户标识init 切换运行级insmod 添加内核模块

( 续表 )

kill 删除执行中的程序或工作last 列出目前与过去登入系统的用户相关信息logout 退出系统lsmod 显示已载入系统的模块modprobe 自动处理可载入模块modinfo 显示内核模块信息nice 设置进程优先级

• 42 •

Page 43: 预备篇 · Web viewOpen Office ——成熟的office应用套件,类似并兼容MS Office。包括了字处理、电子表格、演示文稿、公式编辑和绘图程序。字处理程序可以直接将文档转换为PDF格式。Perl——广受欢迎的解释性编程语言,适合于检索任意文本

第 1章 Linux 基 础passwd 设置用户密码pidof 显示指定程序的进程号ps 报告程序状况pstree 显示进程树reboot 重启计算机rmmod 移除内核模块rhwo 查看系统用户rlogin 远程登入rpm 管理Linux 各项套件的程序runlevel  显示运行级shutdown 关机

su 变更用户身份top 显示、管理执行中的程序uname 显示系统信息useradd/userdel 添加用户 / 删除用户userinfo 图形界面的修改工具usermod 修改用户属性,包括用户的 shell 类型、用户组等,甚至还能改登录名w 显示目前注册的用户及用户正运行的命令whereis 确定一个命令的二进制执行码、源码及帮助所在的位置who 列出正在使用系统的用户whois 查找并显示用户信息网络通信:adsl-setup 设置ADSL 连接参数adsl-status 显示ADSL 连接状态adsl-connect  启动ADSL 连接arp 网地址的显示及控制ftp 文件传输ifconfig 查看 / 设置网卡参数ifup 启用网络设备

( 续表 )

ifdown 关闭网络设备lftp 文件传输ip 强大的网络管理工具lsof 显示指定端口由谁 监听mail 发送 / 接收电子邮件mesg 允许或拒绝其他用户向自己所用的终端发送信息mutt E-mail 管理程序ncftp 文件传输

• 43 •

Page 44: 预备篇 · Web viewOpen Office ——成熟的office应用套件,类似并兼容MS Office。包括了字处理、电子表格、演示文稿、公式编辑和绘图程序。字处理程序可以直接将文档转换为PDF格式。Perl——广受欢迎的解释性编程语言,适合于检索任意文本

软件综合开发案例教程——Linux、GCC、MySQL、Socket、Gtk+与开源案例netstat 显示网络连接、路由表和网络接口信息pine 收发电子邮件,浏 览新闻组ping 向网络上的主机发送 icmp echo request 包route 查看路由表ssh 安全模式下的远程登录sysctl 控制TCP/IP 内核参数telnet 远程登录talk 与另一用户对话traceroute 显示到达某一主机所经由的路径及所使用的时间wget 从网络上自动下载文件write 向其他用户的终端写信息

1.4 Linux常用工具Linux 是 一 个 成 熟 而 稳 定 的 网 络 操 作 系 统 。 操

作 系 统 内 核 本 身 仅 仅 是 可 用 开 发 系 统 的 一 小 部分 。 操 作 系 统 一 个 很 重 要 的 部 分 , 就 是 它 所 支持 的 各 种 界 面 和 应 用 软 件 。 传 统 上 , 商 业 化 的UNIX 系 统 都 包 含 提 供 系 统 服 务 的 应 用 程 序 和 工具 。 对 Linux 系 统 来 说 , 这 些 额 外 的 程 序 许 多 是由 GNU 项 目 提 供 的 , 即 GNU 软 件 是 在 遵 循 GNU 通用 公 共 许 可 证 (GPL) 条 款 的 情 况 下 发 布 的 , 可 以自 由 使 用 , 这 是 Linux 的 一 个 非 常 重 要 的 特 点 ,因 此 我 们 也 可 把 Linux 系 统 称 为 GNU/Linux 。 Linux 上 有许 多 实 用 工 具 , 除 了 一 些 很 有 专 业 性 的 软 件 外 ,常 用 的 软 件 都 可 以 找 到 Windows 下 相 应 的 替 代 软件 。 常 用 的 工 具 包 括 编 译 开 发 工 具 、 文 本 编 辑工 具 、 办 公 套 件 、 网 络 管 理 与 安 全 以 及 娱 乐 软件 等 。 这 些 工 具 支 撑 着 Linux 系 统 的 应 用 , 也 支撑 着 Linux 上 应 用 软 件 的 开 发 。 图 1-4 是 Linux 应 用 开发 的 高 层 体 系 结 构 , 从 中 我 们 可 以 看 出 , 用 户空 间 和 内 核 空 间 与 文 件 系 统 相 关 主 要 组 件 之 间的 关 系 。

• 44 •

Page 45: 预备篇 · Web viewOpen Office ——成熟的office应用套件,类似并兼容MS Office。包括了字处理、电子表格、演示文稿、公式编辑和绘图程序。字处理程序可以直接将文档转换为PDF格式。Perl——广受欢迎的解释性编程语言,适合于检索任意文本

第 1章 Linux 基 础

图1-4 Linux应用开发的高层体系结构1. 基 本 的 命 令 和 工 具应 该 说 , 现 在 的 Linux 已 经 把 在 标 准 的 UNIX 系

统 上 可 以 找 到 的 应 用 软 件 几 乎 都 已 移 植 过 来 了还 包 括 一 些 基 本 的 命 令 —— ls 、 cp、 mv 、 more 等 。Linux 上 有 许 多 文 本 编 辑 程 序 , 像 vi、 ed、 joe , 还有 GNU Emacs 等 。 另 外 还 有 多 种 Shell , 比 如 : C Shell 、 Bourne Shell 、 Bash(GNU Bourne Again Shell) 、 Tcsh( 带 有 许 多扩 充 功 能 的 C shell) 、 Zsh(一 个 类 似 于 Bourne Shell 的 小 型shell) 。 Shell 对 很 多 用 户 来 说 都 是 很 重 要 的 应 用 软件 , 它 相 当 于 ms-dos 下 的 批 处 理 文 件 (batch file) , 但是 shell的 功 能 要 强 大 很 多 。 shell程 序 读 入 用 户 的 命令 , 然 后 执 行 , shell的 最 重 要 特 点 就 是 包 含 了 一个 任 务 描 述 的 命 令 语 言 。

Linux 上 的 多 种 shell之 间 的 最 大 差 别 就 在 于 这 种命 令 语 言 , C Shell 的 命 令 语 言 很 像 C 语 言 , Bourne Shell 使 用 另 一 种 不 同 的 语 言 。 其 中 最 广 泛 使 用的 就 是 Bash , 这 是 Bourne Shell 的 变 体 , 它 包 括 了 诸如 任 务 控 制 、 历 史 命 令 、 重 定 向 、 补 全 命 令 等完 整 化 的 操 作 。 有 了 这 些 不 同 的 Shell , 我 们 就可 以 自 己 动 手 设 计 我 们 需 要 的 工 作 环 境 了 。

2. 程 序 设 计 语 言Linux 提 供 了 一 个 完 整 的 UNIX 编 程 环 境 , 包 括

标 准 程 序 库 、 编 程 工 具 、 编 译 器 和 调 试 器 。 在UNIX 环 境 下 , 应 用 程 序 和 系 统 程 序 的 设 计 通 常是 C 或 C++语 言 , 在 Linux 上 的 标 准 C 或 C++编 译 器 是

• 45 •

Page 46: 预备篇 · Web viewOpen Office ——成熟的office应用套件,类似并兼容MS Office。包括了字处理、电子表格、演示文稿、公式编辑和绘图程序。字处理程序可以直接将文档转换为PDF格式。Perl——广受欢迎的解释性编程语言,适合于检索任意文本

软件综合开发案例教程——Linux、GCC、MySQL、Socket、Gtk+与开源案例GNU 的 GCC 。 GCC 是 一 个 比 较 先 进 的 编 译 器 , 有多 种 选 项 。 除 了 C 语 言 之 外 , 许 多 其 他 的 语 言编 译 器 和 解 释 器 也 都 移 植 到 Linux 上 了 , 比 如 说Fortran 、 Pascal 、 Ada 、 Java、 Perl 、 WK , 等 等 。 还 有 先进 的 调 试 器 gdb , 帮 助 用 户 一 步 一 步 地 运 行 自 己的 程 序 , 进 行 调 试 。

Linux 还 实 现 了 共 享 程 序 库 的 动 态 链 接 机 制 ,简 称 DLL , 这 样 就 使 程 序 的 二 进 制 代 码 的 长 度大 为 减 少 。

在 Linux 上 开 发 应 用 程 序 是 很 方 便 的 , 除 了 前面 提 到 的 语 言 外 , Linux 上 还 有 许 多 非 常 小 巧 实用 的 语 言 (gawk 语 言 等 ) 。

3. X Window系 统X Window 是 由 MIT开 发 的 一 套 标 准 图 形 接 口 , 当

前 的 版 本 为 X11R6.3。 它 与 Windows 和 Macintosh 的 图 形 界面 不 同 , 是 一 套 平 台 独 立 的 基 本 图 形 功 能 调 用接 口 , 不 包 括 硬 件 和 具 体 的 显 示 风 格 。 因 此 ,X Window 具 有 高 度 可 配 置 性 。 但 是 MIT发 布 的 X Window源 代 码 没 有 包 括 在 具 体 硬 件 上 的 实 现 , 所 以 如果 让 它 在 硬 件 上 运 行 起 来 的 话 , 还 需 要 开 发 相应 的 硬 件 驱 动 程 序 , Linux 下 的 X Window 系 统 是 Xfree 86 , 现 在 的 版 本 是 3.3.3 。 它 包 括 了 多 种 应 用 程序 、 程 序 库 和 文 档 资 料 。

标 准 的 X应 用 程 序 , 有 用 于 X Window 的 、 以 文本 方 式 为 主 的 应 用 程 序 的 终 端 仿 真 器 Xterm , 还有 中 文 的 环 境 Cxterm , 管 理 用 户 登 录 的 X管 理 程序 xdm, 时 钟 显 示 器 xclock, 还 有 用 于 X Window 联 机 的用 户 手 册 Xman , 等 等 。

X Window 图 形 界 面 的 外 观 和 使 用 , 在 很 大 程 度上 取 决 于 窗 口 管 理 程 序 。 标 准 的 Xfree 86 包 括 twm,这 是 一 个 经 典 的 窗 口 管 理 程 序 。 当 然 , 使 用 最多 的 还 是 fvwm 。

4. 网 络 设 置Linux 支 持 两 种 基 本 的 UNIX 上 的 网 络 协 议 : TCP/

IP、 UUCP。 它 还 支 持 SLIP 和 PPP协 议 。 它 提 供 标 准的 SOCKET 编 程 界 面 , 所 以 基 本 上 任 何 使 用 TCP/IP协 议 的 应 用 程 序 都 可 以 移 植 到 Linux 上 。 UUCP(UNIX to

• 46 •

Page 47: 预备篇 · Web viewOpen Office ——成熟的office应用套件,类似并兼容MS Office。包括了字处理、电子表格、演示文稿、公式编辑和绘图程序。字处理程序可以直接将文档转换为PDF格式。Perl——广受欢迎的解释性编程语言,适合于检索任意文本

第 1章 Linux 基 础UNIX COPY) 现 在 用 的 不 是 很 多 了 , 它 是 一 个 比 较老 的 协 议 , 主 要 用 于 在 UNIX 机 器 间 进 行 文 件 、邮 件 和 新 闻 传 送 的 机 制 。 原 先 UUCP是 用 调 制 解调 器 在 电 话 线 连 接 的 机 器 之 间 进 行 工 作 的 , 后来 也 可 以 用 在 TCP/IP 网 络 上 。

5. 其 他 应 用 程 序其 他 的 一 些 商 业 软 件 厂 商 也 加 入 了 Linux 应 用

程 序 贡 献 者 的 队 伍 。 在 Linux 上 有 几 个 关 系 数 据库 , 有 Postgres 、 Oracle、 Ingres 、 Mbase等 。 由 于 Linux 支 持POSIX 1003.1 标 准 , 所 以 在 UNIX 上 运 行 的 免 费 软 件 我们 自 己 也 可 以 在 Linux 上 编 译 和 移 植 。1.4.1 文 本 编 辑 工 具

大 多 数 使 用 Linux 的 开 发 人 员 都 选 择 Emacs、 vim或 这 两 个 文 本 编 辑 应 用 程 序 的 众 多 变 种 之 一 。操 作 员 通 常 在 所 选 的 文 本 编 辑 器 中 打 开 文 件 ,并 交 互 式 地 对 文 件 进 行 编 辑 和 应 用 更 改 。 这 些工 具 在 没 有 窗 口 的 命 令 行 模 式 和 在 桌 面 窗 口 模式 下 都 能 够 很 好 地 使 用 。

KDE 和 GNOME中 文 本 编 辑 器 主 要 使 用 GEDIT , 用户 可 以 使 用 它 完 成 大 多 数 的 文 本 编 辑 任 务 , 如修 改 Linux 配 置 文 件 等 。 它 的 选 择 是 “ 应 用 程序 ” =>“附 件 ” =>“文 本 编 辑 器 ” , 如 图 1-5 所 示 。

关 于 字 处 理 , Linux 提 供 了 强 大 的 OpenOffice Write ,它 提 供 了 许 多 十 分 强 大 的 工 具 来 帮 助 Linux 用 户方 便 地 建 立 各 种 文 档 , 如 图 1-6 所 示 。

图1-5 文本编辑器的选择 图1-6 字处

理软件的选择

• 47 •

Page 48: 预备篇 · Web viewOpen Office ——成熟的office应用套件,类似并兼容MS Office。包括了字处理、电子表格、演示文稿、公式编辑和绘图程序。字处理程序可以直接将文档转换为PDF格式。Perl——广受欢迎的解释性编程语言,适合于检索任意文本

软件综合开发案例教程——Linux、GCC、MySQL、Socket、Gtk+与开源案例1. Emacs 的 简 要 使 用 说 明Emacs即 Editor MACroS( 宏 编 辑 器 ) , 是 一 种 文 本 编

辑 器 , 在 程 序 员 和 其 他 以 技 术 工 作 为 主 的 计 算机 用 户 中 广 受 欢 迎 , 最 初 由 Richard Stallman 于 1975 年在 MIT协 同 Guy Steele 共 同 完 成 。 它 是 GNU project 的 一 部分 , 在 Linux 的 各 发 行 版 中 都 有 Emacs的 身 影 。

Emacs是 一 款 功 能 非 常 强 大 的 软 件 。 引 用 一 句话 , “ Emacs是 没 有 内 核 的 操 作 系 统 ” , 意 思 就是 说 , Emacs能 够 完 成 很 多 操 作 系 统 常 规 功 能 ,比 如 收 发 邮 件 、 阅 读 新 闻 组 、 浏 览 网 站 、 开 发软 件 ( 如 Red Hat 就 把 Emacs作 为 开 发 软 件 ) 、 办 公 …… 这 并 非 夸 张 , Emacs的 主 要 作 者 是 大 名 鼎 鼎 的Richard M Stallman , 也 就 是 GNU 的 发 起 人 和 FSF的 创 办 者以 及 所 有 黑 客 的 精 神 领 袖 , 而 且 由 于 Emacs的 扩展 性 良 好 , 所 以 很 多 功 能 都 可 以 自 己 加 上 去 。功 能 强 大 也 带 来 一 个 弊 端 , 就 是 操 作 比 较 复 杂当 然 这 是 相 较 于 普 通 文 本 编 辑 软 件 ( 如Vi 、 Vim, 等 等 ) , 如 果 使 用 熟 练 的 话 , Emacs在 操作 速 度 上 反 而 会 更 胜 一 筹 。

自 诞 生 以 来 , Emacs 演 化 出 了 众 多 分 支 , 其 中使 用 最 广 泛 的 两 种 分 别 是 : 1984 年 由 Richard Stallman发 起 并 由 他 维 护 至 2008 年 的 GNU Emacs , 以 及 1991 年发 起 的 XEmacs 。 XEmacs 是 GNU Emacs 的 分 支 , 至 今 仍 保持 着 相 当 的 兼 容 性 。 它 们 都 使 用 了 Emacs Lisp这 种有 着 极 强 扩 展 性 的 编 程 语 言 , 从 而 实 现 了 包 括编 程 、 编 译 乃 至 网 络 浏 览 等 功 能 的 扩 展 。

GNU Emacs 的 主 要 文 档 在 GNU Emacs 手 册 中 , 可 以用 Info(Emacs的 一 个 子 系 统 ) 以 行 方 式 去 读 , 可 以 查看 到 完 全 的 和 最 新 的 文 档 , 其 更 新 依 赖 于 志 愿人 员 。

GNU Emacs 包 含 了 其 他 Emacs 编 辑 器 所 拥 有 的 全部 功 能 。 由 于 它 的 编 辑 命 令 是 用 Lisp写 的 , 因 此很 容 易 扩 展 。 Emacs 有 一 个 扩 展 的 交 互 帮 助 工 具 ,但 该 工 具 以 用 户 可 以 熟 练 地 使 用 Emacs 窗 口 和缓 冲 区 为 前 提 。 Ctrl-h ( 或 退 格 ) 可 以 进 入 该 帮 助工 具 。 Help Tutorial( 帮 助 指 南 , Ctrl-h t) 调 用 一 个 交 互式 的 指 南 以 帮 助 初 学 者 在 很 短 的 时 间 内 了 解Emacs的 基 本 知 识 。 Help Apropos(Ctrl-h a) 帮 助 用 户 找 到 一

• 48 •

Page 49: 预备篇 · Web viewOpen Office ——成熟的office应用套件,类似并兼容MS Office。包括了字处理、电子表格、演示文稿、公式编辑和绘图程序。字处理程序可以直接将文档转换为PDF格式。Perl——广受欢迎的解释性编程语言,适合于检索任意文本

第 1章 Linux 基 础个 命 令 并 给 出 其 功 能 说 明 , Help Character( 字 符 帮 助 ,Ctrl-h c) 描 述 一 个 给 定 字 符 的 作 用 , Help Function( 函 数帮 助 , Ctrl-h f) 描 述 一 个 指 定 名 称 的 Lisp 函 数 。 Emacs的 Undo( 恢 复 功 能 ) 可 以 取 消 最 近 几 步 对 缓 冲 区 所做 的 修 改 , 因 此 很 容 易 从 编 辑 错 误 中 恢 复 。GNU Emacs 许 多 特 殊 的 包 可 以 处 理 邮 件 接 收 (RMail) 和邮 件 发 送 (Mail) 、 大 纲 编 辑 (Outline)、 编 译 (Compile) 、 在Emacs窗 口 中 运 行 shell、 运 行 Lisp的 read-eval-print 循 环 (Lisp-Interaction-Mode) 以 及 自 动 修 正 (Doctor) 。 还 有 一 个 扩 充 的参 考 手 册 , 但 是 其 他 版 本 的 Emacs用 户 即 使 没 有它 , 要 适 应 GNU Emacs 也 不 会 有 什 么 困 难 。 而 Emacs的 新 用 户 通 过 学 习 指 南 和 使 用 自 身 文 档 特 性 ,很 快 就 能 够 使 用 GNU Emacs 的 基 本 功 能 。

2. Emacs 的 普 通 文 本 编 辑 功 能1) 创 建 / 打 开 文 件

Ctrl-x Ctrl-f

先 输 入 Ctrl+x , 然 后 输 入 Ctrl+f 。 输 入 完 命 令 之后 , 屏 幕 下 方 的 命 令 栏 会 显 示 当 前 所 在 的 路 径改 变 路 径 到 你 想 创 建 或 打 开 的 文 件 的 路 径 , 然后 输 入 文 件 名 , 如 果 文 件 存 在 , 则 会 在 Emacs中打 开 , 如 果 文 件 不 存 在 , 则 会 创 建 文 件 , 然 后在 Emacs中 打 开 编 辑 。

2) 关 闭 Emacs

Ctrl-x Ctrl-c

3) 保 存 文 件

Ctrl-x Ctrl-s

4) 取 消 命 令 如 果 不 慎 打 错 了 命 令 , 可 以 输 入 Ctrl-g 来 结 束

命 令5) 撤 销 操 作

Ctrl-_

• 49 •

Page 50: 预备篇 · Web viewOpen Office ——成熟的office应用套件,类似并兼容MS Office。包括了字处理、电子表格、演示文稿、公式编辑和绘图程序。字处理程序可以直接将文档转换为PDF格式。Perl——广受欢迎的解释性编程语言,适合于检索任意文本

软件综合开发案例教程——Linux、GCC、MySQL、Socket、Gtk+与开源案例这 个 命 令 可 以 取 消 上 一 次 操 作 , 连 续 使 用

可 以 取 消 保 存 后 的 操 作 。 使 用 这 个 命 令 , 先 按住 [Ctrl] 键 , 然 后 按 [Shift] 键 , 然 后 按 主 键 盘 上 的“ -”(0后 面 的 那 个 ) , 即 可 成 功 。

6) 上 下 左 右 移 动可 以 使 用 上 下 左 右 四 个 箭 头 , 但 是 传 统 的

Emacs操 作 是 : 上 (Ctrl-p) 左 (Ctrl-b) 右 (Ctrl-f) 下 (Ctrl-n)

7) 上 一 页 / 下 一 页其 他 的 文 本 编 辑 器 往 往 使 用 [PageUp]/[PageDown] 来

完 成 这 个 功 能 , 但 在 Emacs中 , [PageUp]/[PageDown] 不 能用 。

上一页 (Alt-v) 下一页 (Ctrl-v)

8) “ 瞬 间 移 动 ”Emacs提 供 了 一 些 很 方 便 的 快 捷 键 :

Ctrl-a 到一行的开始处

Ctrl-e 到一行的末尾处

Alt-a 到一段的开始处

Alt-e 到一段的末尾处

Alt-< 到文件的开头

Alt-> 到文件的末尾

9) 删 除 字 符 Ctrl-d 删除下一个字符

Delback 删除上一个字符

Alt-Delback 删除上一个词

Alt-d 删除下一个词

Ctrl-k 删除从光标到句末所有字符

Alt-k 删除一段字符

10) 查 找 / 替 换 Ctrl-s 从光标所在位置向下搜 索

• 50 •

Page 51: 预备篇 · Web viewOpen Office ——成熟的office应用套件,类似并兼容MS Office。包括了字处理、电子表格、演示文稿、公式编辑和绘图程序。字处理程序可以直接将文档转换为PDF格式。Perl——广受欢迎的解释性编程语言,适合于检索任意文本

第 1章 Linux 基 础 Ctrl-r 从光标所在位置向上搜 索

Alt-x replace-string 替换文字,输入想要替换的字符即可

最 后 这 个 命 令 比 较 繁 琐 。 教 一 个 小 技 巧 ,输 入 完 replace 之 后 按 Tab , 即 可 自 动 输 入 命 令 , 如果 以 replace 开 头 不 止 一 个 , 就 会 列 出 所 有 以 replace打 头 的 命 令 , 另 外 Tab 也 可 以 用 于 打 开 文 件 时 自动 补 全 文 件 名 。

11) 挂 起有 时 候 不 想 真 的 退 出 Emacs而 只 是 暂 停 去 运 行

另 一 个 程 序 , 这 时 候 可 以 使 用 Ctrl-z , 这 个 方 法在 命 令 行 模 式 下 很 有 用 。 要 回 到 原 来 的 那 里 ,在 命 令 行 下 用 fg命 令 或 者 用 %emacs 。

12) 切 换如 果 打 开 两 个 或 两 个 以 上 的 文 件 , 可 以 用

Ctrl-x b 文 件 名 来 进 行 文 件 之 间 的 切 换 。13) 查 看 Emacs 文 档可 以 通 过 查 阅 文 档 来 进 一 步 了 解 Emacs, 输 入

Ctrl-h t 即 可 看 到 初 学 者 教 程 , 输 入 Ctrl-h i 可 以 查 看info 文 档 。

3. Vi 的 简 要 使 用 说 明Vi 是 类 UNIX 机 器 上 默 认 安 装 的 软 件 , 功 能 很

齐 全 。 Vim可 以 看 作 Vi 的 高 级 软 件 , 它 的 官 方 网站 说 , Vim是 一 个 “ 程 序 开 发 工 具 ” 而 不 是 文 字处 理 软 件 。 它 加 入 了 很 多 附 加 的 功 能 , 如 支 持规 范 表 示 法 的 搜 索 架 构 、 多 文 件 编 辑 、 块 复 制等 等 。

1) Vi 的 三 种 模 式通 常 Vi 共 分 为 3 种 模 式 , 分 别 是 “ 一 般 模

式 ” 、 “ 编 辑 模 式 ” 、 “ 命 令 行 模 式 ” 。 这 三种 模 式 可 以 用 图 1-7 来 表 示 。

• 51 •

Page 52: 预备篇 · Web viewOpen Office ——成熟的office应用套件,类似并兼容MS Office。包括了字处理、电子表格、演示文稿、公式编辑和绘图程序。字处理程序可以直接将文档转换为PDF格式。Perl——广受欢迎的解释性编程语言,适合于检索任意文本

软件综合开发案例教程——Linux、GCC、MySQL、Socket、Gtk+与开源案例

图1-7 Vi 三种模式的相互关系要 想 使 用 Vi 建 立 一 个 文 件 名 为 test.txt的 文 件 ,

可 按 以 下 步 骤 进 行 。第 一 步 , 使 用 Vi 键 入 一 般 模 式 。

[root@linux ~]# vi test.txt

直 接 输 入 “ Vi 文 件 名 ” 即 可 进 入 Vi 。 在 屏幕 的 左 下 方 会 显 示 这 个 文 件 的 当 前 状 态 。 如 果是 新 建 文 件 , 会 显 示 [New File] , 如 果 是 已 存 在的 文 件 , 则 会 显 示 当 前 文 件 名 、 行 数 与 字 符数 。

第 二 步 , 按 下 i 进 入 编 辑 模 式 , 开 始 编 辑 文字 。

在 一 般 模 式 中 , 只 要 按 下“ i 、 I 、 o 、 O、 a 、 A、 r 、 R” 等 字 符 , 就 可 以进 入 编 辑 模 式 了 。 在 编 辑 模 式 中 , 左 下 角 会 出现 --INSERT-- , 意 味 着 可 以 输 入 任 意 字 符 。 这 个 时候 , 键 盘 上 除 了 “ Esc” 这 个 按 键 之 外 , 其 他 按键 都 可 以 视 作 一 般 的 输 入 按 钮 , 可 以 进 行 任 何编 辑 。

第 三 步 , 按 下 “ Esc” 键 回 到 一 般 模 式 。编 辑 完 毕 , 退 出 时 按 下 “ Esc” 键 , 按 下 后 左

下 角 的 --INSERT-- 会 消 失 。第 四 步 , 在 一 般 模 式 下 输 入 :wq , 存 储 后 离

开 Vi 。输 入 “ :wq” 即 可 保 存 文 件 并 离 开 。2) 命 令 行 的 命 令 说 明命 令 行 的 命 令 具 体 说 明 详 见 表 1-4 。

• 52 •

Page 53: 预备篇 · Web viewOpen Office ——成熟的office应用套件,类似并兼容MS Office。包括了字处理、电子表格、演示文稿、公式编辑和绘图程序。字处理程序可以直接将文档转换为PDF格式。Perl——广受欢迎的解释性编程语言,适合于检索任意文本

第 1章 Linux 基 础表1-4 Vi 命令说明列表

一般模式:移动光标的方法h 或 向 左 方 向 键()

光标向左移动一个字符

j 或 向 下 方 向 键()

光标向下移动一个字符

k 或 向 上 方 向 键()

光标向上移动一个字符

l 或 向 右 方 向 键()

光标向右移动一个字符如果想要进行多次移动的话,例如向下移动 30行,可以使用“30j” 或“30” 的组合键,即加上想要进行的次数 ( 数字 ) 后,操作即可。

[Ctrl]+[f] 屏幕“向下”移动一页,相当于按“Page Down” 键[Ctrl]+[b] 屏幕“向上”移动一页,相当于按“Page Up” 键[Ctrl]+[d] 屏幕“向下”移动半页[Ctrl]+[u] 屏幕“向上”移动半页+ 光标移动到非空格符的下一行- 光标移动到非空格符的上一行n <space> n 表示“数字”,例如20。按下数字后再按空格键,光标会向右移动

这一行的n 个字符。例如20 <space> 则光标会向后面移动20个字符距离。

0 数字“0”,移动到这一行的最前面字符处$ 移动到这一行的最后面字符处H 光标移动到这个屏幕的最上方那一行M 光标移动到这个屏幕的中央那一行L 光标移动到这个屏幕的最下方那一行G 移动到这个文件的最后一行nG n 为数字。移动到这个文件的第n 行。例如20G ,则会移动到这个文

件的第20行。gg 移动到这个文件的第一行n <Enter> n 为数字。光标向下移动n 行一般模式:搜 索与替换/word 从光标位置开始,向下寻找一个名为word的字符串?word 从光标位置开始,向上寻找一个名为word的字符串n n 是英文按键。表示“重复前一个搜索的动作”N N 是英文按键。与n 刚好相反,为“反向”进行前一个搜 索操作:n1 、 n2s/word1/

word2/g

n1与n2为数字。在第n1与n2行之间寻 找 word1 这个字符串,并将该字符串 替换为word2

:l 、 $s/word1/ 从第一行到最后一行寻 找word1 字符串,并将该字符串 替换为word2

• 53 •

Page 54: 预备篇 · Web viewOpen Office ——成熟的office应用套件,类似并兼容MS Office。包括了字处理、电子表格、演示文稿、公式编辑和绘图程序。字处理程序可以直接将文档转换为PDF格式。Perl——广受欢迎的解释性编程语言,适合于检索任意文本

软件综合开发案例教程——Linux、GCC、MySQL、Socket、Gtk+与开源案例word2/g

:1 、$s/word1/

word2/gc

从第一行到最后一行寻 找word1 字符串,并将该字符串 替换为word2 ,且在替换前显示提示符给用户确认是否需要替换

( 续表 )

一般模式:删除、复制与粘 贴x ,X 在一行字中,x 为向后删除一个字符,X 为向前删除一个字符nx n 为数字,连续向后删除n 个字符dd 删除光标所在的那一整行ndd n 为数字,从光标位置开始,删除向下n 列d1G 删除光标所在位置到第一行的所有数字dG 删除光标所在位置到最后一行的所有数字d$ 删除光标所在位置到该行的最后一个字符d0 d 的后面是数字0 ,删除光标所在处,到该行的最前面一个字符yy 复制光标所在的那一行nyy n 为数字,复制光标所在行的向下n 行y1G 复制光标所在行到第一行的所有数据yG 复制光标所在行到最后一行的所有数据y0 复制光标所在的那个字符到该行行首的所有数据y$ 复制光标所在的那个字符到该行行尾的所有数据p ,P p 为将已复制的数据粘贴到光标的下一行,P 则为粘贴在光标上一行J 将光标所在行与下一列的数据结合成同一行c 重复删除多个数据u 复原前一个操作[Ctrl]+r 重做上一个操作. 小数点。重复前一个动作。如果想重复删除、复制、粘 贴,按下小数

点“ .” 即可进入编辑模式:i , I 插入:在当前光标所在处插入输入文字,已存在的文字会向后退。其

中, i 为“在当前光标所在处插入”, I 为“在当前所在行的第一个非空格符处开始插入”

a ,A a 为“在当前光标所在的下一个字符处开始插入”,A 为“在当前光标所在行的最后一个字符处开始插入”

o ,O o 为“在当前光标所在的下一行处插入新的一行”,O 为“在当前光标所在处的上一行插入新的一行”

r ,R 替换: r 为“替换光标所在的那一个字符”,R 为“一直替换光标所在的文字,直到按下“Esc”键为止”

• 54 •

Page 55: 预备篇 · Web viewOpen Office ——成熟的office应用套件,类似并兼容MS Office。包括了字处理、电子表格、演示文稿、公式编辑和绘图程序。字处理程序可以直接将文档转换为PDF格式。Perl——广受欢迎的解释性编程语言,适合于检索任意文本

第 1章 Linux 基 础Esc 提出编辑模式,会到一般模式中命令行模式::w 将编辑的数据写入硬盘文件:w! 若文件属性为“只读”,则强制写入该文件。不过到底能不能写入,

与文件权限有关:q 离开Vi

:q! 若曾修改过文件,又不想存储,可使用 ! 为强制离开,不存储文件:wq 存储后离开,若为 :wq !,则为强制存储后离开

( 续表 )

命令行模式::e! 将文件还原为最原始的状态ZZ 若文件没有更改,则不存储离开,若文件已经更改,则存储后离开:w[filename] 将编辑的数据存储成另一个文件:r[filename] 在编辑的数据中,读入另一个文件的数据。即将“ filebname” 这个文

件内容加到光标所在行的后面:n1 、 n2

w[filename]

将n1到n2的内容存储为 filename 文件: ! command 暂时离开Vi到命令行模式下显示执行command 的结果:set nu 显示行号,设置之后,会在每一行的前缀显示该行的行号:set nonu 与set nu 相反,为取消行号

3) Vim 的 附 加 功 能其 实 , 当 前 大 部 分 的 版 本 都 已 经 采 用 Vim 替

代 Vi 的 功 能 了 。 如 果 使 用 Vi 后 , 却 看 到 画 面 右下 角 有 显 示 当 前 光 标 所 在 的 行 号 , 那 么 就 说 明你 的 Vi 已 经 被 Vim所 替 换 。 Vim具 有 颜 色 显 示 功 能 ,并 且 支 持 许 多 程 序 语 法 , 因 此 , 当 使 用 Vim编 辑程 序 时 ( 不 论 是 C 语 言 , 还 是 shell脚 本 ) , Vim可 以帮 你 直 接 进 行 程 序 调 试 。 Vim操 作 可 参 见 表 1-5 。

表1-5 Vim 操作列表v 字符选择,会将光标经过的地方反白选择V 行选择,会将光标经过的地方反 白选择[Ctrl]+v 块选择,可以用长方形的方式选择数据y 复制反白的地方d 将反 白的地方删除掉:n 编辑下一个文件:N 编辑上一个文件:files 列出当前Vim 打开的所有文件

• 55 •

Page 56: 预备篇 · Web viewOpen Office ——成熟的office应用套件,类似并兼容MS Office。包括了字处理、电子表格、演示文稿、公式编辑和绘图程序。字处理程序可以直接将文档转换为PDF格式。Perl——广受欢迎的解释性编程语言,适合于检索任意文本

软件综合开发案例教程——Linux、GCC、MySQL、Socket、Gtk+与开源案例:sp

[filename]

打开一个新窗口,如果加 filename ,表示在新窗口打开一个新文件,否则表示两个窗口为同一个文件内容 ( 同步显示 ) 。

[Ctrl]+wj 先按下“Ctrl”不放,再按下w 后放开所有的按键,然后再按下 j ,则光标可移动到下方的窗口

[Ctrl]+wk 同上,光标移到上面的窗口[Ctrl]+wq 结束离开,与 :q 相同

(a) 块 选 择 : Vi 的 操 作 几 乎 都 是 以 行 为 单 位 。Vim具 有 块 选 择 的 功 能 , 当 按 下 v 键 或 者 V键 或 者“ Ctrl+v” 键 时 , 光 标 移 动 过 的 地 方 就 会 开 始 反 白 。块 选 择 在 格 式 整 齐 的 文 件 中 很 有 用 , 尤 其 是 我们 想 要 大 量 复 制 其 中 一 个 块 , 而 不 是 整 行 复 制的 场 合 。

(b) 多 文 本 编 辑 ( 多 窗 口 功 能 ) : 当 一 个 文 件非 常 大 , 查 看 后 面 的 数 据 时 想 要 对 照 看 前 面 的数 据 , 或 者 有 多 个 文 件 需 要 对 照 着 看 的 时 候 ,多 窗 口 功 能 很 有 用 。 使 用 Vim 打 开 两 个 窗 口 , 在命 令 行 模 式 下 输 入 : “ :sp{filename}” , filename 可 有 可无 , 如 果 想 在 新 窗 口 启 动 另 一 个 文 件 , 就 加 入文 件 名 , 否 则 仅 输 入 :sp , 在 两 个 窗 口 间 会 出 现同 一 个 文 件 。 利 用 “ Ctrl+w+j” 键 及 “ Ctrl+w+k” 键 在 两个 文 件 间 切 换 , 这 样 复 制 、 查 看 等 操 作 就 变 得很 简 单 。

4. Gedit 的 简 要 使 用 说 明Gedit 是 一 个 图 形 化 文 本 编 辑 器 。 它 可 以 打 开 、

编 辑 并 保 存 纯 文 本 文 件 。 但 你 也 可 以 把 它 用 来当 成 是 一 个 集 成 开 发 环 境 (IDE) , 它 会 根 据 不 同的 语 言 高 亮 显 现 关 键 字 和 标 识 符 。 你 还 可 以 从其 他 图 形 化 桌 面 程 序 中 剪 切 和 粘 贴 文 本 ; 还 可以 创 建 新 的 文 本 文 件 ; 并 且 还 能 打 印 文 件 。Gedit 有 一 个 清 晰 而 又 通 俗 易 懂 的 界 面 , 它 使 用活 页 标 签 , 因 此 你 可 以 不 必 打 开 多 个 Gedit 窗 口而 同 时 打 开 多 个 文 件 。

要 启 动 Gedit , 单 击 “ 主 菜 单 ” =>“附 件 ” =>“文本 编 辑 器 ” 。 你 还 可 以 在 shell提 示 下 键 入 Gedit 来启 动 Gedit , 如 图 1-8 所 示 。 注 意 : Gedit 只 能 在 图 形化 桌 面 环 境 中 运 行 。

• 56 •

Page 57: 预备篇 · Web viewOpen Office ——成熟的office应用套件,类似并兼容MS Office。包括了字处理、电子表格、演示文稿、公式编辑和绘图程序。字处理程序可以直接将文档转换为PDF格式。Perl——广受欢迎的解释性编程语言,适合于检索任意文本

第 1章 Linux 基 础

图1-8 Gedit 编辑界面一 旦 Gedit 运 行 了 , 就 会 看 到 一 个 空 白 的 编 辑

区 域 , 如 图 1-8 所 示 。 可 以 立 即 开 始 使 用 Gedit ,或 单 击 “ 打 开 ” 按 钮 来 选 择 想 编 辑 的 纯 文 本 文件 。 这 个 文 件 会 被 载 入 到 如 图 1-8 所 示 的 主 编 辑区 域 。 可 以 单 击 并 按 住 窗 口 右 侧 的 滚 动 条 , 并上 下 移 动 鼠 标 来 前 后 查 看 文 件 。 或 者 , 使 用 箭头 键 一 行 一 行 地 滚 动 文 本 文 件 。 按 “ Page Up” 和“ Page Down” 键 , 会 一 页 一 页 地 滚 动 文 件 。

Gedit 允 许 使 用 分 开 的 活 页 标 签 在 一 个 窗 口 中打 开 多 个 文 本 文 件 。 可 以 通 过 单 击 和 文 件 名 相关 的 活 页 标 签 来 浏 览 每 个 文 件 。

一 旦 已 经 修 改 或 写 入 了 文 本 文 件 , 就 可 以通 过 单 击 工 具 栏 上 的 “ 保 存 ” 按 钮 来 保 存 它 ,或 从 文 件 菜 单 中 选 择 “ 文 件 ” =>“ 保 存 ” 。 如 果编 辑 的 是 一 个 新 的 文 本 文 件 , 一 个 窗 口 会 弹 出来 , 提 示 给 文 件 命 名 , 并 保 存 在 想 要 保 存 到 的目 录 。 如 果 编 辑 的 是 一 个 已 存 的 文 件 , 在 下 次打 开 这 个 文 件 时 , 所 做 的 改 变 就 会 自 动 出 现 在文 件 中 。 还 可 以 选 择 “ 文 件 ” =>“ 另 存 为 ...” 来把 某 个 已 存 文 件 保 存 到 另 一 个 位 置 或 重 新 命 名这 在 编 辑 配 置 文 件 时 为 你 提 供 了 方 便 的 测 试 方法 。 可 以 测 试 你 的 改 变 , 而 不 至 丢 失 你 的 原 始配 置 。

关 于 Gedit 的 更 多 信 息 , 选 择 文 件 菜 单 中 的

• 57 •

Page 58: 预备篇 · Web viewOpen Office ——成熟的office应用套件,类似并兼容MS Office。包括了字处理、电子表格、演示文稿、公式编辑和绘图程序。字处理程序可以直接将文档转换为PDF格式。Perl——广受欢迎的解释性编程语言,适合于检索任意文本

软件综合开发案例教程——Linux、GCC、MySQL、Socket、Gtk+与开源案例“ 帮 助 ” =>“内 容 ” 来 阅 读 Gedit 的 说 明 书 。

Gedit 是 一 个 Gnome 桌 面 的 轻 量 级 的 文 本 编 辑 器 ,支 持 诸 多 标 准 编 辑 特 性 , 具 有 强 大 插 件 扩 展 系统 , 包 括 拼 写 检 查 、 日 期 插 入 、 字 数 统 计 、 文档 或 文 件 比 较 、 从 shell输 出 、 为 通 用 的 标 记 语 言( 如 HTML和 Latex) 插 入 tag 。 在 KDE 中 与 Gedit 相 似 的 是Kedit , 包 含 在 有 KDE 的 Linux 发 行 版 中 。

但 总 的 说 来 , Gedit 功 能 比 较 简 单 , 缺 少 一 些诸 如 文 本 操 作 和 宏 , 或 者 是 HTML的 一 键 标 签 功能 ( 例 如 粗 体 或 者 链 接 ) , 而 且 它 的 语 句 色 彩 还是 有 些 不 足 。 如 果 你 想 寻 找 一 款 简 单 的 编 辑 器 ,记 录 一 些 简 单 的 备 忘 或 者 快 捷 脚 本 以 及 代 码 段落 , 那 么 它 是 一 款 不 错 的 应 用 程 序 。 但 如 果 要完 成 一 些 更 深 层 次 、 更 高 要 求 的 任 务 , 则 还 是需 要 一 款 更 强 大 的 应 用 程 序 。1.4.2 编 译 工 具

Linux 上 的 编 译 工 具 主 要 由 GNU 项 目 提 供 。 然而 作 为 自 由 软 件 的 旗 舰 项 目 , Richard Stallman 在 十 多年 前 刚 开 始 编 写 GCC 的 时 候 , 还 只 是 把 它 当 作一 个 C 程 序 语 言 的 编 译 器 , GCC 的 意 思 也 只 是GNU C Compiler 而 已 。 经 过 了 这 么 多 年 的 发 展 , GCC已 经 不 仅 仅 能 支 持 C 语 言 。 它 现 在 还 支 持 Ada 语言 、 C++语 言 、 Java语 言 、 Objective C 语 言 、 Pascal 语 言 、Fortran 语 言 、 COBOL 语 言 , 以 及 支 持 函 数 式 编 程 和逻 辑 编 程 的 Mercury 语 言 , 等 等 。 而 GCC 也 不 再 只是 GNU C 语 言 编 译 器 的 意 思 了 , 而 是 变 成 了 GNU Compiler Collection , 也 即 是 GNU 编 译 器 家 族 的 意 思 了 。

由 于 GCC 已 成 为 GNU 系 统 的 官 方 编 译 器 ( 包 括GNU/Linux 家 族 ) , 它 也 成 为 其 他 操 作 系 统 的 主 要编 译 器 , 包 括 BSD 家 族 、 Mac OS X 、 NeXTSTEP 与 BeOS等 。

另 一 方 面 , 说 到 GCC 对 于 各 种 硬 件 平 台 的 支持 , 概 括 起 来 就 是 一 句 话 : 无 所 不 在 。 对 于 几乎 所 有 有 点 实 际 用 途 的 硬 件 平 台 , 甚 至 包 括 有些 不 那 么 有 实 际 用 途 的 硬 件 平 台 , 比 如 Don Knuth设 计 的 MMIX计 算 机 , GCC 都 提 供 了 完 善 的 支 持 。

GCC 通 常 是 跨 平 台 软 件 的 编 译 器 首 选 。 有 别

• 58 •

Page 59: 预备篇 · Web viewOpen Office ——成熟的office应用套件,类似并兼容MS Office。包括了字处理、电子表格、演示文稿、公式编辑和绘图程序。字处理程序可以直接将文档转换为PDF格式。Perl——广受欢迎的解释性编程语言,适合于检索任意文本

第 1章 Linux 基 础于 一 般 局 限 于 特 定 系 统 与 执 行 环 境 的 编 译 器 ,GCC 在 所 有 平 台 上 都 使 用 同 一 个 前 端 处 理 器 ,产 生 一 样 的 中 间 代 码 , 因 此 该 中 间 代 码 在 各 个其 他 平 台 上 使 用 GCC 编 译 , 非 常 容 易 地 得 到 正确 无 误 的 目 标 码 。

1. 目 前 支 持 的 语 言目 前 GCC 支 持 如 下 语 言 : Ada—GNAT 、 C—GCC、 C++

—G++、 Fortran—(Fortran 77: G77 , Fortran 90: GFORTRAN)、 Java—( 编 译器 : GCJ 。 解 释 器 : GIJ) 、 Objective-C—GOBJC 、 Objective-C++ 。

下 列 前 端 依 然 存 在 : Modula-2 、 Modula-3 、 Pascal 、 PL/I、 D语 言 、 Mercury 、 VHDL。

2. 内 嵌 OpenMP 支 持OpenMP是 一 种 跨 语 言 的 、 对 称 多 处 理 器 (SMP)多

线 程 并 行 程 序 的 编 程 工 具 , 也 非 常 适 合 当 今 越来 越 流 行 的 单 CPU 多 核 硬 件 环 境 , 因 此 从 gcc 4.2开 始 , OpenMP成 为 其 内 嵌 支 持 的 并 行 编 程 规 范 ,可 以 直 接 编 译 内 嵌 OpenMP语 句 的 C/C++/Fortran 95 的 源 代码 。 gcc 4.2 之 前 如 果 想 在 C/C++/Fortran 中 嵌 入 OpenMP语句 的 话 , 需 要 额 外 安 装 库 和 预 处 理 器 才 能 识 别和 正 确 处 理 这 些 语 句 。

目 前 , gcc 4.2.0开 始 支 持 OpenMP v2.5, gcc 4.4.0开 始 支持 OpenMP v2.5及 v3.0。

3. 支 持 的 处 理 器 架 构GCC 目 前 支 持 下 列 处 理 器 架 构 ( 以 4.1 版 为 准 ) :

Alpha 、 ARM 、 Atmel AVR 、 Blackfin 、 H8/300 、 IA-32(x86) 与 x86-64 、 IA-64 。 例 如 : Itanium 、 MorphoSys 家 族 、 Motorola 68000 、 Motorola 88000 、 MIPS 、 PA-RISC 、 PDP-11 、 PowerPC、 System/370与 System/390、 SuperH 、 HC12 、 SPARC、 VAX 、 Renesas R8C / M16C / M32C 家 族 等 。

同 时 , 也 支 持 一 些 不 是 很 有 名 的 处 理 器 架构 : A29K 、 ARC 、 C4x 、 CRIS 、 D30V 、 DSP16xx 、 FR-30 、 FR-V 、 Intel i960、 IP2000 、 M32R 、 68HC11 、 MCORE、 MMIX、 MN10200 、 MN10300 、 NS32K 、 ROMP、 Stormy16 、 V850 、 Xtensa等 。

还 有 由 FSF 个 别 维 护 的 GCC 处 理 器 架 构 :

• 59 •

Page 60: 预备篇 · Web viewOpen Office ——成熟的office应用套件,类似并兼容MS Office。包括了字处理、电子表格、演示文稿、公式编辑和绘图程序。字处理程序可以直接将文档转换为PDF格式。Perl——广受欢迎的解释性编程语言,适合于检索任意文本

软件综合开发案例教程——Linux、GCC、MySQL、Socket、Gtk+与开源案例

D10V 、 MicroBlaze 、 PDP-10 、 MSP430 、 Z8000 等 。当 GCC 需 要 移 植 到 一 个 新 平 台 上 , 通 常 使 用

此 平 台 固 有 的 语 言 来 编 写 其 初 始 代 码 。4. 结 构GCC 编 译 器 的 工 作 是 将 源 代 码 ( 通 常 使 用 高

级 语 言 编 写 ) 翻 译 成 目 标 代 码 ( 通 常 是 低 级 的 目标 代 码 或 者 机 器 语 言 ) , 在 现 代 编 译 器 的 实 现中 , 这 个 工 作 一 般 是 分 为 两 个 阶 段 来 实 现 的 :

第 一 阶 段 , 编 译 器 的 前 端 接 受 输 入 的 源 代码 , 经 过 词 法 、 语 法 和 语 义 分 析 等 得 到 源 程 序的 某 种 中 间 表 示 方 式 。

第 二 阶 段 , 编 译 器 的 后 端 将 前 端 处 理 生 成的 中 间 表 示 方 式 进 行 一 些 优 化 , 并 最 终 生 成 在目 标 机 器 上 可 以 运 行 的 代 码 。

GCC(GNU Compiler Collection)是 在 UNIX 以 及 类 UNIX 平 台 上广 泛 使 用 的 编 译 器 集 合 , 它 能 够 支 持 多 种 语 言前 端 , 包 括 C、 C++、 Objective-C 、 Ada、 Fortran 、 Java等 。

GCC 设 计 中 有 两 个 重 要 的 目 标 : 其 中 一 个 是在 构 建 支 持 不 同 硬 件 平 台 的 编 译 器 时 , 它 的 代码 能 够 在 最 大 程 度 上 被 复 用 , 所 以 GCC 必 须 做到 一 定 程 度 的 硬 件 无 关 性 ; 另 一 个 是 要 生 成 高质 量 的 可 执 行 代 码 , 这 就 需 要 对 代 码 进 行 集 中的 优 化 。 为 了 实 现 这 两 个 目 标 , GCC 内 部 使 用了 一 种 硬 件 平 台 无 关 的 语 言 , 它 能 对 实 际 的 体系 结 构 做 一 种 抽 象 , 这 个 中 间 语 言 就 是 RTL(Register Transfer Language) 。

GCC 的 使 用 与 一 个 标 准 的 UNIX 编 译 器 的 使 用类 似 。 使 用 者 在 命 令 行 下 键 入 GCC 的 编 译 器 名 、一 些 命 令 参 数 以 及 被 编 译 的 原 代 码 文 件 , 并 为输 出 目 标 码 使 用 适 合 此 硬 件 平 台 的 汇 编 语 言 编译 器 , 最 后 进 行 连 接 生 成 可 执 行 程 序 。

5. 软 件 工 具一 个 大 型 软 件 总 是 由 多 个 源 程 序 组 成 的 ,

为 了 能 够 将 大 量 的 编 译 命 令 作 一 次 完 成 , Linux中 提 供 了 make 和 autoconf 工 具 , 分 别 用 于 大 型 软 件的 编 译 以 及 编 译 前 根 据 机 器 当 前 状 态 做 相 应 配

• 60 •

Page 61: 预备篇 · Web viewOpen Office ——成熟的office应用套件,类似并兼容MS Office。包括了字处理、电子表格、演示文稿、公式编辑和绘图程序。字处理程序可以直接将文档转换为PDF格式。Perl——广受欢迎的解释性编程语言,适合于检索任意文本

第 1章 Linux 基 础置 。

6. 开 发 工 具 包在 Linux 下 提 供 了 优 秀 的 GNU C 库 函 数 、 Motif 函

数 库 、 GTK 函 数 库 、 QT 函 数 库 等 , 为 你 的 编 程提 供 大 量 的 支 持 。

7. 项 目 管 理 工 具在 Linux 下 还 有 CVS 这 样 优 秀 的 用 于 版 本 控 制 、

管 理 的 软 件 配 置 管 理 工 具 。8. 开 发 环 境 Eclipse

前 面 介 绍 的 GCC 应 用 是 在 终 端 上 的 命 令 行 环境 下 进 行 的 。 很 显 然 , 在 当 前 图 形 用 户 界 面 GUI一 统 天 下 的 情 况 下 , 显 得 落 后 而 又 笨 拙 。

Eclipse 是 linux 平 台 时 下 备 受 注 目 的 开 源 Java IDE。 Eclipse 主 要 以 其 开 放 性 、 极 为 高 效 的 GUI、 先进 的 代 码 编 辑 器 等 著 称 , 其 项 目 包 括 许 多 各 种各 样 的 子 项 目 组 , 包 括 Eclipse 插 件 、 功 能 部 件 等 ,而 其 开 放 式 的 平 台 , 则 给 了 Eclipse 在 众 多 开 发 平台 中 前 所 未 有 的 扩 展 性 。 任 何 人 都 能 够 轻 易 地将 自 己 的 软 件 做 成 Eclipse 的 插 件 , 而 且 这 些 插 件只 需 简 单 地 复 制 到 Eclipse 的 插 件 文 件 夹 下 就 可 以被 集 成 。 通 过 插 件 , 我 们 能 够 在 Eclipse 中 进 行 所见 即 所 得 的 窗 口 设 计 , 能 够 开 发 C/C++软 件 , 能够 进 行 Web项 目 开 发 及 测 试 , 还 能 够 进 行 企 业 级软 件 的 开 发 管 理 和 性 能 测 试 。 Eclipse 采 用 了 SWT界 面 库 , 支 持 多 种 本 机 界 面 风 格 , 其 代 码 编 辑器 也 十 分 先 进 , 众 多 的 编 码 辅 助 功 能 都 相 当 实用 。 更 为 值 得 一 提 的 是 , 它 率 先 集 成 的 CASE 工具 让 软 件 开 发 更 科 学 、 高 效 。 集 成 的 CVS 和 新的 版 本 控 制 程 序 SubVersion(SVN), 促 进 了 协 同 开 发 的效 率 。 JUnit 则 提 供 了 在 软 件 开 发 中 使 用 TDD(Test Driven Develop) 方 法 的 一 个 便 捷 且 低 廉 的 实 现 方 案 。

唯 一 的 遗 憾 是 , 资 源 占 用 太 高 , 为 了 实 时生 成 窗 口 而 付 出 的 时 间 代 价 十 分 巨 大 。 但 是 作为 一 个 高 品 质 的 开 发 平 台 , 这 些 对 于 我 们 进 行的 应 用 开 发 来 说 是 可 以 接 受 的 。

• 61 •

Page 62: 预备篇 · Web viewOpen Office ——成熟的office应用套件,类似并兼容MS Office。包括了字处理、电子表格、演示文稿、公式编辑和绘图程序。字处理程序可以直接将文档转换为PDF格式。Perl——广受欢迎的解释性编程语言,适合于检索任意文本

软件综合开发案例教程——Linux、GCC、MySQL、Socket、Gtk+与开源案例

1.4.3 其 他 编 程 工 具除 了 使 用 GCC 编 程 工 具 在 Linux 下 开 发 出 高 效

的 、 高 可 移 植 性 的 应 用 程 序 以 外 , 针 对 其 他 应用 , Linux 还 提 供 了 其 他 的 编 程 工 具 :

(a) Shell 编 程 : Shell 是 Linux 操 作 系 统 的 最 外 层 ,直 接 与 用 户 交 互 , 负 责 解 释 命 令 。 就 像 DOS 中的 COMMAND.COM 程 序 。 Shell 编 程 与 编 写 .BAT 文 件 类似 , 但 其 提 供 了 一 整 套 机 制 , 使 其 具 有 很 强 大的 功 能 , 所 以 不 可 小 看 。 善 于 使 用 Shell 编 程 ,可 以 更 好 地 使 用 和 管 理 Linux 操 作 系 统 。

(b) Web 编 程 : 在 Linux 系 统 下 , 拥 有 最 好 、 最 普及 的 WEB 服 务 器 Apache , 还 有 优 秀 的 PHP脚 本 语 言 ,所 以 在 Linux 系 统 下 的 Web编 程 也 是 很 有 “ 钱 途 ”的 技 能 , 其 包 括 PHP、 JSP 、 Perl 的 开 发 。

(c) 用 户 交 互 式 程 序 : 在 Linux 系 统 中 , 你 可 以使 用 ncursor 库 来 实 现 字 符 界 面 下 的 用 户 交 互 式 程序 。

(4) X-Win 编 程 : 在 Linux 系 统 下 , 有 一 个 从 UNIX 系统 过 继 来 的 图 形 界 面 系 统 —— X Window , 你 可 以 在这 里 另 辟 天 地 。 这 方 面 的 开 发 , MOTIF 函 数 库 、QT 函 数 库 、 KDE 函 数 库 可 以 助 你 一 臂 之 力 。1.4.4 常 用 应 用 工 具

Linux 下 有 一 些 常 见 的 工 具 程 序 , 通 常 使 用 它们 会 比 使 用 繁 琐 的 X Window 或 者 Linux 命 令 行 容 易 得多 , 这 里 列 出 一 些 比 较 常 用 的 程 序 , 注 意 在 X Window 下 用 的 没 有 列 入 , 以 后 再 介 绍 。

AbiWord—— 独 立 字 处 理 程 序 ( 类 似 并 兼 容 MS Word) 。 可 以 运 行 在 任 何 操 作 系 统 上 , 并 支 持 多种 语 言 。

Apache—— 互 联 网 最 流 行 的 Web Server, 目 前 支 持 着超 过 70%的 网 站 。

Blender—— 深 受 爱 戴 的 三 维 建 模 、 动 画 、 绘 图 、后 期 制 作 、 交 互 创 作 和 回 放 的 软 件 。

Converseen—— 是 一 个 批 量 的 图 片 转 换 和 缩 略 图生 成 工 具 , 支 持 超 过 100 种 图 像 格 式 , 包 括 DPX

• 62 •

Page 63: 预备篇 · Web viewOpen Office ——成熟的office应用套件,类似并兼容MS Office。包括了字处理、电子表格、演示文稿、公式编辑和绘图程序。字处理程序可以直接将文档转换为PDF格式。Perl——广受欢迎的解释性编程语言,适合于检索任意文本

第 1章 Linux 基 础、 EXR 、 GIF 、 JPEG 、 JPEG-2000 、 PDF 、 PhotoCD 、 PNG 、 Postscript 、 SVG和 TIFF 等 。

Dia—— 图 示 制 作 程 序 , 类 似 于 MS Visio 。 可 以 用来 绘 制 多 种 框 图 , 现 在 更 有 专 门 的 对 象 来 画 实体 关 系 图 (Entity Relationship Diagrams) 、 UML 图 表 、 流 程 图 、网 络 框 图 和 简 单 的 电 路 图 。 可 以 加 载 并 将 框 图保 存 为 自 定 义 的 XML 格 式 。 导 出 框 图 为EPS(Encapsulated Post Script)或 SVG(Scalable Vector Graphics) 格 式 并 打 印 。

DOSEMU—— 可 以 使 Linux 运 行 诸 多 MS DOS程 序 。Evolution—— 提 供 给 GNOME用 户 , 整 合 邮 件 收 发 、

地 址 簿 和 日 历 功 能 。Firestarter —— 是 一 款 非 常 优 秀 的 、 基 于 GUI图 形

用 户 界 面 的 Linux 防 火 墙 。Firefox—— 属 于 很 多 人 心 中 最 重 要 的 网 页 浏 览

器 , 它 具 有 许 多 特 性 , 比 如 个 头 小 、 高 速 、 标签 式 浏 览 、 阻 止 弹 出 窗 口 、 抗 病 毒 和 其 他 恶 意代 码 。 它 由 mozilla 开 发 , 是 广 受 赞 誉 的 Mozilla 浏 览器 的 继 承 者 。

FreeMED—— 是 一 个 遵 守 HIPAA 条 例 的 医 疗 管 理 软件 包 , 旨 在 复 制 专 有 程 序 ( 如 The Medical Manager) 的 所有 功 能 。

gFTP—— 是 一 个 多 线 程 、 FTP客 户 端 支 持 的 HTTP和 SSH协 议 。 它 支 持 多 线 程 同 时 下 载 , 可 下 载 多个 文 件 , 支 持 下 载 整 个 目 录 和 子 目 录 , 具 有 书签 功 能 , 可 以 快 速 连 接 到 远 程 主 机 。 它 还 支 持断 点 续 传 , 支 持 缓 冲 远 程 目 录 列 表 , 支 持 拖 放允 许 被 动 或 主 动 文 件 传 输 。

Ghostscript—— 是 一 个 Postscript 解 释 器 , 嵌 入 在 许 多打 印 机 中 。 其 主 要 功 能 是 实 现 ps文 件 的 阅 读 并能 够 在 无 Post Script 的 打 印 机 上 打 印 PS 文 件 。

GIMP—— 是 一 个 图 像 处 理 软 件 , 类 似 于Photoshop 。

GNOME—— 是 一 个 Linux 桌 面 环 境 下 为 最 终 用 户提 供 具 有 视 觉 吸 引 力 的 桌 面 。 同 样 是 一 个 开 发平 台 , 为 建 立 应 用 程 序 提 供 广 阔 的 框 架 。

Gnumeric—— 是 一 个 高 质 量 、 易 定 制 的 电 子 表 格程 序 , 作 为 GNOME桌 面 的 一 部 分 开 发 , 用 来 替 代专 有 的 电 子 表 格 , 而 不 是 现 有 程 序 的 克 隆 。

• 63 •

Page 64: 预备篇 · Web viewOpen Office ——成熟的office应用套件,类似并兼容MS Office。包括了字处理、电子表格、演示文稿、公式编辑和绘图程序。字处理程序可以直接将文档转换为PDF格式。Perl——广受欢迎的解释性编程语言,适合于检索任意文本

软件综合开发案例教程——Linux、GCC、MySQL、Socket、Gtk+与开源案例Gnumeric 可 以 导 入 Excel 、 Applix 、 Sylk 、 XBase Quattro Pro 、 Dif 、 Plan Perfect 和 Oleo 文 件 。

GQview——是 一 个 图 像 浏 览 器 , 具 有 单 击 浏 览 、支 持 外 部 编 辑 器 、 缩 略 图 预 览 和 缩 放 的 功 能 。

HttpUnit—— 是 一 款 功 能 完 善 的 、 基 于 Java的 Web测试 工 具 , 能 模 拟 浏 览 器 的 动 作 , 如 提 交 表 单 、JavaScript 运 行 、 基 本 HTTP 认 证 、 cookies 建 立 以 及 自 动页 面 重 定 向 , 通 过 编 写 代 码 可 以 处 理 取 回 来 的文 本 、 XML DOM 或 表 单 、 表 、 链 接 。 当 与 JUnit 等框 架 结 合 时 , 就 能 非 常 容 易 地 进 行 一 个 网 站 的功 能 测 试 了 。 另 一 方 面 , 当 它 测 试 服 务 器 程 序时 , 可 以 不 用 启 动 相 关 的 Web服 务 器 。

K-3D ——是 一 个 三 维 建 模 、 动 画 和 渲 染 工 具 。它 可 以 创 建 和 编 辑 3D 几 何 图 形 ; 可 以 创 建 和 编辑 几 何 图 形 ( 多 个 实 时 OpenGL 实 体 、 阴 影 、 纹 理映 射 视 图 ) , 无 限 制 的 撤 销 还 原 与 重 做 ; 它 还有 着 很 高 的 可 扩 展 性 , 可 以 通 过 第 三 方 的 插 件增 强 功 能 ; 同 时 它 还 可 创 建 几 何 效 果 的 动 画 过程 , 基 于 控 制 样 条 接 口 的 全 参 数 可 控 动 画 等 。

Kaffeine —— 是 一 个 基 于 xine的 、 适 用 于 KDE 3桌 面的 媒 体 播 放 器 。 它 可 以 播 放 CD 、 VCD 、 DVD , 可以 解 码 多 种 文 件 , 如 avi 、 mov、 wmv 、 mp3, 无 论是 从 本 地 硬 盘 还 是 互 联 网 流 媒 体 。 Kaffeine 可 以 解读 最 常 见 的 多 媒 体 格 式 和 一 些 少 见 的 文 件 格 式 。

KDE—— 两 个 主 要 图 形 桌 面 环 境 之 一 。KHexEdit—— 通 用 可 定 制 的 十 六 进 制 编 辑 器 。 可

以 以 十 六 进 制 、 八 进 制 、 二 进 制 和 纯 文 本 形 式显 示 。 新 的 输 入 可 以 插 入 文 件 , 当 前 数 据 可 以被 替 代 , 就 像 使 用 平 常 的 编 辑 器 一 样 。 其 他 功能 包 括 , 撤 销 / 恢 复 、 格 式 化 打 印 和 HTML导 出 。

Konqueror —— 集 合 了 网 页 浏 览 、 文 件 管 理 和 通用 浏 览 , 包 含 在 KDE 中 。

LyX—— 据 称 是 第 一 个 WYSIWYM (What You See Is What You Mean , 所 见 即 所 得 ) 的 文 档 处 理 程 序 。 根 据 用 户需 要 , 它 自 动 检 查 一 致 性 来 生 成 专 业 结 果 。 LyX对 于 长 文 档 很 有 用 ( 比 如 书 和 论 文 ) , 另 外 它 基于 高 可 信 度 的 TeX排 版 引 擎 。

Midnight Commander—— 是 一 个 文 件 管 理 的 实 用 程 序 ,几 乎 和 DOS 下 的 Norton Commander 完 全 一 样 , 如 果 你 的

• 64 •

Page 65: 预备篇 · Web viewOpen Office ——成熟的office应用套件,类似并兼容MS Office。包括了字处理、电子表格、演示文稿、公式编辑和绘图程序。字处理程序可以直接将文档转换为PDF格式。Perl——广受欢迎的解释性编程语言,适合于检索任意文本

第 1章 Linux 基 础系 统 已 经 安 装 了 这 个 程 序 , 输 入 mc 就 可 以 启 动 ,启 动 以 后 在 屏 幕 的 低 端 显 示 热 键 表 。 注 意 , 显示 '1'实 际 热 键 是 “ F1” , 依 此 类 推 。 “ F9” 可 以 显示 菜 单 , 很 容 易 学 习 和 使 用 。

MySQL—— 最 流 行 的 开 源 关 系 数 据 库 管 理 系 统 。客 户 包 括 了 思 科 、 谷 歌 、 汉 莎 航 空 、 NASA、 Sabre控 股 、 加 州 伯 克 利 、 UPS物 流 、 雅 虎 。

ncftp—— 是 一 个 强 化 的 FTP程 序 , 支 持 文 件 的 批量 上 传 和 下 载 , 输 入 ncftp xxx.xxx.xxx.xxx 会 自 动 用 匿 名用 户 登 录 到 xxx.xxx.xxx.xxx , 它 的 命 令 支 持 通 配 符 ,如 get *.*、 get README.* 等 , 另 外 还 支 持 get -R 目 录 名 ,下 载 整 个 目 录 。 另 两 个 选 项 是 a 和 f , 是 将 下 载的 同 名 文 件 自 动 链 接 在 现 有 文 件 后 或 者 覆 盖 现有 文 件 。

Open Office ——成 熟 的 office 应 用 套 件 , 类 似 并 兼 容MS Office 。 包 括 了 字 处 理 、 电 子 表 格 、 演 示 文 稿 、公 式 编 辑 和 绘 图 程 序 。 字 处 理 程 序 可 以 直 接 将文 档 转 换 为 PDF格 式 。

Perl——广 受 欢 迎 的 解 释 性 编 程 语 言 , 适 合 于检 索 任 意 文 本 文 件 、 提 取 信 息 并 打 印 报 告 。 同样 也 适 用 于 许 多 系 统 管 理 任 务 。

PHP —— 服 务 器 端 脚 本 语 言 。pine —— 终 端 下 写 信 / 收 信 的 程 序 , 输 入 pine 启

动 。 执 行 时 出 现 菜 单 , 只 要 记 住 , > 是 下 一 级菜 单 , < 是 上 一 级 菜 单 。 通 常 可 以 用 上 下 光 标键 移 动 光 标 , 注 意 看 看 底 部 的 提 示 行 , 应 该 很容 易 学 会 。

Planner ——是 一 款 项 目 管 理 工 具 。 使 用 上 几 乎和 Microsoft Projects一 样 。 主 要 功 能 包 括 甘 特 图 、 任 务分 配 、 资 源 使 用 、 管 理 日 历 、 编 辑 日 类 型 、 编辑 项 目 阶 段 、 编 辑 项 目 属 性 、 写 入 数 据 库 等 ,并 能 以 多 种 格 式 (ps 、 pdf 、 html、 planner) 保 存 。

PostgreSQL—— 是 一 个 先 进 的 关 系 数 据 库 管 理 系统 , 始 于 1986 年 的 加 州 伯 克 利 。

Python —— 是 一 个 解 释 性 、 交 互 式 、 面 向 对 象的 编 程 语 言 , 经 常 拿 来 同 Tcl 、 Perl 、 Scheme 、 或 Java对 比 。 有 模 块 、 类 、 异 常 、 高 动 态 数 据 类 型 和动 态 键 入 。

Raw Therapee ——是 用 C++编 写 的 、 使 用 Gtk+ 作 为 前

• 65 •

Page 66: 预备篇 · Web viewOpen Office ——成熟的office应用套件,类似并兼容MS Office。包括了字处理、电子表格、演示文稿、公式编辑和绘图程序。字处理程序可以直接将文档转换为PDF格式。Perl——广受欢迎的解释性编程语言,适合于检索任意文本

软件综合开发案例教程——Linux、GCC、MySQL、Socket、Gtk+与开源案例端 的 、 使 用 dcraw 读 取 RAW 格 式 文 件 的 一 个 工 具 。它 之 所 以 引 人 注 目 , 是 因 为 它 是 Linux 平 台 上 最早 的 RAW 转 换 器 之 一 。

rCalc ——GNOME 的 科 学 计 算 器 。Rosegarden —— 以 五 线 谱 的 方 式 制 作 和 编 辑 MIDI 音

乐 的 工 具 , 由 于 乐 谱 编 辑 和 一 般 目 的 的 音 乐 合成 编 辑 环 境 。

Samba —— 适 合 于 包 含 ms 系 统 的 文 件 和 打 印 机共 享 服 务 器 程 序 。 运 行 在 UNIX-like 系 统 上 , 具 有高 可 靠 性 , 更 少 的 故 障 和 更 小 的 维 护 成 本 。

SQL Ledger ——先 进 的 可 自 定 义 复 式 会 计 系 统 。Tcl ——旨 在 建 立 强 大 GUI的 脚 本 语 言 , 可 建 立

多 线 程 、 跨 平 台 的 程 序 。 它 具 有 快 速 的 开 发 周期 , 易 读 易 学 。

Thunderbird —— 是 一 个 高 可 定 制 的 邮 件 程 序 , 安全 、 高 速 、 易 用 。

Umbrello —— 是 一 款 基 于 KDE 的 UML 建 模 工 具 。 有点 类 似 于 StarUML , 支 持 以 下 图 表 : Class Diagram 、 Sequence Diagram 、 Collaboration Diagram 、 Use Case Diagram 、 State Diagram 、 Activity Diagram 、 Component Diagram 、 Deployment Diagram 。

WINE —— 还 未 完 成 、 但 功 能 强 大 的 MS API 的 开源 实 现 。 允 许 许 多 Windows 二 进 制 程 序 不 经 修 改就 可 运 行 于 UNIX-Like操 作 系 统 。 它 不 需 要 Windows ,但 是 可 能 需 要 本 地 系 统 的 DLL 文 件 。

Xara LX —— 是 一 款 矢 量 绘 图 软 件 , 与 CorelDraw 较为 相 似 。 它 是 Xara Xtreme 的 Linux 版 本 , 所 以 只 支 持UNIX 平 台 , 包 括 Linux 、 FreeBSD和 ( 开 发 中 的 )OS-X。

Xfig —— 交 互 式 绘 图 工 具 , 可 以 创 建 圆 、 样 条曲 线 等 , 并 可 以 GIP 、 JPEG 和 EPSF 格 式 导 出 。

Xpad ——用 Gtk+2.0 写 的 随 意 贴 小 程 序 , 简 单 、 容错 、 可 定 制 , 包 括 多 个 独 立 的 写 字 板 窗 口 。

Xpdf ——PDF 查 看 器 。 Xpdf 项 目 包 括 了 PDF文 档 提取 器 、 PDF-PostScript 转 换 器 以 及 其 他 工 具 。 Xpdf 轻 便 、小 巧 、 高 效 , 可 以 使 用 Type1 、 TrueType 或 标 准 X字体 。

Zope —— 主 要 用 Python写 的 Web应 用 服 务 器 , 具 有对 象 处 理 数 据 库 , 不 仅 可 以 存 储 内 容 和 自 定 义数 据 , 还 可 以 存 储 HTML模 版 、 脚 本 、 搜 索 引 擎 、

• 66 •

Page 67: 预备篇 · Web viewOpen Office ——成熟的office应用套件,类似并兼容MS Office。包括了字处理、电子表格、演示文稿、公式编辑和绘图程序。字处理程序可以直接将文档转换为PDF格式。Perl——广受欢迎的解释性编程语言,适合于检索任意文本

第 1章 Linux 基 础关 系 数 据 库 连 接 及 代 码 。 Zope 具 有 强 大 的 Web开发 模 型 、 高 安 全 性 及 数 个 插 件 模 块 。

下 面 我 们 详 细 地 介 绍 两 个 工 具 : wget 和 rpm 。1) wget

这 个 是 类 似 于 teleport 的 程 序 , 用 来 下 载 整 个网 站 或 者 ftp 服 务 器 的 整 个 目 录 , 而 且 支 持 自 动重 新 连 接 和 断 点 续 传 。 典 型 的 用 法 是 :

wget -b -m -t0 -T120 -c -l5 http://somewhere.edu.cn

这 个 命 令 执 行 后 , wget 将 自 动 去 下 载somewhere.edu.cn的 内 容 , 并 且 存 放 在 硬 盘 的 somewhere.edu.cn目 录 下 , 相 应 的 参 数 意 思 是 这 样 :

-m 建 立 镜 像 , 表 示 两 个 性 质 : (-m = -r -N)(a) 自 动 下 载 主 页 上 关 联 的 html文 件 , 如 果 是

FTP站 点 , 就 自 动 下 载 远 程 目 录 以 及 所 有 的 子 目录 , 这 个 参 数 也 可 以 写 成 -r。

(b) 只 下 载 更 新 的 文 件 , 这 个 属 性 也 可 以 写成 -N 。

-c 断 点 续 传-t0 如 果 wget 中 途 断 线 , 那 么 过 一 段 时 间 后 自

动 重 新 连 接 , 这 样 反 复 实 验 , 直 到 成 功 。 这 个属 性 后 边 的 参 数 是 重 试 次 数 , 0 表 示 无 限 次 ,任 何 正 整 数 表 示 最 大 重 复 次 数 。

-T120 在 两 次 重 试 之 间 等 待 120 秒 。-l5 在 进 行 镜 像 时 , 相 关 的 Web文 件 最 多 递 归

到 5 层 , -l0 表 示 无 穷 递 归 ( 引 用 所 有 相 关 文 件 ) 。2) rpm

这 个 命 令 用 来 安 装 和 卸 载 软 件 包 。 例 如 :rpm -i 文 件 名 , 安 装 rpm 形 式 的 软 件 包 。rpm -q 包 的 名 称 , 查 询 软 件 包 是 否 已 经 安 装 ,

可 以 忽 略 版 本 号 。rpm -qlv 包 的 名 称 , 列 出 软 件 包 的 包 含 文 件 清

单 。rpm -e 包 的 名 称 , 拆 除 软 件 包 。rpm -U 包 的 名 称 , 升 级 软 件 包 。rpm -qlc 包 的 名 称 , 显 示 这 个 包 的 配 置 文 件 。

• 67 •

Page 68: 预备篇 · Web viewOpen Office ——成熟的office应用套件,类似并兼容MS Office。包括了字处理、电子表格、演示文稿、公式编辑和绘图程序。字处理程序可以直接将文档转换为PDF格式。Perl——广受欢迎的解释性编程语言,适合于检索任意文本

软件综合开发案例教程——Linux、GCC、MySQL、Socket、Gtk+与开源案例

1.5 shell 命 令shell是 用 户 和 Linux 操 作 系 统 之 间 的 接 口 。 Linux

中 有 多 种 shell, 其 中 默 认 使 用 的 是 Bash 。1.5.1 什 么 是 shell

Linux 系 统 的 shell作 为 操 作 系 统 的 外 壳 , 为 用 户提 供 使 用 操 作 系 统 的 接 口 。 它 是 命 令 语 言 、 命令 解 释 程 序 及 程 序 设 计 语 言 的 统 称 。

shell是 用 户 和 Linux 内 核 之 间 的 接 口 程 序 , 如 果把 Linux 内 核 想 象 成 一 个 球 体 的 中 心 , shell就 是 围绕 内 核 的 外 层 。 当 从 shell或 其 他 程 序 向 Linux 传 递命 令 时 , 内 核 会 作 出 相 应 的 反 应 。 替 我 们 工 作的 是 “ 硬 件 ” , 而 控 制 硬 件 的 是 “ 核 心 ” 。 用户 是 利 用 “ shell” 控 制 一 些 内 核 提 供 的 “ 工 具 ” ,来 控 制 硬 件 替 我 们 正 确 工 作 。 由 于 内 核 听 不 懂人 类 语 言 , 而 人 类 也 没 有 办 法 直 接 记 住 内 核 的语 言 , 所 以 两 者 的 沟 通 就 要 通 过 shell来 支 持 了 。

shell是 一 个 命 令 语 言 解 释 器 , 它 拥 有 自 己 内建 的 shell命 令 集 , shell也 能 被 系 统 中 其 他 应 用 程 序所 调 用 。 用 户 在 提 示 符 下 输 入 的 命 令 , 都 由 shell先 解 释 , 然 后 传 给 Linux 核 心 。 有 一 些 命 令 , 比如 改 变 工 作 目 录 命 令 cd, 是 包 含 在 shell内 部 的 。还 有 一 些 命 令 , 例 如 拷 贝 命 令 cp和 移 动 命 令rm , 是 存 在 于 文 件 系 统 中 某 个 目 录 下 的 单 独 程序 。 对 用 户 而 言 , 不 必 关 心 一 个 命 令 是 建 立 在shell内 部 , 还 是 一 个 单 独 的 程 序 。

shell首 先 检 查 命 令 是 否 是 内 部 命 令 , 若 不 是 ,再 检 查 是 否 是 一 个 应 用 程 序 ( 这 里 的 应 用 程 序可 以 是 Linux 本 身 的 实 用 程 序 , 如 ls和 rm , 也 可 以是 购 买 的 商 业 程 序 , 如 xv , 或 者 是 自 由 软 件 ,如 emacs)。 然 后 shell在 搜 索 路 径 里 寻 找 这 些 应 用 程序 。 如 果 键 入 的 命 令 不 是 一 个 内 部 命 令 , 并 且在 路 径 里 没 有 找 到 这 个 可 执 行 文 件 , 将 会 显 示一 条 出 错 信 息 。 如 果 能 够 成 功 找 到 命 令 , 该 内部 命 令 或 应 用 程 序 将 被 分 解 为 系 统 调 用 并 传 给Linux 内 核 。

• 68 •

Page 69: 预备篇 · Web viewOpen Office ——成熟的office应用套件,类似并兼容MS Office。包括了字处理、电子表格、演示文稿、公式编辑和绘图程序。字处理程序可以直接将文档转换为PDF格式。Perl——广受欢迎的解释性编程语言,适合于检索任意文本

第 1章 Linux 基 础shell的 另 一 个 重 要 特 性 是 , 它 自 身 就 是 一 个

解 释 型 的 程 序 设 计 语 言 , shell程 序 设 计 语 言 支 持绝 大 多 数 在 高 级 语 言 中 能 见 到 的 程 序 元 素 , 如函 数 、 变 量 、 数 组 和 程 序 控 制 结 构 。 shell编 程 语言 简 单 、 易 学 , 任 何 在 提 示 符 中 能 键 入 的 命 令都 能 放 到 一 个 可 执 行 的 shell程 序 中 。

当 普 通 用 户 成 功 登 录 后 , 系 统 将 执 行 一 个称 为 shell的 程 序 。 正 是 shell进 程 提 供 了 命 令 行 提 示符 。 作 为 默 认 值 (TurboLinux 系 统 默 认 的 shell是 BASH) ,对 普 通 用 户 用 “ $” 作 为 提 示 符 , 对 超 级 用 户(root) 用 “ #” 作 为 提 示 符 。

一 旦 出 现 了 shell提 示 符 , 就 可 以 键 入 命 令 名称 及 命 令 所 需 要 的 参 数 。 shell将 执 行 这 些 命 令 。如 果 一 条 命 令 花 费 了 很 长 时 间 运 行 , 或 者 在 屏幕 上 产 生 了 大 量 的 输 出 , 可 以 从 键 盘 上 按 Ctrl+c键 发 出 中 断 信 号 来 中 断 它 ( 在 正 常 结 束 之 前 ,中 止 它 的 执 行 ) 。

当 用 户 准 备 结 束 登 录 对 话 进 程 时 , 可 以 键入 logout 命 令 、 exit 命 令 或 文 件 结 束 符 (EOF)( 按 Ctrl+d键实 现 ) , 结 束 登 录 。1.5.2 shell的 种 类

Linux 中 的 shell有 多 种 类 型 , 其 中 最 常 用 的 几 种是 Bourne shell(sh)、 C shell(csh) 和 Korn shell(ksh) 。 三 种 shell各 有 其优 缺 点 。

Bourne shell 是 UNIX 最 初 使 用 的 shell, 并 且 在 每 种UNIX 上 都 可 以 使 用 。 Bourne shell 在 shell编 程 方 面 相 当优 秀 , 但 在 处 理 与 用 户 的 交 互 方 面 做 得 不 如 其他 几 种 shell。 Linux 操 作 系 统 默 认 的 shell是 Bourne Again shell, 它 是 Bourne shell 的 扩 展 , 简 称 Bash , 与 Bourne shell完 全 向 后 兼 容 , 并 且 在 Bourne shell 的 基 础 上 增 加 、增 强 了 很 多 特 性 。 Bash 放 在 /bin/bash中 , 它 有 许 多特 色 , 可 以 提 供 如 命 令 补 全 、 命 令 编 辑 和 命 令历 史 表 等 功 能 , 它 还 包 含 了 很 多 C shell和 Korn shell 中的 优 点 , 有 灵 活 和 强 大 的 编 程 接 口 , 同 时 又 有很 友 好 的 用 户 界 面 。

C shell是 一 种 比 Bourne shell 更 适 于 编 程 的 shell, 它 的语 法 与 C 语 言 很 相 似 。 Linux 为 喜 欢 使 用 C shell的 人

• 69 •

Page 70: 预备篇 · Web viewOpen Office ——成熟的office应用套件,类似并兼容MS Office。包括了字处理、电子表格、演示文稿、公式编辑和绘图程序。字处理程序可以直接将文档转换为PDF格式。Perl——广受欢迎的解释性编程语言,适合于检索任意文本

软件综合开发案例教程——Linux、GCC、MySQL、Socket、Gtk+与开源案例提 供 了 Tcsh 。 Tcsh 是 C shell的 一 个 扩 展 版 本 。 Tcsh 包括 命 令 行 编 辑 、 可 编 程 单 词 补 全 、 拼 写 校 正 、历 史 命 令 替 换 、 作 业 控 制 和 类 似 C 语 言 的 语 法 ,它 不 仅 和 Bash shell 同 样 是 提 示 符 兼 容 , 而 且 还 提供 比 Bash shell 更 多 的 提 示 符 参 数 。

Korn shell 集 合 了 C shell和 Bourne shell 的 优 点 , 并 且 和Bourne shell 完 全 兼 容 。 Linux 系 统 提 供 了 pdksh(ksh 的 扩展 ) , 它 支 持 任 务 控 制 , 可 以 在 命 令 行 上 挂 起 、后 台 执 行 、 唤 醒 或 终 止 程 序 。

Linux 并 没 有 冷 落 其 他 shell用 户 , 还 包 括 了 一 些流 行 的 shell, 如 ash 、 zsh 等 。 每 个 shell都 有 它 的 用 途 ,有 些 shell是 有 专 利 的 , 有 些 能 从 Internet 网 上 或 其 他来 源 获 得 。 要 决 定 使 用 哪 个 shell, 只 需 读 一 下 各种 shell的 联 机 帮 助 , 并 试 用 一 下 即 可 。

用 户 在 登 录 到 Linux 时 , 由 /etc/passwd文 件 来 决 定要 使 用 哪 个 shell。 Bash 是 Linux 上 默 认 的 shell, 是 GNU计 划 中 重 要 的 工 具 软 件 之 一 , 当 前 也 是 GNU 操作 系 统 中 标 准 的 shell, 它 主 要 兼 容 于 sh, 并 且 是根 据 一 些 用 户 的 需 求 而 加 强 的 shell版 本 。 因 此 ,本 节 后 面 部 分 主 要 介 绍 Bash 及 其 相 关 知 识 。

1.5.3 Bash shell的 功 能1) 命 令 记 忆 能 力只 要 在 命 令 行 按 “ 上 下 键 ” , 就 可 以 找 到

前 一 个 输 入 的 命 令 。 在 很 多 版 本 里 , 默 认 的 命令 记 忆 功 能 可 以 到 达 1000 个 , 曾 经 执 行 的 命 令被 记 录 在 .bash_history 中 。 不 过 , ~/.bash_history 记 录 的 是前 一 次 登 录 之 前 所 执 行 过 的 命 令 , 而 至 于 这 一次 登 录 所 执 行 的 命 令 都 被 暂 存 在 临 时 内 存 中 ,成 功 注 销 系 统 后 , 该 命 令 记 忆 才 会 记 录到 .bash_history 中 。

2) 命 令 与 文 件 补 全 功 能Tab 键 接 在 一 串 命 令 的 第 一 个 字 的 后 面 时 ,

为 命 令 补 全 ; Tab 键 接 在 一 串 命 令 的 第 二 个 字 以后 时 , 则 为 文 件 补 全 。 如 果 想 要 知 道 环 境 中 ,所 有 可 执 行 的 命 令 有 几 个 , 就 直 接 在 bash的 提 示符 后 输 入 两 个 Tab , 就 能 输 出 所 有 的 可 执 行 命 令

• 70 •

Page 71: 预备篇 · Web viewOpen Office ——成熟的office应用套件,类似并兼容MS Office。包括了字处理、电子表格、演示文稿、公式编辑和绘图程序。字处理程序可以直接将文档转换为PDF格式。Perl——广受欢迎的解释性编程语言,适合于检索任意文本

第 1章 Linux 基 础了 。 如 果 想 要 知 道 系 统 中 所 有 以 c 为 开 头 的 命令 , 则 按 下 c 、 Tab 、 Tab 键 即 可 。

3) 命 令 别 名 设 置 功 能可 以 通 过 设 置 别 名 来 使 用 自 定 义 的 命 令 替

换 现 有 命 令 。 在 命 令 行 输 入 alias, 就 可 以 知 道 当前 的 命 令 别 名 有 哪 些 。 也 可 以 直 接 执 行 命 令 来设 置 别 名 , 比 如 想 用 自 定 义 的 lm 替 换 ls –al , 可以 执 行 命 令 alias lm='ls -al' 。

4) 作 业 控 制 、 前 台 、 后 台 控 制使 用 前 、 后 台 的 控 制 , 可 以 让 工 作 进 行 得

更 为 顺 利 。 作 业 控 制 , 可 以 让 我 们 随 时 将 作 业放 到 后 台 中 执 行 , 不 用 怕 不 小 心 使 用 了 Ctrl+c 键停 掉 该 程 序 。 此 外 , 也 可 以 在 单 一 登 录 的 环 境中 , 达 到 多 任 务 的 目 的 。

5) shell 脚 本 的 强 大 功 能Linux 的 shell脚 本 功 能 很 强 大 , 可 以 将 日 常 生 活

中 常 需 要 下 达 的 连 续 命 令 写 成 一 个 文 件 , 该 文件 可 以 通 过 对 话 交 互 方 式 来 进 行 主 机 的 检 测 。也 可 以 通 过 shell提 供 的 环 境 变 量 及 相 关 命 令 来 进行 设 计 。 整 个 设 计 , 几 乎 就 是 编 写 一 个 小 型 的程 序 语 言 。 以 前 在 DOS 下 需 要 程 序 语 言 才 能 写的 东 西 , 在 Linux 中 使 用 简 单 的 shell脚 本 就 可 以 实现 。

6) 通 配 符除 了 完 整 的 字 符 串 之 外 , bash还 支 持 许 多 通

配 符 来 帮 助 用 户 查 询 与 执 行 命 令 , 加 快 用 户 的操 作 进 度 。1.5.4 执 行 命 令

命 令 格 式 : [root@linux ~]# command [-options] parameter1 parameter2 ...

说 明 :(a) 一 行 命 令 中 , 第 一 个 输 入 的 必 须 是 “ 命

令 ” 或 “ 可 执 行 文 件 ” 。

• 71 •

Page 72: 预备篇 · Web viewOpen Office ——成熟的office应用套件,类似并兼容MS Office。包括了字处理、电子表格、演示文稿、公式编辑和绘图程序。字处理程序可以直接将文档转换为PDF格式。Perl——广受欢迎的解释性编程语言,适合于检索任意文本

软件综合开发案例教程——Linux、GCC、MySQL、Socket、Gtk+与开源案例(b) command 为 命 令 的 名 称 , 例 如 改 变 路 径 的 命

令 为 cd。(c) 中 括 号 并 不 存 在 于 实 际 的 命 令 中 , 而 加

入 参 数 设 置 时 , 通 常 为 - 号 , 例 如 -h。 有 时 候 ,完 整 参 数 名 称 会 输 入 — 符 号 , 例 如 — help。

(d) parameter1 parameter2..为 跟 在 option 后 面 的 参 数 , 或 者是 command 的 参 数 。

(e) command,-option,parameter1.. 这 几 个 选 项 中 间 以 空 格 隔开 。 不 论 空 几 格 , shell都 视 为 一 个 。

(f) 按 下 Enter 键 后 , 该 命 令 就 立 即 执 行 。 Enter按 键 为 <CR> 字 符 , 它 表 示 开 始 执 行 一 行 命 令 。

(g) 命 令 太 长 时 , 可 以 用 “ \” 符 号 来 转 移“ Enter”符 号 , 使 命 令 连 续 到 下 一 行 。 注 意 , “ \”后 立 即 接 特 殊 字 符 。

(h) 在 Linux 系 统 中 , 英 文 大 小 写 字 母 是 不 一 样的 。

当 顺 利 地 在 终 端 上 登 录 后 , Linux 就 会 根 据 /etc/passwd 文 件 的 设 置 , 给 我 们 一 个 shell, 默 认 就 是bash, 然 后 就 可 以 根 据 上 面 的 命 令 执 行 方 式 来 操作 shell, 之 后 , 就 可 以 通 过 man在 线 查 询 来 查 询 命令 的 使 用 方 式 与 参 数 说 明 。1.5.5 历 史 命 令

bash具 有 历 史 命 令 的 功 能 。 使 用 history查 询 曾 经执 行 过 的 命 令 。

[root@linux ~]# history [n]

[root@linux ~]# history [-c]

[root@linux ~]# history [-raw] histfiles

参数:n : 数 字 , 意 思 是 “ 要 列 出 最 近 的 n 行 命

令 ” 。-c: 将 当 前 shell中 的 所 有 history内 容 全 部 清 除 。-a: 将 当 前 新 增 的 history命 令 加 入 histfiles 中 , 若

没 有 加 入 histfiles , 则 默 认 写 入 ~/.bash_history 。-r: 将 histfiles 的 内 容 读 到 当 前 shell的 历 史 记 忆 中 。-w : 将 当 前 的 历 史 记 忆 内 容 写 入 histfiles 中 。

• 72 •

Page 73: 预备篇 · Web viewOpen Office ——成熟的office应用套件,类似并兼容MS Office。包括了字处理、电子表格、演示文稿、公式编辑和绘图程序。字处理程序可以直接将文档转换为PDF格式。Perl——广受欢迎的解释性编程语言,适合于检索任意文本

第 1章 Linux 基 础正 常 情 况 下 , 以 bash登 录 Linux 主 机 后 , 系 统 会

主 动 由 主 目 录 的 ~/.bash_history 读 取 以 前 曾 经 执 行 的命 令 。 ~/.bash_history 所 记 录 的 数 据 数 目 与 bash的 HISTSIZE变 量 设 置 值 有 关 。 在 默 认 FC4中 , 可 记 录 1000 条命 令 。

不 仅 可 以 利 用 history 历 史 命 令 来 查 询 命 令 ,还 可 以 利 用 其 相 关 的 功 能 来 帮 助 我 们 执 行 命令 。

[root@linux ~]# !number

[root@linux ~]# ! command

[root@linux ~]# !!

参 数 :number : 执 行 第 几 条 命 令 的 意 思 。command : 向 前 搜 索 最 近 执 行 的 以 command 为 开

头 的 命 令 , 并 执 行 该 命 令 。!! : 执 行 上 一 个 命 令 ( 相 当 于 按 键 后 , 按

Enter 键 ) 。历 史 命 令 的 用 法 很 多 。 如 果 想 要 执 行 上 一

个 命 令 , 除 了 使 用 上 下 键 之 外 , 可 以 直 接 以“ !!” 来 执 行 , 也 可 以 直 接 选 择 执 行 第 n 个 命 令 ,也 就 是 使 用 “ !n” 来 执 行 , 还 可 以 用 命 令 标 头( 如 “ !vi”) 来 执 行 最 近 命 令 开 头 是 vi的 命 令 行 。相 当 方 便 好 用 , 但 要 注 意 安 全 问 题 。 无 论 如 何使 用 history配 合 “ !”来 执 行 曾 经 使 用 过 的 命 令 , 是很 有 效 率 的 。1.5.6 通 配 符 与 特 殊 符 号

bash支 持 一 些 通 配 符 ( 参 见 表 1-6), 利 用 这 些 通配 符 , 通 过 bash处 理 数 据 就 更 方 便 了 。

表1-6 通配符列表符 号

内 容* 通配符,代表0 个或多个字符 ( 或数字 )

? 通配符,代表“一定有”一个字母# 注释,常用在脚本中,视为说明\ 转义符号,将“特殊字符或通配符”还原成一般字符

• 73 •

Page 74: 预备篇 · Web viewOpen Office ——成熟的office应用套件,类似并兼容MS Office。包括了字处理、电子表格、演示文稿、公式编辑和绘图程序。字处理程序可以直接将文档转换为PDF格式。Perl——广受欢迎的解释性编程语言,适合于检索任意文本

软件综合开发案例教程——Linux、GCC、MySQL、Socket、Gtk+与开源案例| 分隔两个管道命令; 连续命令的分隔~ 用户的主目录$ 变量之前需要加的变量替换值& 将命令变成后台工作! 逻辑运算意义上的“非”的意思/ 路径分隔的符号> 、>> 输出导向,分别是“替换”与“累加”‘ 单引号,不具有变量置换的功能

( 续表 )

符 号

内 容“ 具有变量置换的功能`` 两个“ `”中间为可以先执行的命令() 中间为 shell 子命令的起始与结束[] 中间为字符的组合{} 中间为命令区块的组合组 合 按

键执 行 结 果

Ctrl+C 终止当前命令Ctrl+D 输入结束 (EOF)

Ctrl+M 就是 [Enter] 键Ctrl+S 暂停屏幕的输出Ctrl+Q 恢复屏幕的输出Ctrl+U 在提示符下,删除整行命令Ctrl+Z “ 暂停”当前的命令

下 面 是 几 个 简 单 的 例 子 : [root@linux ~]# ls test*

* 表 示 后 面 不 论 接 几 个 字 符 , 都 予 以 接 受 。 [root@linux ~]# ls test?

? 表 示 后 面 “ 一 定 ” 要 接 “ 一 个 ” 字 符 。 [root@linux ~]# ls test???

??? 表 示 后 面 “ 一 定 要 接 3 个 ” 字 符 。 [root@linux ~]# cp test[!1-5] /tmp

• 74 •

Page 75: 预备篇 · Web viewOpen Office ——成熟的office应用套件,类似并兼容MS Office。包括了字处理、电子表格、演示文稿、公式编辑和绘图程序。字处理程序可以直接将文档转换为PDF格式。Perl——广受欢迎的解释性编程语言,适合于检索任意文本

第 1章 Linux 基 础只 要 不 是 test1, test2, test3, test4, test5之 外 的 其 他

test?; 若 存 在 的 话 , 就 复 制 到 /tmp。 [root@linux ~]# cd /lib/modules/'uname -r' /kernel/drivers

被 '' 括 起 来 的 内 容 “ 会 先 执 行 ” 。1.5.7 数 据 流 定 向

数 据 流 定 向 , 由 字 面 意 思 来 看 , 就 是 将“ 数 据 传 到 其 他 地 方 ” 。 数 据 流 定 向 就 是 将 某个 命 令 执 行 后 应 该 出 现 在 屏 幕 上 的 数 据 , 传 输到 其 他 地 方 , 例 如 文 件 或 者 设 备 ( 如 打 印 机 ) 。这 在 Linux 的 文 字 模 式 下 很 重 要 , 尤 其 是 如 果 要将 某 些 数 据 存 储 下 来 时 尤 其 如 此 。

默 认 情 况 下 , 会 将 命 令 的 执 行 结 果 ( 标 准 输出 或 标 准 错 误 输 出 ) 都 输 出 到 屏 幕 上 。 将 它 们传 送 到 其 他 地 方 , 传 送 的 命 令 如 下 :

(a) 标 准 输 入 (stdin): 代 码 为 0 , 使 用 < 或 << 。(b) 标 准 输 出 (stdout) : 代 码 为 1 , 使 用 > 或 >> 。(c) 标 准 错 误 输 出 (stderr) : 代 码 为 2 , 使 用 2> 或

2>>。若 以 “ >” 输 出 到 一 个 已 有 的 文 件 中 , 这 个

文 件 就 会 被 覆 盖 。 如 果 要 将 数 据 累 加 , 不 删 除旧 的 数 据 , 则 可 以 使 用 “ >>”。 通 常 , 数 据 流 定向 命 令 的 执 行 方 式 参 见 表 1-7 :

表1-7 数据流定向命令执行方式列表

command

>

1>

2>

2>>

<

设备或文件

“>” 等 于 “ 1>” , 因 为 标 准 输 出 代 码 是 1 , 可 以省 略 。 1 与 > 之 间 并 没 有 空 格 , 是 紧 接 在 一 起 的 。

在 Linux 的 执 行 结 果 中 , 可 以 简 要 分 成 “ 正 确输 出 ” 与 “ 错 误 输 出 ” 两 种 数 据 。 执 行 某 些 命令 时 , 可 能 会 同 时 具 有 正 确 的 和 错 误 的 两 种 输

• 75 •

Page 76: 预备篇 · Web viewOpen Office ——成熟的office应用套件,类似并兼容MS Office。包括了字处理、电子表格、演示文稿、公式编辑和绘图程序。字处理程序可以直接将文档转换为PDF格式。Perl——广受欢迎的解释性编程语言,适合于检索任意文本

软件综合开发案例教程——Linux、GCC、MySQL、Socket、Gtk+与开源案例出 。 这 时 可 以 将 正 确 的 与 错 误 的 数 据 分 别 存 入不 同 的 文 件 中 。 “ >” 默 认 以 “ 1>” 来 执 行 , “ 1>”是 将 正 确 的 数 据 输 出 到 指 定 的 地 方 , “ 2>” 则 是将 错 误 数 据 输 出 到 指 定 的 地 方 。 例 如 将 下 面 这条 命 令 的 执 行 结 果 分 开 输 出 到 不 同 的 地 方 , 可以 这 样 写 :

[root@linux ~]$ find /home –name testing > list_right 2> list_error

这 样 , 出 错 信 息 就 会 到 list_error文 件 中 , 正 确的 输 出 数 据 就 会 存 到 list_right文 件 中 。

如 果 只 要 正 确 的 数 据 , 不 要 出 错 信 息 , 可以 用 /dev/null这 个 垃 圾 桶 将 出 错 信 息 丢 掉 。

[root@linux ~]$ find /home –name testing > list_right 2> /dev/null

如 果 要 将 数 据 都 写 到 同 一 个 文 件 中 , 需 要用 到 特 殊 写 法 :

[root@linux ~]$ find /home –name testing > list_right 2>&1

“<” 最 简 单 的 解 释 就 是 “ 将 原 本 需 要 由 键 盘输 入 的 数 据 , 通 过 文 件 来 读 入 ” 。 “ <<” 表 示“ 结 束 的 输 入 字 符 ” 。 利 用 “ <<”右 侧 的 控 制 符 ,可 以 终 止 一 次 输 入 , 而 不 必 输 入 Ctrl+d 键 来 结 束 。这 对 程 序 的 编 写 很 有 帮 助 。

为 什 么 要 使 用 命 令 输 出 定 向 呢 ? 下 面 是 一些 使 用 命 令 输 出 定 向 的 场 合 :

● 当 屏 幕 输 出 的 信 息 很 重 要 , 而 且 我 们需 要 将 它 存 下 来 的 时 候 。

● 后 台 执 行 的 程 序 , 不 希 望 它 干 扰 屏 幕正 常 的 输 出 结 构 。

● 一 些 系 统 的 例 行 命 令 ( 例 如 写 在 /etc/crontab中 的 文 件 ) 执 行 结 果 , 希 望 它 可 以 存 下 来 。

● 一 些 执 行 命 令 , 我 们 已 经 知 道 它 可 能的 出 错 消 息 , 所 以 想 以 “ 2>/dev/null” 将 它 丢 掉 。

● 错 误 数 据 与 正 确 数 据 需 要 分 别 输 出 。1.5.8 管 道 命 令

当 bash命 令 执 行 时 , 会 出 现 输 出 的 数 据 。 如果 数 据 必 须 经 过 几 道 手 续 之 后 才 能 得 到 所 想 要

• 76 •

Page 77: 预备篇 · Web viewOpen Office ——成熟的office应用套件,类似并兼容MS Office。包括了字处理、电子表格、演示文稿、公式编辑和绘图程序。字处理程序可以直接将文档转换为PDF格式。Perl——广受欢迎的解释性编程语言,适合于检索任意文本

第 1章 Linux 基 础的 格 式 , 这 就 涉 及 管 道 命 令 的 问 题 。 管 道 命 令使 用 “ |”这 个 分 隔 符 , 与 “ 连 续 执 行 命 令 ” 是不 一 样 的 。

管 道 命 令 “ |”仅 能 处 理 前 面 一 个 命 令 传 来 的正 确 信 息 , 也 就 是 标 准 输 出 的 信 息 , 对 于 标 准错 误 , 并 没 有 直 接 处 理 的 能 力 。 在 每 个 管 道 的前 后 都 是 “ 命 令 ” 。 后 一 个 命 令 的 输 入 是 前 一个 命 令 的 输 出 。 不 过 要 注 意 , 在 Linux 环 境 中 ,很 多 消 息 处 理 都 是 以 “ 行 ” 为 单 位 。

下 面 介 绍 一 些 基 本 的 管 道 命 令 。1. 选 取 命 令 : cut 、 grep

选 取 命 令 就 是 将 一 段 数 据 经 过 分 析 后 , 取出 我 们 想 要 的 部 分 , 或 者 是 , 通 过 分 析 关 键 词取 得 我 们 想 要 的 行 。 不 过 , 一 般 来 说 , 选 取 信息 通 常 是 针 对 “ 逐 行 ” 分 析 的 , 并 不 是 针 对 整个 信 息 分 析 的 。

1) cut

将 一 段 消 息 的 某 段 “ 切 ” 出 来 。 处 理 的 消息 是 以 “ 行 ” 为 单 位 。

[root@linux ~]# cut -d' 分隔符 ' -f fields

[root@linux ~]# cut -c 字符范围

参 数 :-d: 后 面 接 分 隔 符 。 与 -f一 起 使 用 。-f : 根 据 -d的 分 隔 符 将 一 段 消 息 分 成 数 段 ,

用 -f取 出 第 几 段 。-c: 以 字 符 为 单 位 取 出 固 定 的 字 符 范 围 。cut 主 要 的 用 途 在 于 , 将 “ 同 一 行 的 数 据 进

行 分 解 ” , 最 常 用 在 分 析 数 据 或 文 字 数 据 的 情况 。 这 是 因 为 有 时 我 们 会 以 某 些 字 符 当 作 分 隔符 , 然 后 将 数 据 加 以 切 割 , 以 取 得 所 需 要 的 数据 。 不 过 , cut 在 处 理 多 空 格 相 连 的 数 据 时 , 可能 会 比 较 吃 力 。

2) grep

cut 是 从 一 行 消 息 中 去 除 我 们 想 要 的 部 分 ;grep则 是 分 析 一 行 消 息 , 若 其 中 有 所 需 要 的 信 息 ,就 将 该 行 取 出 。

• 77 •

Page 78: 预备篇 · Web viewOpen Office ——成熟的office应用套件,类似并兼容MS Office。包括了字处理、电子表格、演示文稿、公式编辑和绘图程序。字处理程序可以直接将文档转换为PDF格式。Perl——广受欢迎的解释性编程语言,适合于检索任意文本

软件综合开发案例教程——Linux、GCC、MySQL、Socket、Gtk+与开源案例 [root@linux ~]# grep [-acinv] ' 搜索字符串 ' filename

参 数 :-a: 将 二 进 制 文 件 以 文 本 文 件 的 方 式 搜 索 数

据 。-c: 计 算 找 到 ‘ 搜 索 字 符 串 ’ 的 字 数 。-i : 忽 略 大 小 写 的 不 同 。-n: 顺 便 输 出 行 号 。-v: 反 向 选 择 , 即 显 示 出 没 有 ‘ 搜 索 字 符

串 ’ 内 容 的 那 一 行 。Grep 支 持 的 语 法 很 多 。 在 正 则 表 达 式 里 , 能

够 处 理 很 多 数 据 。 grep可 以 解 析 一 行 文 字 , 取 得关 键 词 , 若 该 行 存 在 关 键 词 , 就 会 整 行 列 出 来 。

2. 排 序 命 令 : sort、 wc 、 uniq

1) sort

由 于 常 常 需 要 比 较 一 些 信 息 , 所 以 sort 是 很常 用 的 命 令 。 sort 可 以 帮 我 们 排 序 , 而 且 可 以 根据 不 同 的 数 据 类 型 来 排 序 , 如 数 字 与 文 字 的 排序 就 不 一 样 。 此 外 , 排 序 的 字 符 与 语 系 的 编 码有 关 。

[root@linux ~]# sort [-fbMnrtuk] [file or stdin]

参 数 :-f: 忽 略 大 小 写 的 差 异 。-b: 忽 略 最 前 面 的 空 格 符 部 分 。-M : 以 月 份 的 名 称 来 排 序 。-n: 使 用 “ 纯 数 字 ” 进 行 排 序 ( 默 认 是 以 文

字 类 型 来 排 序 的 ) 。-r: 反 向 排 序 。-t : 分 隔 符 , 默 认 是 Tab 键 。-u: 相 同 的 数 据 中 , 仅 出 现 一 行 表 示 。-k: 按 那 个 字 段 来 进 行 排 序 。2) wc

计 算 输 出 消 息 的 整 体 数 据 , 是 相 当 有 用 的计 算 文 件 内 容 的 工 具 。

[root@linux ~]# wc [-lwm]

• 78 •

Page 79: 预备篇 · Web viewOpen Office ——成熟的office应用套件,类似并兼容MS Office。包括了字处理、电子表格、演示文稿、公式编辑和绘图程序。字处理程序可以直接将文档转换为PDF格式。Perl——广受欢迎的解释性编程语言,适合于检索任意文本

第 1章 Linux 基 础参 数 :-l : 仅 显 示 多 少 行 。-w : 仅 显 示 多 少 字 ( 英 文 单 词 ) 。-m : 多 少 字 符 。3) uniq

将 重 复 的 数 据 仅 显 示 一 次 。 [root@linux ~]# uniq [-ic]

参 数 :-i : 忽 略 大 小 写 。-c: 进 行 计 数 。3. 双 向 重 导 向 : tee

> 会 将 数 据 流 整 个 传 送 给 文 件 或 设 备 , 因 此除 非 去 读 取 文 件 或 设 备 , 否 则 就 无 法 继 续 利 用这 个 数 据 流 。 如 果 想 在 这 个 数 据 流 的 处 理 过 程中 , 将 某 段 消 息 存 下 来 , 利 用 tee 即 可 。 同 时 将数 据 流 分 送 到 文 件 和 屏 幕 。

[root@linux ~]# tee [-a] file

[root@linux ~]# cut -c 字符范围

参 数 :-a: 以 累 加 的 方 式 , 将 数 据 加 入 file 中 。4. 字 符 转 换 命 令 : tr 、 col 、 join 、 paste 、 expand

1) tr

删 除 一 段 消 息 中 的 文 字 , 或 者 是 进 行 文 字消 息 的 替 换 。

[root@linux ~]# tr [-ds] SET1 ...

参 数 :-d: 删 除 消 息 中 的 SET1 字 符 串 。-s: 替 换 重 复 的 字 符 。2) col

虽 然 col 有 特 殊 的 用 途 , 不 过 很 多 时 候 , 它可 以 用 来 将 Tab 键 替 换 成 空 格 键 。

[root@linux ~]# col [-x]

• 79 •

Page 80: 预备篇 · Web viewOpen Office ——成熟的office应用套件,类似并兼容MS Office。包括了字处理、电子表格、演示文稿、公式编辑和绘图程序。字处理程序可以直接将文档转换为PDF格式。Perl——广受欢迎的解释性编程语言,适合于检索任意文本

软件综合开发案例教程——Linux、GCC、MySQL、Socket、Gtk+与开源案例参 数 :-x: 将 Tab 键 转 换 成 对 等 的 空 格 键 。3) join

join 在 处 理 两 个 相 关 的 数 据 文 件 时 , 很 有 帮助 。 主 要 是 在 处 理 “ 两 个 文 件 中 , 有 相 同 数 据的 行 , 将 它 们 加 在 一 起 ” 。

[root@linux ~]# join [-ti12] file1 file2

参 数 :-t : join 默 认 以 空 格 符 分 隔 数 据 , 并 且 比 较

“ 第 一 个 字 段 ” 的 数 据 , 如 果 两 个 文 件 相 同 ,则 将 两 个 数 据 联 成 一 行 , 且 第 一 个 字 段 放 在 第一 个 。

-i : 忽 略 大 小 写 的 差 异 。-1: 数 字 1 , 表 示 “ 第 一 个 文 件 要 用 那 个 字

段 来 分 析 ” 。-2: 数 字 2 , 表 示 “ 第 二 个 文 件 要 用 那 个 字

段 来 分 析 ” 。4 ) paste

相 对 于 必 须 比 较 两 个 文 件 的 数 据 关 联 性 ,paste 就 直 接 “ 将 两 行 贴 在 一 起 , 且 中 间 以 Tab 键隔 开 ” 。

[root@linux ~]# paste [-d] file1 file2

参 数 :-d: 后 面 可 以 接 分 隔 符 。 默 认 以 Tab 键 分 隔 。- : 如 果 file 部 分 写 成 “ -”, 表 示 来 自 标 准 输

入 的 数 据 。5) expand

将 Tab 键 转 成 空 格 键 。 [root@linux ~]# expand [-t] file

参 数 :-t : 后 面 可 以 接 数 字 。 一 般 来 说 , 一 个 Tab 键

可 以 用 8 个 空 格 键 替 换 。 也 可 以 自 定 义 一 个 Tab键 表 示 多 少 个 字 符 。

• 80 •

Page 81: 预备篇 · Web viewOpen Office ——成熟的office应用套件,类似并兼容MS Office。包括了字处理、电子表格、演示文稿、公式编辑和绘图程序。字处理程序可以直接将文档转换为PDF格式。Perl——广受欢迎的解释性编程语言,适合于检索任意文本

第 1章 Linux 基 础5. 拆 分 命 令 : split

如 果 文 件 太 大 , 导 致 无 法 复 制 到 便 携 设 备中 , 可 以 使 用 split。 它 可 以 根 据 文 件 大 小 或 行 数将 一 个 大 文 件 拆 分 , 将 大 文 件 拆 分 为 小 文 件 快速 又 有 效 。

[root@linux ~]# split [-bl] file PREFIX

参 数 :-b: 后 接 要 拆 分 的 文 件 大 小 , 可 加 单 位 , 例

如 b 、 k 、 m等 。-l : 按 行 数 进 行 拆 分 。6. 参 数 代 换 : xargs

xargs 是 产 生 某 个 命 令 的 参 数 。 xargs 可 以 读 入stdin 的 数 据 , 并 且 以 空 格 符 或 换 行 符 作 为 标 识 ,将 stdin 的 数 据 分 隔 成 为 参 数 。 因 为 是 以 空 格 符作 为 分 隔 , 所 以 , 如 果 有 一 些 文 件 名 或 其 他 意义 的 名 词 内 含 有 空 格 符 的 时 候 , xargs 可 能 就 会误 判 了 。

[root@linux ~]# xargs [-Oepn] command

参 数 :-O : 如 果 输 入 的 stdin 含 有 特 殊 字 符 , 例 如

“ `”、 “ \”、 空 格 键 等 特 殊 字 符 , 这 个 “ -O” 参 数可 以 还 原 成 一 般 字 符 , 这 个 参 数 可 以 用 于 特 殊状 态 。

-e: 这 个 是 EOF的 意 思 。 后 面 可 以 接 一 个 字 符串 , 当 xargs 分 析 到 这 个 字 符 串 时 , 就 会 停 止 继续 工 作 。

-p: 在 执 行 每 个 命 令 的 参 数 时 , 都 会 询 问 用户 的 意 思 。

-n: 后 面 接 次 数 , 每 次 command 命 令 执 行 时 ,要 使 用 几 个 参 数 。

当 xargs 后 面 没 有 接 任 何 命 令 时 , 默 认 是 以 echo进 行 输 出 。

7. 减 号 (-)

在 管 道 命 令 中 , 常 常 会 用 到 前 一 个 命 令 的stdout 作 为 这 次 的 stdin , 某 些 命 令 需 要 用 到 文 件 名

• 81 •

Page 82: 预备篇 · Web viewOpen Office ——成熟的office应用套件,类似并兼容MS Office。包括了字处理、电子表格、演示文稿、公式编辑和绘图程序。字处理程序可以直接将文档转换为PDF格式。Perl——广受欢迎的解释性编程语言,适合于检索任意文本

软件综合开发案例教程——Linux、GCC、MySQL、Socket、Gtk+与开源案例称 来 进 行 处 理 时 , stdin 与 stdout 可 以 利 用 “ -”来 替换 。 例 如 :

[root@linux ~]# tar –cvf - /home | tar –xvf -

上 面 这 个 例 子 是 说 : “ 将 /home 里 面 的 文 件 打包 , 但 打 包 的 数 据 不 是 记 录 到 文 件 , 而 是 传 送到 stdout ; 经 过 管 道 后 , 将 tar –cvf -/home 传 递 给 后 面 的tar –xvf -” 。 后 面 的 这 个 - 则 是 去 用 前 一 个 命 令 的stdout , 因 此 , 就 不 需 要 使 用 file 了 。

1.6 X Window 系统在 类 UNIX 的 系 统 中 , 可 以 用 鼠 标 与 键 盘 来 进

行 图 形 化 界 面 的 操 作 , 那 就 是 图 形 用 户 界 面(Graphical User Interface , GUI) 。 这 个 图 形 界 面 称 为 X Window系 统 。

X Window 是 UNIX/Linux 下 的 图 形 服 务 器 , 和 Windows概 念 不 同 。 它 不 是 UNIX/Linux 固 有 的 部 分 , 独 立 于操 作 系 统 , 属 于 上 层 API , 所 有 UNIX/Linux 下 图 形 的显 示 由 它 控 制 。

X Window 采 用 C/S 结 构 设 计 并 开 发 , 服 务 器 端 是X服 务 器 , 客 户 端 就 是 我 们 在 X下 用 的 应 用 程 序 。

X Window 设 计 非 常 巧 妙 , 很 多 时 候 它 在 概 念 上比 其 他 窗 口 系 统 先 进 , 以 至 于 经 过 很 多 年 , 它仍 然 是 工 作 站 上 的 行 业 标 准 。 许 多 其 他 窗 口 系统 的 概 念 都 是 从 X Window 借 鉴 来 的 。1.6.1 何 时 用 X Window 系 统

一 般 来 说 , 如 果 Linux 主 机 定 位 为 网 络 服 务 器 ,那 么 由 于 Linux 里 面 主 要 服 务 的 设 置 文 件 都 是 ASCII纯 文 本 格 式 的 文 件 , 设 置 相 当 容 易 , 所 以 不 需要 X Window , 因 为 X Window 仅 是 Linux 系 统 内 的 一 个 软件 而 已 。

如 果 Linux 主 机 作 为 桌 面 型 计 算 机 , 那 么 X Window 就 相 当 重 要 了 , 因 为 我 们 日 常 使 用 的 办 公软 件 都 需 要 使 用 X Window 的 图 形 功 能 。 除 了 主 机的 用 途 决 定 是 否 需 要 启 用 X Window 之 外 , 主 机 配

• 82 •

Page 83: 预备篇 · Web viewOpen Office ——成熟的office应用套件,类似并兼容MS Office。包括了字处理、电子表格、演示文稿、公式编辑和绘图程序。字处理程序可以直接将文档转换为PDF格式。Perl——广受欢迎的解释性编程语言,适合于检索任意文本

第 1章 Linux 基 础置 也 是 必 须 考 虑 的 决 定 因 素 。 因 为 如 果 要 X Window 美 观 , 则 需 要 功 能 较 为 强 大 的 KDE 或 GNOME等 窗 口 管 理 器 的 协 助 , 但 它 们 对 系 统 的 要 求 很高 , 除 了 对 CPU 等 级 、 RAM 的 高 要 求 之 外 , 显 卡的 等 级 也 不 能 太 差 。 所 以 , 早 期 的 主 机 使 用 X Window 时 效 率 就 很 低 。

也 就 是 说 , 如 果 想 要 使 用 X Window , 需 要 特 别考 虑 以 下 两 点 :

● 稳 定 性 : X Window 仅 是 Linux 上 的 一 个 服 务 ,不 能 对 X Window 与 Linux 的 整 合 有 太 高 的 期 望 ,虽 然 当 前 X Window 已 经 整 合 得 相 当 好 了 。 因此 , 在 Linux 服 务 器 上 启 用 X系 统 的 话 , 就 多启 用 了 一 个 服 务 , 这 样 会 产 生 一 些 不 确 定因 素 , 因 此 , 建 议 不 要 对 Internet 开 放 的 服 务器 启 动 X Window 。

● 性 能 : 无 论 怎 么 说 , 程 序 的 运 行 总 是需 要 系 统 资 源 的 , 所 以 , 多 启 用 了 X就 会造 成 一 些 系 统 资 源 的 损 耗 。 某 些 X软 件 相当 耗 费 系 统 资 源 , 所 以 , 启 动 X就 可 能 造成 系 统 性 能 降 低 。由 于 X Window 必 须 以 UNIX 系 统 作 为 基 础 , 因 此 X

Window 注 定 只 能 成 为 UNIX 上 的 一 个 应 用 , 而 不 可能 与 操 作 系 统 内 核 高 度 整 合 , 这 就 使 得 基 于 X Window 的 图 形 环 境 不 可 能 有 很 高 的 运 行 效 率 , 但它 的 优 点 在 于 拥 有 很 强 的 设 计 灵 活 性 和 可 移 植性 。1.6.2 X Window的 发 展 历 史

X Window 最 早 是 由 MIT在 1984 年 开 发 的 , 他 们 称之 为 X。 经 过 数 年 的 发 展 , 1987 年 推 出 X11这 个 优秀 的 版 本 , 几 经 改 进 , 又 推 出 了 X11R6(X11 版 本 的第 6 次 发 布 ) 版 本 。 当 前 我 们 看 到 的 各 大 Linux 版本 均 是 使 用 X11R6 版 本 。

X11发 展 了 一 段 时 间 后 , 社 区 发 起 了 一 个 XFree 86 计 划 , 持 续 维 护 X11R6 的 功 能 , 包 括 对 新 硬 件的 支 持 以 及 更 多 新 增 的 功 能 等 。 早 期 Linux 所 用的 X Window 的 主 要 核 心 都 是 由 XFree 86计 划 提 供 的 ,因 此 , 我 们 常 常 将 X 服 务 器 与 XFree 86视 为 等 同 。

• 83 •

Page 84: 预备篇 · Web viewOpen Office ——成熟的office应用套件,类似并兼容MS Office。包括了字处理、电子表格、演示文稿、公式编辑和绘图程序。字处理程序可以直接将文档转换为PDF格式。Perl——广受欢迎的解释性编程语言,适合于检索任意文本

软件综合开发案例教程——Linux、GCC、MySQL、Socket、Gtk+与开源案例XFree 86针 对 X11R6 也 在 持 续 改 进 。

除 了 Xfree 86 计 划 之 外 , 2004 年 成 立 了 另 一 个 维护 X系 统 架 构 的 计 划 Xorg , Xorg 由 多 个 组 织 共 同发 起 , 主 要 目 的 是 希 望 可 以 持 续 维 护 X11R6 , 让X Window 系 统 能 提 高 工 程 效 率 , 同 时 , Xorg 也 是 自由 软 件 。

截 至 2009 年 10 月 , 已 推 出 X11R7.5; 预 计 2010 年10 月 , 将 推 出 X11R7.6。1.6.3 X 服 务 器 /X 客 户 端 / 窗 口 管 理 器

X Window 并 不 是 一 个 直 接 的 图 形 操 作 环 境 , 也不 是 特 指 某 一 个 具 体 软 件 , 而 是 作 为 图 形 环 境与 UNIX 系 统 内 核 沟 通 的 中 间 桥 梁 , 任 何 厂 商 都可 以 在 X Window 基 础 上 开 发 出 不 同 的 GUI图 形 环 境 。换 句 话 说 , X Window 只 是 一 种 控 制 用 户 怎 样 使 用图 形 界 面 的 协 议 簇 。 它 规 定 了 一 个 满 足 这 种 协议 的 产 品 应 该 具 有 什 么 样 的 功 能 。 任 何 软 件 系统 只 要 能 满 足 这 些 协 议 及 X协 会 的 其 他 相 关 规范 , 都 可 以 被 称 为 X视 窗 系 统 , 而 无 须 理 会 其编 码 是 如 何 具 体 实 现 的 。

许 多 UNIX 厂 商 也 在 X Window 原 型 上 开 发 适 合 自己 的 UNIX GUI视 窗 环 境 , 其 中 比 较 著 名 的 有 SUN 与AT&T 联 手 开 发 的 “ Open Look” 、 IBM主 导 下 的 OSF(Open Software Foundation , 开 放 软 件 基 金 会 ) 开 发 出 的“ Motif”。 而 一 些 爱 好 者 则 成 立 了 非 营 利 的 XFree 86组 织 , 致 力 于 在 X86系 统 上 开 发 X Window 。 这 套 免费 且 功 能 完 整 的 X Window , 很 快 就 进 入 了 商 用 UNIX系 统 中 , 且 被 移 植 到 多 种 硬 件 平 台 上 , 后 来 的Linux 也 直 接 从 该 项 目 中 获 益 。 当 然 , 这 些 早 期的 X Window 环 境 都 设 计 得 很 简 单 , 许 多 GUI元 素 模仿 于 微 软 的 Windows , 但 X Window 拥 有 一 个 小 小 的 创新 : 当 鼠 标 指 针 移 动 到 某 个 窗 口 时 , 该 窗 口 会被 自 动 激 活 , 用 户 无 需 单 击 便 能 够 直 接 输 入 ,简 化 了 用 户 操 作 。

目 前 , 实 现 X协 议 簇 的 软 件 有 很 多 , 有 商 业软 件 , 也 有 免 费 自 由 软 件 。 在 LINUX 的 许 多 发 布版 中 主 要 采 用 Xfree 86 , 使 用 较 多 的 版 本 是 3.3.2 ;除 此 以 外 , 也 有 许 多 人 喜 欢 使 用 Accelerated X , 但

• 84 •

Page 85: 预备篇 · Web viewOpen Office ——成熟的office应用套件,类似并兼容MS Office。包括了字处理、电子表格、演示文稿、公式编辑和绘图程序。字处理程序可以直接将文档转换为PDF格式。Perl——广受欢迎的解释性编程语言,适合于检索任意文本

第 1章 Linux 基 础这 是 一 套 商 业 软 件 , 目 前 使 用 较 多 的 版 本 是4.1 。 另 外 在 Win 95 和 NT 下 也 有 一 些 X软 件 , 例 如MIX 95 , 等 等 。

无 论 是 哪 一 种 X软 件 体 系 , 一 般 由 两 大 部 分构 成 : 即 X 服 务 器 (X server) 和 X 应 用 程 序 (X application)。 X服 务 器 是 X系 统 的 心 脏 。 它 直 接 控 制系 统 内 的 显 示 设 备 , 负 责 生 成 、 删 除 视 窗 , 可以 控 制 键 盘 、 鼠 标 器 以 接 受 输 入 , 能 按 照 X应用 软 件 的 要 求 在 视 窗 中 做 出 写 、 画 的 动 作 。 总之 , X服 务 器 是 X应 用 程 序 的 基 础 , 只 有 先 运 行X服 务 器 , 才 能 运 行 X应 用 程 序 。 和 MS Windows一 个很 大 的 差 异 是 , X服 务 器 和 X客 户 端 可 以 运 行 在不 同 的 机 器 上 , 通 过 TCP/IP 协 议 互 相 连 接 起 来 。

X Window 系 统 的 突 出 之 处 在 于 , 它 有 相 当 优 秀的 X服 务 器 /X 客 户 端 设 计 系 统 。 X在 设 计 的 时 候 ,希 望 可 以 实 现 多 人 联 机 进 入 主 机 利 用 图 形 界 面的 功 能 , 于 是 它 便 开 发 出 这 样 的 一 个 主 从 结 构用 户 利 用 这 个 主 从 架 构 , 可 以 在 任 何 一 台 计 算机 以 网 络 方 式 联 机 到 主 机 操 作 图 形 界 面 。 不 过X服 务 器 与 X客 户 端 的 意 义 , 与 网 络 上 的 服 务 器/ 客 户 端 的 意 义 不 同 。

1. X服 务 器 : 主 要 负 责 屏 幕 画 面 的 绘 制 与 显示

X服 务 器 的 主 要 功 能 , 就 是 在 管 理 X服 务 器所 在 主 机 上 关 于 显 示 的 硬 件 设 备 , 例 如 显 卡 、显 示 器 分 辨 率 、 键 盘 和 鼠 标 等 。 在 启 动 的 时 候Linux 系 统 通 过 /etc/sysconfig目 录 下 的 keyboard/mouse等 文 件 ,已 经 设 置 好 了 显 卡 、 显 示 器 以 及 键 盘 鼠 标 。 但是 , X Window 有 自 己 的 设 置 文 件 , 必 须 针 对 它 的设 置 文 件 进 行 设 置 。 也 就 是 说 , Linux 的 设 置 与 X服 务 器 的 设 置 不 一 定 相 同 。 因 此 , 在 Linux 运 行等 级 3 上 使 用 图 形 界 面 时 , 就 要 加 载 X Window 需 要的 驱 动 程 序 。

X服 务 器 还 有 一 项 重 要 工 作 , 就 是 将 来 自 输入 设 备 ( 如 键 盘 、 鼠 标 等 ) 的 操 作 告 诉 X客 户 端 。X服 务 器 管 理 外 部 硬 件 , 所 以 , 硬 件 的 操 作 由 X服 务 器 来 管 理 , 但 X服 务 器 本 身 并 不 知 道 接 口设 备 的 这 些 操 作 会 造 成 什 么 显 示 效 果 , 因 此 X

• 85 •

Page 86: 预备篇 · Web viewOpen Office ——成熟的office应用套件,类似并兼容MS Office。包括了字处理、电子表格、演示文稿、公式编辑和绘图程序。字处理程序可以直接将文档转换为PDF格式。Perl——广受欢迎的解释性编程语言,适合于检索任意文本

软件综合开发案例教程——Linux、GCC、MySQL、Socket、Gtk+与开源案例服 务 器 会 将 接 口 设 备 的 操 作 行 为 告 诉 X客 户 端 ,让 X客 户 端 去 处 理 。

2. X客 户 端 : 主 要 负 责 “ 事 件 ” 的 处 理X服 务 器 主 要 是 管 理 显 示 界 面 与 在 屏 幕 上 绘

图 , 同 时 将 输 入 设 备 的 行 为 告 诉 X客 户 端 , 此时 X客 户 端 就 会 根 据 这 个 输 入 设 备 的 行 为 开 始处 理 。 当 X客 户 端 得 到 “ 这 个 输 入 设 备 的 行 为 ,产 生 某 个 图 标 ” 后 , 将 这 个 图 标 的 显 示 数 据 传给 X服 务 器 , X服 务 器 再 根 据 X客 户 端 传 来 的 绘图 数 据 , 在 自 己 的 屏 幕 上 绘 制 来 得 到 显 示 的 结果 。 也 就 是 说 , X客 户 端 最 重 要 的 工 作 就 是 处理 来 自 X服 务 器 的 操 作 , 将 该 操 作 处 理 成 为 绘图 数 据 , 再 将 这 些 绘 图 数 据 传 回 给 X服 务 器 。

举 个 例 子 来 说 , 当 我 们 在 X Window 的 画 面 中 ,将 鼠 标 向 右 移 动 时 , 它 是 怎 么 告 诉 X服 务 器 与 X客 户 端 的 呢 ? 首 先 , X服 务 器 会 检 测 到 鼠 标 的移 动 , 但 它 不 知 道 应 该 怎 么 绘 图 , 此 时 , 它 将鼠 标 的 这 个 动 作 告 诉 X客 户 端 , X客 户 端 就 会 去运 算 —— 结 果 是 要 将 鼠 标 指 针 向 右 移 动 几 个 像素 , 然 后 将 这 个 结 果 告 诉 X服 务 器 , 接 下 来 ,您 就 会 看 到 X服 务 器 将 鼠 标 指 针 向 右 移 动 。 这样 做 的 最 大 好 处 是 , X客 户 端 不 需 要 知 道 X服 务器 的 硬 件 配 置 与 操 作 系 统 。 因 为 X客 户 端 只 是在 处 理 绘 图 的 数 据 , 本 身 并 不 绘 图 , 所 以 , 对于 客 户 端 来 说 , 根 本 不 需 要 知 道 或 了 解 X服 务器 用 的 是 什 么 硬 件 、 什 么 操 作 系 统 。

在 Linux 上 的 X Window 系 统 中 , X服 务 器 与 X客 户端 在 同 一 台 Linux 上 。

窗 口 管 理 器 是 一 个 相 当 特 殊 的 X客 户 端 , 它可 以 提 供 更 多 的 功 能 , 包 括 如 下 一 些 :

● 提 供 许 多 控 制 元 素 , 包 括 工 作 区 、 背景 桌 面 的 设 置 等 ;

● 管 理 虚 拟 桌 面 ;● 提 供 窗 口 控 制 参 数 , 包 括 窗 口 大 小 、窗 口 重 叠 显 示 、 窗 口 移 动 、 窗 口 最 小 化 等 。

X客 户 端 的 主 要 工 作 是 将 来 自 X服 务 器 的 数据 处 理 成 为 绘 图 数 据 , 再 回 传 给 X服 务 器 , 所以 , X客 户 端 本 身 并 不 知 道 它 在 X服 务 器 中 的 位

• 86 •

Page 87: 预备篇 · Web viewOpen Office ——成熟的office应用套件,类似并兼容MS Office。包括了字处理、电子表格、演示文稿、公式编辑和绘图程序。字处理程序可以直接将文档转换为PDF格式。Perl——广受欢迎的解释性编程语言,适合于检索任意文本

第 1章 Linux 基 础置 、 大 小 以 及 其 他 相 关 信 息 。 窗 口 位 置 大 小 、重 叠 显 示 功 能 以 及 每 个 窗 口 的 标 题 等 , 其 实 就是 由 窗 口 管 理 器 所 提 供 的 。

X服 务 器 、 X客 户 端 、 窗 口 管 理 器 的 关 系 是怎 样 的 呢 ? 我 们 以 KDE 为 例 : 由 于 要 在 主 机 上启 动 X Window 系 统 , 因 此 , 主 机 上 必 须 有 X服 务 器核 心 , 这 样 才 能 提 供 屏 幕 的 绘 制 功 能 。 为 了 让窗 口 管 理 更 方 便 , 加 载 了 KDE 计 划 的 窗 口 管 理器 。 为 了 使 用 更 方 便 , 就 在 KDE 上 加 上 更 多 的应 用 软 件 , 包 括 输 入 法 等 , 最 后 就 建 立 了 X Window 系 统 。1.6.4 X Window 启 用 的 流 程

1. 开 始 的 检 测 界 面 : startx

X Window 系 统 其 实 就 是 “ X服 务 器 +X 客 户 端 ” 。为 了 让 窗 口 管 理 更 方 便 , 只 需 在 X客 户 端 加 载窗 口 管 理 器 。 不 过 , 为 了 加 载 这 些 数 据 , 就 必须 读 取 设 置 文 件 。 在 Linux 中 , 每 个 人 都 可 以 设置 属 于 自 己 的 环 境 , X Window 也 一 样 , 您 可 以 有自 己 专 属 的 X界 面 。 但 是 , 如 果 是 首 次 登 录 X,系 统 从 哪 里 给 您 这 个 X 默 认 画 面 呢 ?

事 实 上 , 输 入 startx 时 , 它 已 为 您 设 置 好 上 面这 些 内 容 。 startx 其 实 只 是 一 个 shell脚 本 , 它 比 较友 好 , 会 主 动 帮 用 户 建 立 起 X所 需 引 用 的 设 置文 件 。

startx 在 执 行 的 时 候 , 会 主 动 寻 找 用 户 主 目 录下 面 的 .xinitrc和 .xserverrc 这 两 个 文 件 (~/.xinitrc 是 X客 户 端的 设 置 数 据 文 件 ; ~/.xserverrc 是 X服 务 器 的 设 置 数据 文 件 ) 。 但 是 用 户 不 一 定 会 有 这 两 个 文 件 ,如 果 没 有 , 那 么 startx 就 会 主 动 以 系 统 默 认 的 设置 文 件 来 启 用 , 这 两 个 设 置 文 件 分 别 在 /etc/X11/xinit/xinitrc与 /etc/X11/xinit/xerverrc 中 。 不 论 是 自 己 的 ~/.xinitrc还是 系 统 的 xinitrc, 最 后 都 会 有 一 个 X客 户 端 与 一 个服 务 器 的 设 置 文 件 被 采 用 , 但 用 户 主 目 录 下 的xinitrc与 .xserverrc 具 有 优 先 权 。 在 获 取 这 两 个 文 件 之后 , 接 下 来 就 以 xinit程 序 来 执 行 X客 户 端 与 X服 务器 的 启 动 。

• 87 •

Page 88: 预备篇 · Web viewOpen Office ——成熟的office应用套件,类似并兼容MS Office。包括了字处理、电子表格、演示文稿、公式编辑和绘图程序。字处理程序可以直接将文档转换为PDF格式。Perl——广受欢迎的解释性编程语言,适合于检索任意文本

软件综合开发案例教程——Linux、GCC、MySQL、Socket、Gtk+与开源案例除 此 之 外 , startx 后 面 还 可 以 接 参 数 。 这 些 参

数 可 以 替 换 .xinitrc与 .xserverrc 的 设 置 。 [root@linux ~]# startx [X client option] -- [X server option]

比 如 , 要 想 让 X 颜 色 深 度 是 16 位 , 可 以 这 样做 :

[root@linux ~]# startx -- -depth 16

startx 的 参 数 以 两 个 减 号 “ --” 隔 开 , 前 面 的 是X客 户 端 的 设 置 , 后 面 的 是 X服 务 器 的 设 置 。 因为 颜 色 深 度 与 X 服 务 器 有 关 , 所 以 参 数 写 在“ --” 后 面 。 由 于 startx 的 参 数 可 以 替 换 默 认 值 ,因 此 可 以 使 用 16 位 颜 色 质 量 进 入 X。

2. 开 始 启 动 X的 xinit

事 实 上 , 实 际 启 动 X的 是 xinit程 序 , 它 的 语 法如 下 :

[root@linux ~]# xinit [client option] -- [server or display option]

通 过 startx 找 到 适 当 的 xinitrc 与 xserverrc后 , 就 交 给xinit来 执 行 。 在 默 认 的 情 况 下 , 输 入 startx , 就 等于 执 行 xinit /etc/X11/xinit/xinitrc -- /etc/X11/xinit/xserverrc 命 令 。

3. 启 动 X客 户 端 的 文 件 : xinitrc

假 设 当 前 目 录 并 没 有 ~/.xinitrc, 此 时 X客 户 端 会以 /etc/X11/xinit/xinitrc 作 为 启 动 X 客 户 端 的 默 认 脚 本 。xinitrc 文 件 会 引 入 很 多 其 他 文 件 参 数 , 包 括 /etc/X11/xinit/ xinitrc-common 、 /etc/X11/xinit/Xclientns 以 及 /etc/sysconfig/ desktop 。

xinitrc会 依 据 上 述 这 些 文 件 的 判 断 , 搜 索 出 要启 动 的 窗 口 管 理 器 是 哪 一 个 。 例 如 , xinitrc 文 件会 分 析 /etc/sysconfig/desktop 的 设 置 , 开 始 执 行 startkde 或gnome-session 这 两 个 窗 口 管 理 器 中 的 一 个 。 如 果 在 /etc/sysconfig/desktop 设 置 KDE , 那 么 默 认 就 会 以 KDE 来 启动 Window 。 在 X客 户 端 执 行 完 毕 后 , 就 是 X服 务 器的 进 程 了 。

xinitrc引 入 了 /etc/sysconfig/desktop 的 设 置 。 获 取 系 统 默认 的 窗 口 管 理 器 之 后 , 接 下 来 是 正 确 分 析 该 窗口 管 理 器 是 否 存 在 , 若 存 在 , 则 尝 试 启 动 , 若不 存 在 , 则 以 其 他 存 在 的 窗 口 管 理 器 来 尝 试 启

• 88 •

Page 89: 预备篇 · Web viewOpen Office ——成熟的office应用套件,类似并兼容MS Office。包括了字处理、电子表格、演示文稿、公式编辑和绘图程序。字处理程序可以直接将文档转换为PDF格式。Perl——广受欢迎的解释性编程语言,适合于检索任意文本

第 1章 Linux 基 础动 。 因 此 , 即 使 /etc/sysconfig/desktop 设 置 错 误 , 系 统 还是 会 以 默 认 的 可 能 存 在 的 窗 口 管 理 器 来 尝 试 启动 。

如 果 是 以 KDE 来 启 动 , 系 统 就 会 主 动 搜 索startkde 执 行 文 件 。 其 实 startkde 也 只 是 一 个 脚 本 , 它包 含 了 很 多 KDE 需 要 的 设 置 数 据 。

4. 启 动 X服 务 器 的 文 件 : xserverrc

如 果 查 看 /etc/X11/xinit目 录 , 会 发 现 根 本 就 没 有xdriverrc文 件 。 用 户 主 目 录 也 没 有 .xserverrc, 这 个 时 候系 统 会 怎 么 做 呢 ? 其 实 只 是 执 行 xinit的 时 候 , 系统 的 默 认 X客 户 端 与 X服 务 器 的 内 容 是 这 样 的 :

xinit xterm -geometry +1+1 -n login -display :0 -- x :0

xterm 是 X 窗 口 下 面 的 虚 拟 终 端 , 后 面 的 “ -display :0” 表 示 这 个 虚 拟 终 端 是 启 动 第 0 号 显 示 界 面 。我 们 启 动 的 X 服 务 器 程 序 就 是 X 。 X 就 是 Xorg 或XFree 86的 连 接 文 件 , 即 X服 务 器 的 主 程 序 。 所 以启 动 X很 简 单 , 直 接 执 行 X而 已 。 如 果 单 纯 以 上面 的 内 容 来 启 动 X Window 时 , 就 会 发 现 终 端 有 画面 了 , 只 是 不 好 看 , 因 为 我 们 还 没 有 启 动 窗 口管 理 器 。

在 启 动 X服 务 器 时 , 回 去 读 取 X服 务 器 的 设置 文 件 。 Xorg 使 用 /etc/X11/xorg.conf, 而 XFree 86则 是 使用 /etc/X11/XF86Config 设 置 文 件 。 X服 务 器 读 取 设 置 文件 , 如 果 一 切 正 常 , 就 会 在 终 端 顺 利 启 动 , 刚才 执 行 的 X客 户 端 就 会 将 绘 图 数 据 传 送 给 X服 务器 , 最 终 会 看 到 漂 亮 的 X。

如 果 xinitrc 设 置 文 件 里 面 启 动 了 很 多 X客 户 端 ,除 了 最 后 一 个 窗 口 管 理 器 或 X客 户 端 之 外 , 应该 都 放 到 后 台 去 执 行 。

通 过 startx 可 以 获 取 X客 户 端 与 X服 务 器 的 相 关设 置 数 据 , 即 xinitrc 与 xserverrc这 两 个 文 件 。 这 两 个文 件 可 以 让 xinit程 序 来 启 动 X Window : 通 过 xinitrc可 以设 置 需 要 启 动 的 窗 口 管 理 器 是 哪 一 个 ; 通 过xserverrc能 了 解 X服 务 器 使 用 的 是 哪 个 主 程 序 。 都启 用 后 , 就 可 以 得 到 X。 xinit的 更 多 用 法 可 以 参考 man xinit, X的 用 法 则 查 看 man X。

另 外 , X服 务 器 会 启 动 至 少 一 个 端 口 来 监 听

• 89 •

Page 90: 预备篇 · Web viewOpen Office ——成熟的office应用套件,类似并兼容MS Office。包括了字处理、电子表格、演示文稿、公式编辑和绘图程序。字处理程序可以直接将文档转换为PDF格式。Perl——广受欢迎的解释性编程语言,适合于检索任意文本

软件综合开发案例教程——Linux、GCC、MySQL、Socket、Gtk+与开源案例X客 户 端 的 要 求 , 就 是 默 认 的 端 口 6000 。 X其 实很 灵 活 , 可 以 拥 有 多 个 端 口 来 监 听 不 同 X客 户端 的 需 求 。 但 是 在 X Window 系 统 的 环 境 下 , 我 们称 端 口 6000 为 第 0 个 显 示 界 面 , 即 为hostname:0, hostname 通 常 可 以 不 写 , 所 以 就 成 了 :0即可 。

在 默 认 的 情 况 下 , 第 一 个 启 动 的 X是 在 终 端tty7 , 即 按 下 [Ctrl]+[Alt]+[F7] 键 时 的 画 面 。 而 启 动 的 第二 个 X则 默 认 在 终 端 tty8 , 即 按 下 [Ctrl]+[Alt]+[F8] 键 时的 画 面 。 因 为 主 机 上 的 X有 多 个 , 因 此 , 当 启动 X服 务 器 / 客 户 端 时 , 都 应 该 注 明 X服 务 器 / 客户 端 主 要 是 提 供 或 接 收 来 自 那 个 显 示 的 端 口 号如 果 在 :1 启 动 X, 就 是 端 口 6001 。

1.7 桌 面 环 境目 前 Linux 主 要 用 在 服 务 器 端 。 在 Internet 上 有 很

多 服 务 器 都 在 使 用 Linux 。 但 是 , 一 个 操 作 系 统要 想 得 到 普 及 , 并 占 据 一 定 的 市 场 份 额 , 必 须使 非 计 算 机 专 业 人 士 都 可 以 轻 松 掌 握 这 种 系 统Linux 作 为 一 种 类 UNIX 操 作 系 统 , 对 它 的 操 作 一 般都 是 通 过 复 杂 的 Shell 命 令 进 行 的 。 因 而 , 应 该有 一 种 简 便 易 学 的 图 形 用 户 界 面 (Graphics User Interface , GUI) , 使 用 户 使 用 鼠 标 就 可 以 完 成 大 多数 工 作 。

在 Linux 中 , GUI由 以 下 几 个 部 分 组 成 :● 窗 口 系 统 : 组 织 显 示 屏 上 的 图 形 输 出 ,并 执 行 基 本 的 文 本 和 绘 图 功 能 。

● 窗 口 管 理 器 : 负 责 对 窗 口 的 操 作 ( 比 如最 小 化 、 最 大 化 、 关 闭 按 钮 的 形 状 , 窗 口边 框 外 观 等 ) 以 及 输 入 焦 点 的 管 理 。

● 工 具 包 : 带 有 明 确 定 义 的 编 程 界 面 的常 规 库 。

● 风 格 : 指 定 应 用 程 序 的 用 户 界 面 外 观和 行 为 。

X服 务 器 程 序 提 供 了 建 立 和 运 行 GUI的 引 擎 ;窗 口 管 理 器 程 序 提 供 了 管 理 窗 口 本 身 ( 比 如 标题 栏 和 滚 动 栏 ) 的 环 境 , 桌 面 环 境 提 供 了 一 系

• 90 •

Page 91: 预备篇 · Web viewOpen Office ——成熟的office应用套件,类似并兼容MS Office。包括了字处理、电子表格、演示文稿、公式编辑和绘图程序。字处理程序可以直接将文档转换为PDF格式。Perl——广受欢迎的解释性编程语言,适合于检索任意文本

第 1章 Linux 基 础列 的 工 具 程 序 和 应 用 程 序 。 这 些 工 具 和 程 序 中的 许 多 都 可 以 让 用 户 控 制 其 环 境 的 设 置 值 ( 屏幕 保 护 器 、 字 体 、 图 标 、 窗 口 尺 寸 等 方 面 ) ,还 可 以 让 用 户 管 理 他 们 的 机 器 ( 比 如 : 基 于 GUI的 挂 装 、 Zip 档 案 文 件 以 及 网 络 管 理 工 具 , 等等 ) 。 这 些 工 具 越 多 、 桌 面 环 境 越 复 杂 , 需 要的 RAM 内 存 也 就 越 多 。

Linux 操 作 系 统 中 的 桌 面 环 境 有 很 多 , KDE 与GNOME是 目 前 Linux/UNIX 系 统 最 流 行 的 图 形 桌 面 操 作环 境 , 下 面 我 们 分 别 介 绍 。1.7.1 KDE

在 上 个 世 纪 九 十 年 代 中 期 , 以 开 源 模 式 推进 的 Linux 在 开 发 者 中 已 经 拥 有 广 泛 的 影 响 力 。尽 管 X Window 已 经 非 常 成 熟 , 也 有 不 少 基 于 X Window的 图 形 界 面 程 序 , 但 它 们 不 是 未 具 备 完 整 的 图形 操 作 功 能 , 就 是 价 格 高 昂 ( 如 CDE) , 根 本 无 法用 于 Linux 系 统 中 。 如 果 Linux 要 获 得 真 正 意 义 上 的突 破 , 一 套 完 全 免 费 、 功 能 完 善 的 GUI就 非 常 必要 。 1996 年 10 月 , 图 形 排 版 工 具 Lyx 的 开 发 者 、一 位 名 为 Matthias Ettrich 的 德 国 人 发 起 了 KDE(Kool Desktop Environment)项 目 , 与 之 前 各 种 基 于 X Window 的 图 形 程序 不 同 的 是 , KDE 并 非 针 对 系 统 管 理 员 , 它 的用 户 群 被 锁 定 为 普 通 的 终 端 用 户 , Matthias Ettrich希望 KDE 能 够 包 含 用 户 日 常 应 用 所 需 要 的 所 有 应用 程 序 组 件 , 例 如 Web浏 览 器 、 电 子 邮 件 客 户 端 、办 公 套 件 、 图 形 图 像 处 理 软 件 等 , 将 UNIX/Linux 彻底 带 到 桌 面 。 当 然 , KDE 符 合 GPL规 范 , 以 免 费和 开 放 源 代 码 的 方 式 运 行 。

KDE 现 在 除 了 拥 有 KFM( 类 似 于 IE 4.0)、 KPresenter(类似 PowerPoint) 、 KIllustrator( 类 似 CorelDraw 或 Illustrator) 等 重 量级 软 件 , 还 有 体 贴 用 户 的 GUI配 置 软 件 , 可 以 帮助 用 户 配 置 UNIX/Linux , 使 其 深 受 使 用 者 欢 迎 。

最 初 , 由 于 KDE 基 于 TrollTech 公 司 开 发 的 Qt 程序 库 , 所 以 也 受 到 了 许 多 批 评 。 虽 然 Qt 本 身 作为 基 于 C++的 跨 平 台 开 发 工 具 是 非 常 优 秀 的 , 但可 惜 的 是 它 不 是 自 由 软 件 。 Qt 的 License 允 许 任 何人 使 用 Qt 编 写 免 费 软 件 及 免 费 拷 贝 给 其 他 用 户使 用 , 但 如 果 利 用 Qt 编 写 非 免 费 软 件 , 则 需 要

• 91 •

Page 92: 预备篇 · Web viewOpen Office ——成熟的office应用套件,类似并兼容MS Office。包括了字处理、电子表格、演示文稿、公式编辑和绘图程序。字处理程序可以直接将文档转换为PDF格式。Perl——广受欢迎的解释性编程语言,适合于检索任意文本

软件综合开发案例教程——Linux、GCC、MySQL、Socket、Gtk+与开源案例购 买 他 们 的 License 。 更 重 要 的 是 , 任 何 人 都 不 可以 随 意 修 改 Qt 源 代 码 。 如 果 TrollTech 公 司 更 改 Qt License 、 公 司 倒 闭 或 被 人 收 购 等 , 都 会 令 KDE 前功 尽 弃 。

但 不 久 后 , Qt 不 但 实 行 了 GPL授 权 , 而 且 还保 证 在 Qt 被 收 购 的 情 况 下 仍 然 有 效 。

1.7.2 GNOME

GNOME诞 生 于 1997 年 8 月 , 当 时 , 为 了 克 服 KDE所 遇 到 的 QT 许 可 协 议 和 单 一 C++依 赖 的 困 难 , 以墨 西 哥 的 Miguel de Icaza 为 首 的 250 名 程 序 员 就 开 始 了一 个 新 项 目 , 完 全 从 头 开 始 , 这 就 是 GNOME。

GNOME选 择 完 全 以 GPL的 GTK 图 形 界 面 库 为 基 础 ,因 此 我 们 也 一 般 将 GNOME 和 KDE 两 大 阵 营 称 为GNOME/GTK 和 KDE/Qt 。 与 Qt 基 于 C++语 言 不 同 , GTK 采用 较 传 统 的 C语 言 , 虽 然 C语 言 不 支 持 面 向 对 象设 计 , 看 起 来 比 较 落 后 , 但 当 时 熟 悉 C 语 言 的开 发 者 远 远 多 于 熟 悉 C++的 开 发 者 。 加 之 GNOME/GTK 完 全 遵 循 GPL版 权 公 约 , 吸 引 了 更 多 的 自 由程 序 员 参 与 , 但 由 于 KDE 先 行 一 步 , 且 基 础 占优 势 , 所 以 一 直 都 保 持 领 先 地 位 。 1999 年 3 月 ,GNOME 1.0 在 匆 忙 中 推 出 , 稳 定 性 奇 差 无 比 , 以 至于 许 多 人 笑 称 GNOME 1.0 还 没 有 KDE 1.0 Alpha 稳 定 , 而同 期 的 KDE 1.1.2 无 论 在 稳 定 性 还 是 功 能 上 都 远 胜于 GNOME, 直 到 10 月 份 推 出 的 GNOME 1.0.55 版 才 较 好解 决 了 稳 定 性 问 题 , 给 GNOME重 新 赢 回 了 声 誉 。由 于 思 想 分 歧 , 当 时 GNOME的 开 发 者 与 KDE 的 开发 者 在 网 上 吵 得 天 翻 地 覆 , 几 乎 达 到 相 互 仇 视的 地 步 。 但 不 管 怎 么 说 , GNOME还 是 跌 跌 撞 撞 迈出 了 第 一 步 , 尽 管 那 时 KDE 几 乎 是 所 有 Linux 发 行版 默 认 的 桌 面 环 境 。

经 过 14 个 月 的 共 同 努 力 , 终 于 完 成 了 这 个工 程 。 现 在 GNOME已 得 到 了 占 Linux 市 场 份 额 最 大的 发 行 商 Red Hat 的 支 持 , 拥 有 了 大 量 应 用 软 件 ,包 括 文 字 处 理 软 件 Go 、 电 子 表 格 软 件 Gnumeric 、日 历 程 序 GNOMEcal 、 堪 与 Photoshop 媲 美 的 图 形 图 像处 理 软 件 Gimp 等 。

现 在 GNOME与 KDE 成 了 两 大 竞 争 阵 营 , 这 必 将使 Linux 更 加 易 于 使 用 。

• 92 •

Page 93: 预备篇 · Web viewOpen Office ——成熟的office应用套件,类似并兼容MS Office。包括了字处理、电子表格、演示文稿、公式编辑和绘图程序。字处理程序可以直接将文档转换为PDF格式。Perl——广受欢迎的解释性编程语言,适合于检索任意文本

第 1章 Linux 基 础1.7.3 Xfce

Xfce 是 一 个 在 UNIX 与 类 UNIX 操 作 系 统 上 运 行 的桌 面 环 境 , 如 Linux 与 FreeBSD, 它 主 要 是 由 鼠 标 进行 配 置 , 而 它 的 配 置 文 档 通 常 不 会 被 普 通 用 户看 到 。 它 的 设 计 目 的 是 , “ 可 作 为 实 际 应 用 、快 速 加 载 的 执 行 程 序 , 并 减 少 耗 用 系 统 资 源 ” 。

Xfce 同 时 为 程 序 设 计 者 提 供 开 发 框 架 。 除 了Xfce 本 身 , 还 有 第 三 方 的 程 序 使 用 Xfce 的 程 序 库 ,如 文 字 编 辑 器 — Mousepad 、 多 媒 体 播 放 程 序 —xfmedia 与 终 端 机 模 拟 器 — Terminal emulator。

Xfce 建 立 在 Gtk+ 2.x 之 上 。 它 使 用 Xfwm 作 为 窗 口管 理 器 。 Xfce 有 点 像 另 一 个 商 业 的 桌 面 环 境CDE , 不 过 在 新 版 本 中 已 经 有 较 大 的 分 别 了 。

“Xfce” 的 名 称 最 初 是 代 表 “ XForms Common Environment”, 但 自 从 那 时 起 , Xfce 已 被 重 写 了 两 次 ,而 且 不 再 使 用 XForms 工 具 包 。 这 个 名 称 虽 然 仍 被保 留 下 来 , 但 现 在 已 不 会 将 其 大 写 为 “ XFce”,而 是 写 成 “ Xfce” 。 开 发 者 现 在 的 任 务 是 使 Xfce 不再 代 表 任 何 东 西 。

Xfce 并 不 像 KDE 与 Gnome , 它 并 不 常 见 于 Linux 发行 版 中 。 不 过 , 仍 有 少 部 分 发 行 版 用 它 作 为 默认 的 桌 面 环 境 , 但 大 型 发 行 版 ( 如 Debian 与Fedora Core) 则 只 将 其 作 为 可 选 择 配 件 。1.7.4 LXDE

LXDE, 即 Lightweight X11 Desktop Environment 的 缩 写 , 通 常也 称 之 为 LX ( 意 思 是 LinuX) 。 LX 与 别 的 桌 面 环 境最 大 的 不 同 之 处 就 是 , 它 的 任 何 一 个 组 件 都 可以 完 全 独 立 地 应 用 , 而 不 依 赖 于 其 他 组 件 。

LXDE项 目 致 力 于 提 供 一 个 新 的 桌 面 环 境 , 并且 在 保 证 易 用 性 的 前 提 下 尽 可 能 地 减 少 资 源 的占 用 。 易 用 性 、 速 度 、 内 存 使 用 率 , 是 开 发 者首 要 考 虑 的 因 素 。

LXDE有 以 下 特 性 :● 轻 便 : 合 理 的 内 存 资 源 占 用 ( 在 X11 和

LXDE 启 动 后 , 在 i386处 理 器 平 台 上 , 内 存 占用 大 约 45 MB。 )

● 高 效 : 哪 怕 在 1999 年 生 产 的 机 器 上 也 能

• 93 •

Page 94: 预备篇 · Web viewOpen Office ——成熟的office应用套件,类似并兼容MS Office。包括了字处理、电子表格、演示文稿、公式编辑和绘图程序。字处理程序可以直接将文档转换为PDF格式。Perl——广受欢迎的解释性编程语言,适合于检索任意文本

软件综合开发案例教程——Linux、GCC、MySQL、Socket、Gtk+与开源案例很 好 地 运 行 (LXDE 对 硬 件 的 要 求 和 Windows 98 差不 多 ) 。

● 美 观 : 使 用 国 际 化 的 Gtk+2 用 户 界 面 。● 易 用 : 用 户 界 面 既 简 单 却 不 失 易 用 性 。● 自 由 : 所 有 组 件 都 可 以 在 LXDE外 独 立 使用 。

● 兼 容 : 完 全 符 合 freedesktop.org 指 定 的 桌 面 标准 。

● 节 省 : LXDE 自 身 对 硬 件 的 要 求 不 高 ,不 过 , 其 他 X 下 的 应 用 程 序 可 能 有 点 要求 。 比 如 说 , Firefox 和 OpenOffice.org2 可 能 比较 耗 内 存 , 所 以 建 议 内 存 容 量 不 低 于 128 MB 。

1.8 GUI开发工具在 X Window 下 编 程 有 很 多 库 可 以 使 用 , 如

Motif 、 Gtk+ 、 Qt 等 。Motif 已 经 有 很 长 的 历 史 了 , 而 且 早 已 被 商 业

UNIX 所 接 受 , 积 累 了 大 量 的 应 用 。 现 在 , Motif 2.1已 开 放 了 源 代 码 , 被 称 为 open Motif , 与 以 前 的 版本 相 比 增 加 了 很 多 特 性 , 而 且 全 面 支 持 国 际 化可 以 从 http://www.opengroup.org/openmotif下 载 。

可 用 来 在 UNIX 上 开 发 GUI, 位 于 xt库 ( 对 X Window的 底 层 库 Xlib更 高 抽 象 层 次 上 进 行 封 装 的 函 数库 ) 之 上 的 Gtk+ 、 Qt 都 是 开 放 源 代 码 的 库 , 编 程模 式 与 Motif 有 很 大 的 不 同 。1.8.1 Motif图 形 库

Motif 最 初 是 由 OSF( 开 放 基 金 协 会 ) 开 发 的 一个 行 业 标 准 的 GUI( 图 形 用 户 界 面 ) 。 1996 年 , OSF与 X/Open 合 并 为 Open Group 。 1997 年 初 , X联 盟 结 束 ,并 将 其 归 属 的 项 目 移 交 给 Open Group 。 Open Group 继 续开 发 和 支 持 X Window 系 统 、 Motif 、 CDE 和 其 他 技 术 。2000 年 5 月 15 日 , Open Group 使 用 公 共 许 可 证 向 开 放源 代 码 团 体 发 布 了 Motif 的 源 代 码 。 在 开 放 系 统( 如 Linux)上 , 可 以 使 用 免 费 的 Motif 。

• 94 •

Page 95: 预备篇 · Web viewOpen Office ——成熟的office应用套件,类似并兼容MS Office。包括了字处理、电子表格、演示文稿、公式编辑和绘图程序。字处理程序可以直接将文档转换为PDF格式。Perl——广受欢迎的解释性编程语言,适合于检索任意文本

第 1章 Linux 基 础Motif 最 先 实 现 并 运 行 于 支 持 X Window 系 统 上 ,

它 是 UNIX 系 统 的 主 要 用 户 界 面 。 目 前 已 经 应 用于 超 过 200 种 硬 件 和 软 件 平 台 。 Motif GUI Toolkit推 动 了异 种 机 和 网 络 环 境 下 的 应 用 开 发 , 各 种 机 器 包括 便 携 机 、 PC 、 工 作 站 、 超 级 计 算 机 , 都 得 益于 Motif 环 境 下 应 用 程 序 一 致 的 行 为 和 视 感 。 用Motif GUI 开 发 的 应 用 软 件 , 具 有 高 度 的 可 移 植 性 、可 交 互 性 以 及 可 伸 缩 性 。

现 在 的 Motif 已 经 不 只 是 单 纯 的 GUI Toolkit 了 ,它 还 包 含 了 一 个 Motif Window manager( 窗 口 管 理 器 ) , 用来 管 理 X Clients(X Applications) 。

1. Motif 技 术 简 介Motif 技 术 的 核 心 部 分 包 含 三 个 部 分 : 可 扩 充

用 户 接 口 工 具 箱 , 用 户 接 口 语 言 (UIL) , 窗 口 管理 器 (MWM) 。

1) 用 户 接 口 工 具 箱开 发 Motif 应 用 软 件 主 要 使 用 三 个 库 :

Xlib、 Toolkit Intrinsics(Xt)和 Motif Toolkit。Xlib是 在 X协 议 上 为 用 户 提 供 的 C 语 言 客 户 接

口 。 尽 管 Xlib提 供 了 与 X Server交 互 的 基 本 工 具 , 但是 仅 使 用 Xlib来 开 发 复 杂 的 应 用 软 件 是 一 件 非 常艰 苦 的 工 作 。 为 了 简 化 开 发 工 作 , X提 供 了 一些 高 级 的 接 口 , 即 X Toolkit Intrinsics , 简 称 Xt 。 Xt 的三 个 最 重 要 的 贡 献 是 : 对 象 , 即 所 谓 Widget 的 引入 ; Widget 布 局 管 理 ; 事 件 的 分 发 和 处 理 。

Xt 提 供 的 是 一 组 底 层 的 Widget , 是 一 个 特 定的 用 户 接 口 层 ; Motif Toolkit 则 是 建 立 在 Xt Toolkits之 上的 Widget 对 象 类 集 合 。 Motif 使 用 底 层 的 Widget 建 立基 本 的 类 和 各 种 子 类 。 Motif 提 供 的 Widget 加 入 了一 些 应 用 所 通 用 的 特 性 : 可 视 风 格 、 选 择 和 拖放 等 。 其 设 计 利 用 了 Xt Intrinsics 的 机 制 , 同 样 也 采用 面 向 对 象 的 程 序 设 计 方 法 。

Motif 主 要 有 三 组 Widget : XmPrimitivs 和XmGadgets、 XmManager 以 及 Shell 。

XmPrimitivs 是 没 有 子 Widget 的 Widget 。 它 是 公 共 输入 、 输 出 的 基 本 单 位 , 通 常 是 建 立 复 合 Widget 的部 件 。 XmPrimitivs 是 Core 的 子 类 有 着 基 本 的 颜 色 资

• 95 •

Page 96: 预备篇 · Web viewOpen Office ——成熟的office应用套件,类似并兼容MS Office。包括了字处理、电子表格、演示文稿、公式编辑和绘图程序。字处理程序可以直接将文档转换为PDF格式。Perl——广受欢迎的解释性编程语言,适合于检索任意文本

软件综合开发案例教程——Linux、GCC、MySQL、Socket、Gtk+与开源案例源 和 键 盘 游 历 行 为 。 XmPrimitivs 仅 用 作 特 定 行 为 类的 超 类 。

XmGadgets是 从 XmPrimitive 派 生 , 没 有 窗 口 , 但 有 布局 资 源 。 Gadgets 从 其 父 Widget 继 承 颜 色 资 源 并 依据 其 父 Widget 分 发 事 件 。 XmGadget 是 RectObj 的 子 类 。

XmManager 类 是 所 有 管 理 器 的 超 类 , 是 Core 的 子类 。 其 目 的 之 一 是 定 位 和 形 成 其 子 Widget ; 其 另一 个 目 的 是 确 定 其 子 Gadget 是 否 要 处 理 一 个 输 入事 件 , 如 果 是 , 就 把 事 件 发 到 子 Gadget 。 XmManager是 一 个 不 能 实 例 化 的 类 , 仅 能 作 为 其 他 Widget 的子 类 。

Xt 和 Motif 都 定 义 了 一 组 Widget , 其 主 要 目 的 是封 装 其 他 Widget , 并 和 窗 口 管 理 器 进 行 通 信 , 这些 Widget 叫 Shell 。 每 个 有 顶 极 窗 口 的 Widget 都 放 在一 个 Shell 中 。 Motif 的 许 多 便 利 函 数 在 生 成 Widget 时也 自 动 生 成 Shell 。 Motif 提 供 了 三 种 类 型 的 Shell :VendorShell 、 DialogShell和 MenuShell 。

2) 用 户 接 口 语 言用 户 接 口 语 言 是 在 Motif Toolkit 的 基 础 上 开 发 的

用 户 界 面 描 述 性 语 言 。 开 发 人 员 可 使 用 用 户 接口 语 言 描 述 用 户 界 面 组 件 的 属 性 和 回 调 函 数 ,及 组 件 间 的 层 次 关 系 , 并 将 其 保 存 为 以 .uil 为 后缀 的 文 本 文 件 。 应 用 程 序 调 用 Motif 资 源 管 理 器MRM 的 函 数 , 读 取 和 解 释 界 面 定 义 文 件 以 创 建界 面 。 使 用 Motif 结 合 用 户 接 口 语 言 可 以 方 便 、快 速 地 开 发 用 户 界 面 。

3) 窗 口 管 理 器X Window 系 统 应 用 的 用 户 一 般 要 使 用 一 个 窗 口

管 理 器 。 Motif 也 提 供 了 自 己 的 窗 口 管 理 器MWM。 Motif 的 窗 口 管 理 器 是 一 个 独 立 的 应 用 。 它可 以 管 理 应 用 的 窗 口 , 而 不 管 应 用 是 否 以 Motif建 立 , 并 可 以 有 效 地 管 理 多 个 显 示 器 。

2. Motif 风 格 指 南Motif 提 供 了 风 格 指 南 , 它 以 文 档 的 形 式 描 述

了 用 Motif 用 户 接 口 实 现 的 应 用 软 件 应 遵 循 的 规范 。 其 目 的 是 为 了 维 护 Motif 应 用 软 件 行 为 和 视感 的 一 致 性 。 Motif 规 范 存 在 于 两 个 文 档 : Motif 风

• 96 •

Page 97: 预备篇 · Web viewOpen Office ——成熟的office应用套件,类似并兼容MS Office。包括了字处理、电子表格、演示文稿、公式编辑和绘图程序。字处理程序可以直接将文档转换为PDF格式。Perl——广受欢迎的解释性编程语言,适合于检索任意文本

第 1章 Linux 基 础格 指 南 , 定 义 应 用 程 序 应 该 遵 循 的 外 观 ; 应 用环 境 规 范 , 定 义 应 用 程 序 接 口 。 Motif 规 范 在 IEEE 1295 规 范 中 定 义 。 Motif 规 范 并 不 是 强 制 性 的 规 定 ,而 是 建 议 性 的 规 范 。

3. Motif 编 程 模 式Motif 应 用 编 程 接 口 是 用 C 语 言 实 现 的 。 它 是

面 向 ANSI C 的 编 程 接 口 , Motif 从 第 二 版 增 加 了 对C++的 支 持 。 Motif 用 户 接 口 的 设 计 一 般 需 要 完 成下 列 工 作 :

(a) 包 含 需 要 的 头 文 件 : 除 了 C的 一 般 头 文 件外 , 还 需 要 包 含 X和 Motif 的 头 文 件 。

(b) 初 始 化 Xt Intrinsics : 初 始 化 建 立 应 用 程 序 现场 , 打 开 X服 务 器 的 显 示 , 建 立 资 源 数 据 库 ,然 后 创 建 ApplicationShell Widget , 它 是 应 用 程 序 中 其 他Widget 的 父 Widget 。 初 始 化 Xt 一 般 使 用 XtAppInitialize() 函数 。

(c) 建 立 构 成 应 用 界 面 的 Widgets 层 次 结 构 。(d) 注 册 回 调 函 数 : Widget 注 册 自 己 的 事 件 处

理 过 程 或 动 作 函 数 。(e) 使 Widget 显 示 在 屏 幕 上 : 即 建 立 与 该 Widget

相 应 的 窗 口 。 Widgets 在 生 成 时 , Motif 并 没 有 自 动实 现 Widget , 必 须 调 用 XtRealizeWidget(parent) 来 实 现Widget 。

(f) 进 入 事 件 循 环 : 使 用 XtAppMainLoop()函 数 。 设计 者 也 可 以 通 过 Xt Intrinsics 提 供 的 两 个 专 门 的 事 件分 发 函 数 XtAppNextEvent 和 XtDispatchEvent 建 立 事 件 循 环 ,对 事 件 进 行 过 滤 处 理 。1.8.2 Qt 界 面 库

Qt 是 一 个 跨 平 台 的 C++图 形 用 户 界 面 库 , 它是 挪 威 TrollTech 公 司 的 产 品 。 基 本 上 , Qt 同 X Window上 的 Motif 、 Open Look、 GTK 等 图 形 界 面 库 和 Windows 平台 上 的 MFC 、 OWL 、 VCL 、 ATL 是 同 类 型 的 东 西 ,但 Qt 具 有 优 良 的 跨 平 台 特 性 ( 支 持Windows 、 Linux 、 各 种 UNIX 、 OS390和 QNX 等 ) 、 面 向 对象 机 制 以 及 丰 富 的 API , 同 时 也 可 支 持 2D/3D渲 染和 OpenGL API 。 在 当 时 的 同 类 图 形 用 户 界 面 库 中 ,

• 97 •

Page 98: 预备篇 · Web viewOpen Office ——成熟的office应用套件,类似并兼容MS Office。包括了字处理、电子表格、演示文稿、公式编辑和绘图程序。字处理程序可以直接将文档转换为PDF格式。Perl——广受欢迎的解释性编程语言,适合于检索任意文本

软件综合开发案例教程——Linux、GCC、MySQL、Socket、Gtk+与开源案例Qt 的 功 能 最 为 强 大 。 Matthias Ettrich在 发 起 KDE 项 目 时 ,很 自 然 选 择 了 Qt 作 为 开 发 基 础 。 也 正 是 得 益 于Qt 的 完 善 性 , KDE 的 开 发 进 展 颇 为 顺 利 , 例 如 ,Netscape 5.0 从 Motif 移 植 到 Qt 平 台 上 仅 仅 花 费 了 5 天 时间 。 这 样 , 当 KDE 1.0正 式 发 布 时 , 外 界 看 到 的 便是 一 个 各 项 功 能 基 本 具 备 的 GUI操 作 环 境 , 且 在后 来 的 发 展 中 , Qt/KDE 一 直 都 保 持 领 先 优 势 。 有必 要 提 到 的 是 , TrollTech 公 司 实 质 性 参 与 了 KDE 项目 , 如 前 面 提 到 的 Netscape 5.0 的 移 植 工 作 , 就 是 由TrollTech 的 程 序 员 完 成 , 而 KDE 工 程 的 发 起 者 、Matthias Ettrich 本 人 也 在 1998 年 离 开 学 术 界 加 入TrollTech , 并 一 直 担 任 该 公 司 的 软 件 开 发 部 主 管 ,因 此 TrollTech 公 司 对 于 KDE 项 目 拥 有 非 常 强 的 影 响力 ( 当 然 不 能 说 绝 对 掌 握 , 毕 竟 KDE 开 发 工 作 仍然 是 由 自 由 程 序 员 协 作 完 成 的 ) 。

我 们 前 面 提 到 , KDE 采 用 GPL规 范 发 行 , 但 底层 的 基 础 Qt 却 是 一 个 不 遵 循 GPL的 商 业 软 件 , 这就 给 KDE 上 了 一 道 无 形 的 枷 锁 并 带 来 可 能 的 法律 风 险 。 一 大 批 自 由 程 序 员 对 KDE 项 目 的 决 定深 为 不 满 , 它 们 认 为 利 用 非 自 由 软 件 开 发 违 背了 GPL的 精 神 , 于 是 这 些 GNU 的 狂 热 信 徒 兵 分 两路 : 其 中 一 部 分 人 去 制 作 Harmonny , 试 图 重 写 出一 套 兼 容 Qt 的 替 代 品 , 这 个 项 目 虽 然 技 术 上 相对 简 单 , 但 却 没 有 获 得 KDE 项 目 的 支 持 ; 另 一路 人 马 则 决 定 重 新 开 发 一 套 名 为 “ GNOME”(GNU Network Object Environment)的 图 形 环 境 来 替 代 KDE , 一 场 因为 思 想 分 歧 引 发 的 GUI之 战 开 始 了 。

Qt 给 应 用 程 序 开 发 者 提 供 了 建 立 艺 术 级 图形 用 户 界 面 所 需 的 所 有 功 能 。 Qt 是 完 全 面 向 对象 的 , 很 容 易 扩 展 , 并 且 允 许 真 正 的 组 件 编 程 。

目 前 Qt 包 括 Qt/X11 , 基 于 Frambuffer的 Qt Embedded, 快速 开 发 工 具 Qt Designer 。

Qt 支 持 下 述 平 台 :● Windows-95 、 98 、 NT 4.0、 ME 、 2000 、 XP 和

Vista ;● UNIX/X11-Linux 、 Sun Solaris 、 HP-UX 、 Compaq Tru64

UNIX 、 IBM AIX 、 SGI IRIX 和 其 他 很 多 X11平 台 ;

• 98 •

Page 99: 预备篇 · Web viewOpen Office ——成熟的office应用套件,类似并兼容MS Office。包括了字处理、电子表格、演示文稿、公式编辑和绘图程序。字处理程序可以直接将文档转换为PDF格式。Perl——广受欢迎的解释性编程语言,适合于检索任意文本

第 1章 Linux 基 础

● Macintosh-Mac OS X ;● Embedded-有 帧 缓 冲 (frame buffer)支 持 的 Linux 平 台 ,

Windows CE ;

● Symbian/S60-目 前 已 经 可 以 提 供 技 术 预 览 版本 。从 2009 年 5 月 11 日 起 , 诺 基 亚 Qt Software 宣 布 Qt

源 代 码 库 面 向 公 众 开 放 , Qt 开 发 人 员 可 通 过 为Qt 以 及 与 Qt 相 关 的 项 目 贡 献 代 码 、 翻 译 、 示 例以 及 其 他 内 容 , 协 助 引 导 和 塑 造 Qt 未 来 的 发 展 。为 了 便 于 这 些 内 容 的 管 理 , Qt Software 启 用 了 基 于Git 和 Gitorious开 源 项 目 的 Web源 代 码 管 理 系 统 。

Qt 同 X Window 上 的 Motif 、 Openwin、 GTK 等 图 形 界 面库 和 Windows 平 台 上 的 MFC 、 OWL 、 VCL 、 ATL 是 同类 型 的 东 西 , 但 是 Qt 具 有 下 列 优 点 :

1) 优 良 的 跨 平 台 特 性Qt 支 持 下 列 操 作 系 统 : Microsoft Windows

95/98 、 Microsoft Windows NT 、 Linux 、 Solaris 、 SunOS 、 HP-UX 、 Digital UNIX (OSF/1 、 Tru64)、 Irix 、 FreeBSD、 BSD/OS 、 SCO 、 AIX、 OS390、 QNX , 等 等 。

2) 面 向 对 象Qt 的 良 好 封 装 机 制 使 得 Qt 的 模 块 化 程 度 非

常 高 , 可 重 用 性 较 好 , 对 于 用 户 开 发 来 说 是 非常 方 便 的 。 Qt 提 供 了 一 种 称 为 signals/slots 的 安 全 类型 来 替 代 callback , 这 使 得 各 个 元 件 之 间 的 协 同 工作 变 得 十 分 简 单 。

3) 丰 富 的 APIQt 包 括 多 达 250 个 以 上 的 C++类 , 还 提 供 基 于

模 板 的 collections 、 serialization 、 file 、 I/O device 、 directory management 、 date/time类 。 甚 至 还 包 括 正 则 表 达 式 的 处理 功 能 。

(a) 支 持 2D/3D图 形 渲 染 , 支 持 OpenGL ;(b) 大 量 的 开 发 文 档 ; (c) XML 支 持 ;

• 99 •

Page 100: 预备篇 · Web viewOpen Office ——成熟的office应用套件,类似并兼容MS Office。包括了字处理、电子表格、演示文稿、公式编辑和绘图程序。字处理程序可以直接将文档转换为PDF格式。Perl——广受欢迎的解释性编程语言,适合于检索任意文本

软件综合开发案例教程——Linux、GCC、MySQL、Socket、Gtk+与开源案例(d) Webkit 引 擎 的 集 成 , 可 以 实 现 本 地 界 面 与 Web

内 容 的 无 缝 集 成 。但 是 , 真 正 使 得 Qt 在 自 由 软 件 界 的 众 多

Widgets ( 如 Lesstif、 Gtk 、 EZWGL 、 Xforms 、 fltk 等 ) 中 脱 颖而 出 的 , 还 是 基 于 Qt 的 重 量 级 软 件 KDE 。

Qt 开 发 人 员 仅 需 要 学 会 一 种 API 来 写 入 应 用程 序 , 该 程 序 可 在 任 何 地 方 运 行 。 统 一 的 跨 平台 API , 让 程 序 员 们 集 中 精 力 致 力 于 可 增 值 的 技术 革 新 , 而 不 必 担 心 维 护 和 管 理 现 有 应 用 程 序多 版 本 的 基 础 结 构 与 界 面 。

Qt 已 由 成 千 上 万 商 业 与 开 源 应 用 程 序 开 发员 在 多 个 操 作 系 统 与 编 译 器 上 进 行 了 全 面 的 测试 , 奠 定 了 高 性 能 与 资 源 性 应 用 程 序 的 基 础 。

Qt 不 需 要 “ 虚 拟 器 ” 、 模 拟 层 或 大 容 量 的运 行 时 间 环 境 。 它 如 本 地 化 的 应 用 程 序 一 样 ,直 接 写 入 低 级 的 图 形 函 数 , 因 而 Qt 程 序 能 以源 代 码 速 度 执 行 。

对 于 用 户 来 说 , 如 何 在 Qt/GTK 中 作 出 选 择 呢 ?一 般 来 说 , 如 果 用 户 使 用 C++, 对 库 的 稳 定 性 、健 壮 性 要 求 比 较 高 , 并 且 希 望 跨 平 台 开 发 的 话那 么 使 用 Qt 是 较 好 的 选 择 。1.8.3 Gtk+控 件 库

GTK(GIMP Toolkit)是 一 个 生 成 GUI的 库 , 按 LGPL 发 布 。它 最 初 是 为 GIMP 写 的 , 但 目 前 已 发 展 为 一 个 功能 强 大 、 设 计 灵 活 的 通 用 工 具 。 特 别 值 得 一 提的 是 , 它 被 GNOME选 中 , 使 得 Gtk+ 广 为 流 传 , 大有 取 代 Motif 成 为 X上 GUI开 发 的 标 准 库 的 趋 势 。 当然 Gtk+ 并 不 要 求 必 须 在 X上 , 事 实 上 , 目 前 Gtk+已 经 有 了 成 功 的 Windows 版 本 。

Gtk+ 是 一 个 小 型 而 高 效 的 控 件 库 , 具 有 Motif的 外 观 和 风 格 。 实 际 上 , 它 比 Motif 看 起 来 好 多了 , 它 包 含 有 基 本 的 控 件 和 一 些 很 复 杂 的 控 件 :例 如 文 件 选 择 控 件 和 颜 色 选 择 控 件 。 Gtk+ 提 供了 一 些 独 特 的 特 性 , 例 如 , 按 钮 不 提 供 标 签 ,它 包 含 了 一 个 子 控 件 , 在 很 多 的 时 候 是 一 个 标签 。 但 是 , 这 个 子 控 件 也 可 以 是 一 个 映 射 , 包括 图 像 或 者 任 何 其 他 程 序 员 想 要 的 集 合 。 在 整

• 100 •

Page 101: 预备篇 · Web viewOpen Office ——成熟的office应用套件,类似并兼容MS Office。包括了字处理、电子表格、演示文稿、公式编辑和绘图程序。字处理程序可以直接将文档转换为PDF格式。Perl——广受欢迎的解释性编程语言,适合于检索任意文本

第 1章 Linux 基 础个 库 中 , 你 随 处 可 见 这 种 伸 缩 性 。

GNOME的 开 发 基 础 结 构 是 围 绕 一 组 函 数 库 的 ,所 有 的 内 容 都 是 用 可 移 植 的 ANSI C 语 言 写 成 的 ,可 以 用 于 所 有 类 UNIX 系 统 , 与 图 形 相 关 的 函 数库 依 赖 于 X Window 系 统 。 Gnome 函 数 库 是 最 高 层 的 。Gtk+ 由 两 部 分 组 成 , GTK 和 GDK 。 GTK 层 为 C 语 言提 供 了 一 个 对 象 模 型 , 并 为 UI 工 具 包 提 供 了 最基 本 的 widget, 它 是 上 层 GUI派 生 的 基 础 。 GTK 是 依赖 于 GDK 的 , 而 GDK 是 Xlib的 一 个 底 层 包 装 , Xlib库直 接 与 X服 务 器 对 话 。 除 了 Xlib以 外 的 任 何 部 分都 是 基 于 GLib 的 , 它 是 一 个 有 用 的 C 函 数 库 , 提供 了 很 多 实 用 程 序 和 可 移 植 的 功 能 以 及 一 组 容易 被 C 语 言 使 用 的 容 器 , 在 设 计 GDK 和 GTK 程 序时 很 有 用 。 它 提 供 了 一 些 标 准 c 函 数 库 的 替 代函 数 , 比 如 malloc, 但 在 其 他 系 统 上 使 用 时 可 能会 出 问 题 。 由 于 GDK 使 用 了 Glib, 因 此 在 多 平 台上 使 用 时 , GDK 变 得 更 为 方 便 和 安 全 。

Gtk+ 为 应 用 程 序 的 国 际 化 (i18n) 、 本 地 化 (i10n) 提供 了 很 好 的 处 理 工 具 , 它 能 够 让 编 写 的 程 序 不加 修 改 , 只 需 要 切 换 不 同 语 种 所 需 要 的 语 言 数据 文 件 , 就 可 以 为 不 同 语 种 的 人 们 所 使 用 。 现在 , 许 多 自 由 软 件 再 也 不 需 像 从 前 那 样 进 行 艰苦 地 “ 汉 化 ” 了 。

Gtk+ 是 可 移 植 的 , 而 且 具 有 多 种 语 言 前 端 ,譬 如 C++ 、 Perl 、 Python 、 TOM 、 Ada95 、 Free Pascal 、 Eiffel 、 Java以 及 C# , 等 等 。 鉴 于 Gtk+ 是 用 C语言 开 发 的 , 因 此 Gtk+ 简 单 易 用 , 执 行 效 率 高 。基 于 这 些 原 因 , Gtk+ 拥 有 为 数 众 多 的 拥 护 者 。Linux 的 桌 面 环 境 GNOME就 是 建 立 在 Gtk+ 基 础 之 上 的 。

1. Gtk+ 应 用 基 本 概 念在 Linux 上 用 Gtk+ 库 开 发 GUI应 用 软 件 , 首 先 要

明 确 几 个 概 念 。1) 构 件 (widget)的 概 念在 Gtk+ 库 里 的 窗 口 、 菜 单 和 按 钮 等 应 用 实 体 ,

我 们 称 之 为 构 件 (widget) 。 构 件 具 有 面 向 对 象 的 特征 , 其 具 体 结 构 由 Gtk+ 库 定 义 , 它 对 运 用 构 件的 程 序 员 来 说 是 透 明 的 , 除 非 你 想 创 建 自 己 的

• 101 •

Page 102: 预备篇 · Web viewOpen Office ——成熟的office应用套件,类似并兼容MS Office。包括了字处理、电子表格、演示文稿、公式编辑和绘图程序。字处理程序可以直接将文档转换为PDF格式。Perl——广受欢迎的解释性编程语言,适合于检索任意文本

软件综合开发案例教程——Linux、GCC、MySQL、Socket、Gtk+与开源案例构 件 。 在 对 构 件 进 行 安 排 时 , 我 们 只 需 要 关 心构 件 的 处 理 函 数 , 这 样 做 的 目 的 就 是 要 对 应 用程 序 员 屏 蔽 构 件 的 细 节 , 使 程 序 员 将 更 多 的 精力 集 中 在 应 用 功 能 上 。

2) 容 器 (container)的 概 念构 件 主 要 分 为 两 大 类 , 即 容 器 类 (container) 和 杂

类 (miscellaneous) 。 大 多 数 构 件 属 容 器 类 , 它 们 可 以像 容 器 一 样 容 纳 其 他 构 件 。 在 安 排 构 件 时 , 常常 要 遵 循 一 个 规 则 : 除 了 组 合 框 (box) 和 组 合 表(table) 这 两 种 构 件 外 , 其 他 的 容 器 类 构 件 都 只 能容 纳 一 个 构 件 。 杂 类 构 件 比 容 器 类 构 件 简 单 ,但 它 不 能 容 纳 其 他 构 件 。

3) 消 息 及 回 调 函 数 的 概 念程 序 必 须 能 对 用 户 的 操 作 作 出 反 应 , 在 基

于 GUI的 程 序 设 计 中 , “ 消 息 ” 或 “ 信 号 ” 是 必要 的 。 用 户 单 击 菜 单 、 各 种 按 钮 、 输 入 用 户 数据 、 查 询 运 行 结 果 和 拖 放 , 都 会 产 生 消 息 或 信号 。 信 号 可 能 需 要 由 软 件 加 以 处 理 , 这 时 程 序员 就 需 要 编 写 消 息 回 调 函 数 。 消 息 或 信 号 的 概念 类 似 于 Windows 中 的 事 件 。 在 Gtk+ 中 经 常 产 生 各种 信 号 , 用 户 产 生 的 大 多 数 信 号 被 忽 略 , 只 有程 序 关 心 的 信 号 , 程 序 中 才 有 相 应 的 处 理 函 数被 调 用 。 程 序 员 要 登 记 信 号 与 处 理 函 数 之 间 的关 系 , 告 诉 Gtk+ 哪 些 信 号 或 事 件 是 程 序 所 关 心的 。

2. Gtk+ 构 件 应 用 方 法在 应 用 Gtk+ 的 构 件 时 , 一 般 要 做 如 下 操 作 :1) 包 含 所 调 用 构 件 的 头 文 件头 文 件 通 常 存 放 在 /usr/include/gtk/目 录 下 , 该 文 件

里 有 对 构 件 的 定 义 及 对 构 件 的 操 作 函 数 , 在 我们 使 用 构 件 时 , 可 以 经 常 在 这 个 目 录 下 查 阅 构件 函 数 的 调 用 格 式 或 参 数 。 我 们 不 必 让 所 有 构件 包 含 头 文 件 , 因 为 构 件 的 头 文 件 已 包 含 在 该目 录 下 一 个 名 为 gtk.h 的 文 件 里 , 包 含 这 个 文 件就 包 含 了 所 有 构 件 的 头 文 件 。 一 般 系 统 将 编 译的 包 含 目 录 指 定 为 /usr/include, 所 以 我 们 只 需 写 明

• 102 •

Page 103: 预备篇 · Web viewOpen Office ——成熟的office应用套件,类似并兼容MS Office。包括了字处理、电子表格、演示文稿、公式编辑和绘图程序。字处理程序可以直接将文档转换为PDF格式。Perl——广受欢迎的解释性编程语言,适合于检索任意文本

第 1章 Linux 基 础include 即 可 。

2) 声 明 构 件声 明 构 件 的 过 程 是 为 了 符 合 C语 言 中 先 声 明 、

后 使 用 的 原 则 。 一 般 在 程 序 开 始 要 声 明 构 件 结构 的 指 针 , 这 就 为 构 件 分 配 了 地 址 。

3) 构 件 指 针 的 初 始 化调 用 构 件 的 创 建 函 数 , 对 构 件 的 属 性 进 行

调 整 ( 大 小 、 位 置 和 状 态 等 ) , 接 着 显 示 构 件 。这 一 点 不 能 忽 略 , 如 果 只 创 建 了 构 件 却 忘 了 显示 (gtk_widget_show) , 在 应 用 时 , 用 户 就 不 能 看 到 构件 , 也 就 无 法 对 构 件 进 行 操 作 了 。

4) 安 排 构 件 的 位 置 与 层 次 关 系构 件 之 间 往 往 是 容 纳 与 被 容 纳 的 关 系 , 也

就 是 说 , 容 器 内 还 有 容 器 , 层 层 嵌 套 。 要 记 住 ,一 般 一 个 容 器 构 件 只 能 容 纳 一 个 构 件 。 如 果 要在 一 个 容 器 构 件 中 安 排 多 个 子 构 件 , 可 先 将 多个 子 构 件 放 入 一 个 组 合 框 或 组 合 表 构 件 内 , 再将 这 个 组 合 框 或 组 合 表 构 件 放 入 该 容 器 构 件 。注 意 , 父 容 器 构 件 要 先 于 子 容 器 构 件 创 建 , 父容 器 构 件 的 显 示 要 在 子 容 器 构 件 的 显 示 之 后 。

5) 编 写 事 件 处 理 函 数构 件 的 头 文 件 中 定 义 了 构 件 能 响 应 的 事 件

( 消 息 ) , 但 并 非 所 有 的 消 息 在 应 用 中 都 是 程 序所 关 心 的 , 对 于 程 序 应 当 响 应 的 事 件 , 程 序 员要 写 出 事 件 处 理 函 数 。

3. Gtk+ 特 性Gtk+ 具 有 以 下 特 性 :● 动 态 类 型 系 统 ;● 用 C语 言 编 写 的 对 象 系 统 , 具 有 继 承 、类 型 检 验 以 及 信 号 / 回 调 函 数 的 基 础 结 构 ;

● 类 型 和 对 象 系 统 不 是 特 别 针 对 GUI的 ;● GtkWidget 对 象 使 用 对 象 系 统 , 它 定 义 了

Gtk+ 图 形 构 件 的 使 用 接 口 ;● 大 量 的 GtkWidget 子 类 ( 构 件 ) 。

• 103 •

Page 104: 预备篇 · Web viewOpen Office ——成熟的office应用套件,类似并兼容MS Office。包括了字处理、电子表格、演示文稿、公式编辑和绘图程序。字处理程序可以直接将文档转换为PDF格式。Perl——广受欢迎的解释性编程语言,适合于检索任意文本

软件综合开发案例教程——Linux、GCC、MySQL、Socket、Gtk+与开源案例

1.8.4 wxWidgets 构 架 库wxWidgets 是 一 个 开 源 的 、 跨 平 台 的 C++构 架 库

(framework) , 它 可 以 提 供 GUI( 图 形 用 户 界 面 ) 工 具 和其 他 工 具 。 目 前 的 2.x 版 本 支 持 所 有 版 本 的Windows 、 带 Gtk+ 或 Motif 的 UNIX 和 Mac OS 。 一 个 支 持OS/2 的 版 本 正 在 开 发 中 。

wxWidgets在 最 开 始 是 由 爱 丁 堡 (Edinburgh) 大 学 的 人工 智 能 应 用 学 院 开 发 的 , 主 要 是 内 部 使 用 , 在1992 年 第 一 次 公 布 。 2.x 版 本 做 了 很 大 程 度 的 改良 , 并 且 由 Julian Smart 、 Robert Roebling、 Vadim Zeitlin、 Vaclav Slavik 和 更 多 其 他 的 人 所 编 写 和 维 护 。

wxWidgets的 主 体 是 由 C++构 建 的 , 但 并 不 是 必 须通 过 C++才 能 使 用 wxWidgets。 wxWidgets拥 有 许 多 其 他 语言 的 绑 定 (binding), 使 你 在 用 其 他 语 言 编 写 程 序 的时 候 也 可 以 使 用 wxWidgets。

wxwidgets 是 一 个 用 C++编 写 的 、 提 供 gui 开 发 的 框架 。 它 包 含 一 个 可 以 支 持 现 今 几 乎 所 有 操 作 系统 的 GUI库 和 其 他 一 些 很 有 用 的 工 具 , 提 供 了 类似 MFC 的 功 能 。 由 于 它 是 一 个 框 架 (Framework) , 所以 它 在 提 供 标 准 程 序 行 为 的 同 时 也 消 除 了 程 序底 层 的 复 杂 性 。

尽 管 wxWidgets通 常 被 称 为 “ 用 户 图 形 界 面 开 发工 具 包 ” , 但 事 实 上 它 所 提 供 的 功 能 决 不 仅 限于 此 。 它 的 其 他 特 性 能 够 应 用 于 软 件 开 发 的 各个 方 面 。 这 个 特 点 很 重 要 , 因 为 所 有 基 于wxWidgets的 应 用 程 序 都 应 能 移 植 到 不 同 的 平 台 ,而 不 仅 仅 是 移 植 界 面 。 wxWidgets提 供 了 各 种 类 库 ,用 以 支 持 文 件 流 (files and streams)、 多 线 程 、 程 序 设 置 、进 程 间 通 信 、 在 线 帮 助 、 数 据 库 访 问 , 等 等 。

wxWidgets与 其 他 相 似 类 型 的 框 架 ( 如 MFC 、 OWL)不 同 的 一 点 是 , 它 具 有 跨 平 台 (MultiPlatform) 的 特 性 。wxWidgets为 其 所 支 持 的 各 种 平 台 提 供 几 乎 一 致 的应 用 程 序 接 口 (API) , 这 意 味 着 在 Windows 上 编 写 的程 序 , 经 过 很 少 的 修 改 ( 甚 至 原 封 不 动 ) , 就 可以 在 Linux 平 台 上 重 新 编 译 。 由 此 能 够 带 来 巨 大的 经 济 利 益 , 因 为 避 免 了 同 一 软 件 需 要 在 不 同平 台 上 全 部 重 新 编 写 时 产 生 人 力 、 物 力 上 的 浪

• 104 •

Page 105: 预备篇 · Web viewOpen Office ——成熟的office应用套件,类似并兼容MS Office。包括了字处理、电子表格、演示文稿、公式编辑和绘图程序。字处理程序可以直接将文档转换为PDF格式。Perl——广受欢迎的解释性编程语言,适合于检索任意文本

第 1章 Linux 基 础费 。 同 时 也 减 少 了 程 序 员 的 负 担 , 因 为 他 们 不需 要 再 去 强 记 不 同 平 台 的 应 用 程 序 接 口 。 此 外wxWidgets能 够 增 强 应 用 程 序 的 持 久 性 。 随 着 计 算机 行 业 的 不 断 发 展 , wxWidgets框 架 也 随 之 不 断 地更 新 , 使 得 基 于 wxWidgets框 架 的 程 序 能 够 轻 松 地移 植 到 最 新 、 最 好 的 系 统 平 台 上 。

另 一 个 不 同 点 是 , wxWidgets提 供 自 身 的 外 观 和质 感 (Native look and feel) 。 有 些 框 架 为 不 同 平 台 提 供 相同 的 窗 体 效 果 , 或 者 使 用 某 些 预 先 设 定 的 主 题来 模 拟 实 现 与 平 台 相 仿 的 外 观 。 相 对 而 言 ,wxWidgets使 用 了 自 身 的 窗 口 装 饰 , 所 以 程 序 的 外观 和 质 感 不 仅 看 起 来 与 主 平 台 一 致 , 而 且 事 实上 它 就 是 自 身 外 观 。

最 后 , 特 别 要 说 一 下 , wxWidgets也 将 移 动 平 台作 为 挑 战 , 目 前 支 持 嵌 入 式 Linux 平 台 、 微 软 Pocket PC , 以 及 即 将 完 成 的 对 Palm OS的 支 持 。

wxWidgets 获 得 了 业 界 广 泛 的 支 持 , 用 户 包 括AOL( 美 国 在 线 ) 、 AMD 、 CALTECH( 加 利 福 尼 亚 理 工学 院 ) 、 NASA( 国 家 航 空 和 宇 宙 航 行 局 ) 、 the Open Source Applications Foundation(开 源 应 用 基 金 会 ) 、 Xerox(施 乐 )等 著 名 企 业 和 机 构 。 wxWidgets的 用 户 群 遍 及 各 个领 域 , 从 个 人 软 件 开 发 者 到 大 型 软 件 公 司 , 从计 算 机 学 院 到 医 疗 研 究 机 构 , 从 生 态 学 研 究 机构 到 电 信 产 业 。 它 也 被 运 用 于 无 数 的 开 源 项 目像 Audacity音 频 编 辑 器 、 pgAdmin III 数 据 库 设 计 管 理 系统 等 。

wxWidgets的 优 点 归 纳 起 来 有 以 下 几 点 :● 可 以 获 取 源 代 码 。● 可 以 用 于 各 种 平 台 。● 能 用 绝 大 多 数 流 行 的 C++编 译 器 编 译 。● 包 含 Tex2RTF 工 具 , 可 以 把 文 档 方 便 地 转换 成 Windows Help 、 HTML和 Word RTF 等 各 种 格 式 。

● 简 单 易 用 , 面 向 对 象 的 应 用 编 程 接 口(API) 。

● 灵 活 的 事 件 处 理 系 统 。● 图 形 调 用 包 括 了 线 、 长 方 形 、 曲 线 等 。● Constraint-based 和 sizer-based 布 局 。● 工 具 栏 Toolbar 、 记 事 本 notebook、 树 形 控 件

• 105 •

Page 106: 预备篇 · Web viewOpen Office ——成熟的office应用套件,类似并兼容MS Office。包括了字处理、电子表格、演示文稿、公式编辑和绘图程序。字处理程序可以直接将文档转换为PDF格式。Perl——广受欢迎的解释性编程语言,适合于检索任意文本

软件综合开发案例教程——Linux、GCC、MySQL、Socket、Gtk+与开源案例tree control、 高 级 列 表 控 件 list control 等 类 。

● 可 以 生 成 Windows 下 的 动 态 链 接 库 DLL 和UNIX 下 的 动 态 链 接 库 。

● 有 浏 览 文 件 、 打 印 、 选 择 颜 色 等 通 用对 话 框 。

● 在 MS Windows 下 , 支 持 生 成 图 文 文 件metafiles, 并 可 以 复 制 到 剪 贴 板 Clipboard 上 。

● 有 从 应 用 程 序 中 调 用 帮 助 的 API 。● 现 成 的 HTML窗 口 ( 支 持 HTML子 集 ) 。● 网 络 支 持   —— 通 过 基 于 套 接 字 socket 和 网络 协 议 的 网 络 通 信 支 持 类 。

● 支 持 平 台 无 关 的 图 形 处 理 程 序 。● 内 在 支 持 许 多 文 件 格 式

(BMP 、 PNG 、 JPEG 、 GIF 、 XPM 、 PNM 、 PCX) 。wxWidgets的 未 来 计 划 :● 创 建 工 具 包 管 理 工 具 , 使 得 wxWidgets能 更容 易 地 集 成 第 三 方 组 件 。

● 提 高 对 嵌 入 式 系 统 的 支 持 。● 提 供 多 样 的 事 件 驱 动 机 制 。● 提 供 增 强 控 件 , 如 将 树 型 控 件 和 列 表空 间 综 合 到 一 起 。

● 开 发 wxHTML 2 , 使 其 在 所 有 平 台 上 都 具有 完 整 的 Web控 制 能 力 。

● 提 供 对 STL等 更 好 的 兼 容 性 。● Palm OS完 整 的 支 持 。

1.9 Linux开发环境Linux 是 一 种 类 UNIX 的 操 作 系 统 。 传 统 UNIX 下 的

开 发 语 言 是 C语 言 , 因 为 C语 言 是 平 台 适 应 性 最强 的 语 言 , 差 不 多 每 种 平 台 上 都 会 有 一 个 C 编译 器 。 C语 言 也 更 易 移 植 , 因 而 , 在 Linux 下 编 程的 最 佳 语 言 应 该 是 C 语 言 , Linux 上 的 很 多 应 用程 序 就 是 用 C语 言 写 的 。 当 然 , 也 可 以 使 用 其他 语 言 。

在 Linux 系 统 中 存 在 多 种 桌 面 环 境 , 目 前 比 较有 名 的 是 KDE 和 GNOME。 红 旗 Linux 选 用 的 是 KDE 桌

• 106 •

Page 107: 预备篇 · Web viewOpen Office ——成熟的office应用套件,类似并兼容MS Office。包括了字处理、电子表格、演示文稿、公式编辑和绘图程序。字处理程序可以直接将文档转换为PDF格式。Perl——广受欢迎的解释性编程语言,适合于检索任意文本

第 1章 Linux 基 础面 , 而 GNOME已 经 成 为 Novell、 RedHat 企 业 发 行 版 的默 认 桌 面 , 更 偏 向 于 商 务 领 域 。 我 们 应 用 Linux桌 面 , 其 实 就 是 在 KDE 或 GNOME桌 面 上 进 行 应 用操 作 及 应 用 开 发 。1.9.1 GNOME的 开 发 结 构

只 使 用 Gtk+ 构 件 也 可 以 开 发 出 优 秀 的 Linux 应用 程 序 , 但 是 GNOME构 件 ( 特 别 是 GnomeApp、 GnomeUIInfo等 ) , 使 得 开 发 界 面 一 致 的 应 用 程 序 变 得 更 加容 易 。 GNOME的 一 些 新 特 性 , 如 popt参 数 分 析 、 保存 应 用 程 序 设 置 等 , 也 是 Gtk+ 构 件 所 没 有 的 。

GNOME的 应 用 程 序 开 发 结 构 核 心 是 一 套 库 ,都 是 由 通 用 的 ANSI C 语 言 编 写 的 , 并 且 倾 向 于 使用 在 类 UNIX 的 系 统 上 。 其 中 涉 及 图 形 的 库 依 赖于 X Window 系 统 。 GNOME差 不 多 对 任 何 语 言 都 提 供了 GNOME API 接 口 , 其 中 包 括Ada 、 Scheme 、 Python、 Perl 、 Tom、 Eiffel 、 Dylan 以 及 Objective C等 。 尽 管 这 里 只 介 绍 有 关 库 的 C语 言 接 口 , 不过 , 对 使 用 其 他 语 言 绑 定 的 用 户 来 说 , 它 也 很有 用 , 因 为 从 C 到 其 他 语 言 之 间 的 转 换 都 是 非常 直 接 的 。

GNOME的 开 发 架 构 包 含 以 下 一 些 内 容 。1. 非 GNOME库GNOME并 不 是 从 头 开 始 的 , 它 充 分 继 承 了 自

由 软 件 的 传 统 —— 其 中 许 多 内 容 来 自 于 GNOME项目 开 始 之 前 的 一 些 函 数 库 。 其 中 一 些 库 是 GNOME应 用 程 序 开 发 架 构 的 一 部 分 , 但 是 不 属 于 GNOME库 , 我 们 称 之 为 非 GNOME库 。 可 以 在 GNOME环 境 中使 用 这 些 库 函 数 , 主 要 有 :Glib、 Gtk+ 、 ORBit、 Imlib 等 。

ORBit是 一 个 用 C开 发 的 CORBA 2.2 ORB 。 和 其 他 ORB相 比 , 它 短 小 精 悍 , 但 速 度 更 快 , 同 时 还 支 持C语 言 映 射 。 ORBit是 以 一 整 套 库 函 数 的 方 式 实 现的 。 CORBA , 或 称 作 通 用 对 象 请 求 中 介 构 架(Common Object Request Broker Architecture), 是 一 套 对 象 请 求 中 介 ,或 称 为 ORB 的 规 范 。 一 个 ORB 更 类 似 于 动 态 链 接程 序 , 但 是 它 以 对 象 的 方 式 操 作 , 而 非 子 程 序

• 107 •

Page 108: 预备篇 · Web viewOpen Office ——成熟的office应用套件,类似并兼容MS Office。包括了字处理、电子表格、演示文稿、公式编辑和绘图程序。字处理程序可以直接将文档转换为PDF格式。Perl——广受欢迎的解释性编程语言,适合于检索任意文本

软件综合开发案例教程——Linux、GCC、MySQL、Socket、Gtk+与开源案例调 用 。 在 执 行 过 程 中 , 程 序 能 够 请 求 一 个 特 定的 对 象 服 务 。 ORB 可 定 位 对 象 , 并 且 创 建 对 象和 程 序 连 接 , 例 如 , 一 个 电 子 邮 件 程 序 可 以 请求 addressbook 对 象 , 并 且 利 用 它 查 找 人 名 。 与 动 态链 接 库 不 同 , CORBA 可 以 在 网 络 内 很 好 地 运 行 ,并 且 允 许 不 同 编 程 语 言 和 操 作 系 统 之 间 进 行 交互 。 如 果 熟 悉 Windows 操 作 系 统 下 的 DCOM , 那 么CORBA 与 之 类 似 。

Imlib ( 图 片 库 ) 提 供 一 些 例 程 , 其 中 包 括 加 载 、存 储 、 显 示 , 以 及 绘 制 各 种 流 行 图 像 格 式 ( 包括 GIF 、 JPEG 、 PNG 以 及 TIFF )的 函 数 。 它 包 括 两 种版 本 : Xlib-only 版 本 和 基 于 Gdk的 版 本 。 GNOME使 用的 是 Gdk版 本 。

2. GNOME 库下 面 所 介 绍 的 库 是 Gnome-libs包 的 一 部 分 , 并 且

是 专 门 为 GNOME项 目 开 发 的 。Libgnome : libgnome是 一 些 与 图 形 用 户 界 面 无 关 的

函 数 集 合 , GNOME应 用 程 序 可 以 调 用 其 中 的 函 数 。它 包 含 分 析 配 置 文 件 的 代 码 , 也 包 含 与 一 些 外部 实 用 程 序 的 接 口 , 比 如 国 际 化 编 程 接 口 ( 通过 GNU gettext 包 ) 、 变 量 解 析 ( 通 过 popt包 ) 、 声 音 编程 接 口 ( 通 过 Engligh tenmentDaemon , esound) 等 。 Gnome-libs包已 考 虑 了 与 外 部 库 之 间 的 交 互 , 因 此 程 序 员 无需 关 心 库 的 实 现 或 可 用 性 。

Libgnomeui : libGnomeui包 含 了 与 GUI相 关 的 GNOME代 码 。它 由 为 增 强 和 扩 展 Gtk+ 功 能 而 设 计 的 构 件 组 成 。GNOME构 件 通 常 使 用 用 户 接 口 策 略 , 以 提 供 更 方便 的 API 函 数 ( 这 样 程 序 员 需 要 指 定 的 东 西 较 少 ) 。当 然 , 这 也 让 应 用 程 序 界 面 更 一 致 。

libGnomeui主 要 包 含 :① GnomeApp 构 件 : 一 般 用 来 为 应 用 程 序 创 建 主

窗 口 。 它 使 用 GnomeDock 构 件 , 允 许 用 户 重 新 排 列工 具 栏 , 还 可 以 将 工 具 条 从 窗 口 上 移 走 。

② GnomeCanvas 构 件 : 用 来 编 写 复 杂 的 、 无 闪 烁的 定 制 构 件 。

③ GnomePixmap : 内 置 的 pixmap( 包 括 打 开 、 关 闭 、保 存 以 及 其 他 操 作 的 图 标 ) , 用 于 创 建 和 使 用对 话 框 的 例 程 。 GnomePixmap 构 件 比 GtkPixmap的 功 能 更

• 108 •

Page 109: 预备篇 · Web viewOpen Office ——成熟的office应用套件,类似并兼容MS Office。包括了字处理、电子表格、演示文稿、公式编辑和绘图程序。字处理程序可以直接将文档转换为PDF格式。Perl——广受欢迎的解释性编程语言,适合于检索任意文本

第 1章 Linux 基 础多 。

libgnomeui 中 还 有 几 种 其 他 构 件 , 如GnomeEntry 、 GnomeFilePicker 等 。 这 些 构 件 都 比 Gtk+ 构 件库 中 的 构 件 功 能 更 强 , 也 更 方 便 。

Libgnorba : libgnorba 提 供 与 CORBA 相 关 的 实 用 程 序 ,包 括 安 全 机 制 和 对 象 激 活 。 对 象 激 活 是 指 获 得实 现 给 定 接 口 对 象 的 引 用 过 程 , 它 包 括 执 行 服务 器 程 序 , 加 载 共 享 库 模 块 , 或 为 已 有 程 序 请求 新 的 对 象 实 例 等 。

Libzvt: 这 个 库 包 含 一 个 终 端 构 件 (ZvtTerm) , 可以 在 GNOME程 序 中 使 用 它 。

libart_lgp : 这 个 库 包 含 由 Raph Levien 编 写 的 图 形 绘制 例 程 。 在 这 里 包 含 的 是 在 LGPL 许 可 下 发 布 的 、用 在 GnomeCanvas 构 件 中 的 , Raph Levien 也 销 售 它 的 增强 版 本 。 实 质 上 , 它 是 一 个 矢 量 图 形 光 栅 图 形库 , 其 功 能 类 似 于 PostScript 语 言 。

3. 其 他 库这 些 库 一 般 用 在 GNOME应 用 程 序 中 , 但 它 不

是 Gnome-libs专 属 的 部 分 。Gnome-print: Gnome-print 目 前 还 是 实 验 性 的 , 但 是

非 常 有 前 途 。 它 使 用 libart_lgpl 库 , 可 以 和 GnomeCanvas一 起 工 作 得 很 好 。 它 提 供 一 个 虚 拟 输 出 设 备 ( 称 “ 打 印 上 下 文 ” ) , 因 此 一 段 代 码 能 输 出 到一 个 打 印 预 览 构 件 或 PostScript 文 件 , 还 可 以 输 出为 其 他 打 印 机 格 式 。 Gnome-print 也 包 含 与 打 印 相 关的 GUI元 素 , 例 如 打 印 设 置 对 话 框 、 虚 拟 字 体 接口 ( 处 理 X字 体 不 可 打 印 的 问 题 ) 。

Gnome-xml : Gnome-xml 是 还 未 经 验 证 的 XML 引 擎 ,它 由 WWW协 会 的 Daniel Veillard 编 写 。 它 能 按 照 树 状 结构 分 析 XML , 也 能 按 照 XML 输 出 树 状 结 构 。 它对 任 何 需 要 加 载 和 保 存 结 构 化 数 据 的 应 用 程 序来 说 是 很 有 用 的 , 许 多 GNOME应 用 程 序 把 它 作 为文 件 格 式 使 用 。 这 个 库 不 依 赖 任 何 其 他 的 库( 甚 至 glib), 所 以 它 只 是 在 名 义 上 是 一 个 GNOME库 。然 而 , 可 以 认 为 大 多 数 GNOME用 户 都 安 装 了 它 ,因 此 , 如 果 应 用 程 序 使 用 了 这 个 库 , 对 用 户 来说 也 没 有 什 么 不 方 便 。

Guile : Guile 是 Scheme 编 程 语 言 在 一 个 库 中 的 实

• 109 •

Page 110: 预备篇 · Web viewOpen Office ——成熟的office应用套件,类似并兼容MS Office。包括了字处理、电子表格、演示文稿、公式编辑和绘图程序。字处理程序可以直接将文档转换为PDF格式。Perl——广受欢迎的解释性编程语言,适合于检索任意文本

软件综合开发案例教程——Linux、GCC、MySQL、Socket、Gtk+与开源案例现 , 它 使 任 何 应 用 程 序 都 能 带 有 一 个 嵌 入 式 的Sheme解 释 器 。 它 是 GNU 项 目 的 正 式 扩 展 语 言 , 并且 有 一 些 GNOME应 用 程 序 也 使 用 它 。 为 应 用 程 序添 加 扩 展 语 言 听 起 来 挺 复 杂 , 但 是 有 了 Guile 后就 很 方 便 了 。 一 些 GNOME应 用 程 序 也 支 持 Perl 和Python, 所 以 一 旦 实 现 了 应 用 程 序 , 同 时 支 持 几种 语 言 就 会 变 得 很 容 易 。 Guile 在 GNOME开 发 者 心目 中 有 着 特 殊 的 地 位 。

Bonobo : Bonobo 是 一 种 对 象 嵌 入 式 结 构 , 类 似于 Microsoft 的 OLE 。 例 如 , 它 允 许 在 电 子 表 格 中 嵌入 图 表 。 它 将 在 GNOME中 普 遍 使 用 。 任 何 应 用 程序 都 能 通 过 适 当 的 Bonobo 组 件 调 用 GNOME库 , 显 示MIME类 型 数 据 , 例 如 纯 文 本 、 HTML或 图 像 。1.9.2 开 发 Linux应 用 程 序 的 编 程 语 言 和 编 程 工 具

因 为 Gtk+ 和 GNOME是 用 C 语 言 编 写 的 , 所 以 在开 发 Linux 下 的 GUI程 序 时 , 使 用 C语 言 是 非 常 方 便的 。 但 是 Gtk+ 也 提 供 与 许 多 其 他 语 言 的 接 口 ,如 Ada 、 Scheme 、 Python、 Perl 、 Tom、 Eiffel 、 Dylan 以 及Objective C 等 。 如 果 用 C++语 言 开 发 基 于 Gtk+ 应 用 程序 , 可 以 使 用 一 个 名 为 Gtk-- 的 函 数 库 , 它 是 GTK工 具 包 的 C++ 风 格 的 封 装 。 如 果 要 用 Gtk+ 库 和 其他 语 言 , 最 好 参 考 相 应 的 文 档 。 这 里 只 介 绍 使用 C语 言 开 发 Linux 程 序 。

一 般 的 Linux 发 布 版 本 中 都 提 供 了 C编 译 器 GCC或 egcs。 使 用 GCC 或 egcs可 以 编 译 C和 C++源 代 码 , 编译 出 的 目 标 代 码 质 量 非 常 好 , 编 译 速 度 也 很 快 。

各 种 C 编 译 器 都 要 使 用 一 些 C 语 言 实 用 函 数 。为 了 保 证 程 序 的 可 移 植 性 , gcc 没 有 使 用 通 用 的C 函 数 库 , 而 是 使 用 一 种 称 为 glib 的 函 数 库 。 glib也 是 Gtk+ 的 基 础 。 它 包 含 一 些 标 准 函 数 的 替 代函 数 ( 如 字 符 串 处 理 函 数 ) 和 基 本 数 据 结 构 的 实现 ( 单 向 链 表 、 双 向 链 表 、 树 、 哈 希 表 等 ) 。

glib 中 所 包 含 的 函 数 消 除 了 某 些 函 数 的 安 全漏 洞 , 使 其 更 加 可 靠 , 并 且 在 不 同 平 台 上 移 植也 更 加 方 便 。

还 有 许 多 工 具 可 以 提 高 Linux 下 的 编 程 效 率 :如 GDB 是 优 秀 的 C语 言 调 试 器 , 有 非 常 丰 富 的 调

• 110 •

Page 111: 预备篇 · Web viewOpen Office ——成熟的office应用套件,类似并兼容MS Office。包括了字处理、电子表格、演示文稿、公式编辑和绘图程序。字处理程序可以直接将文档转换为PDF格式。Perl——广受欢迎的解释性编程语言,适合于检索任意文本

第 1章 Linux 基 础试 指 令 ; automake 和 autoconf 用 于 由 源 代 码 结 构 配 置编 译 选 项 , 生 成 编 译 所 需 的 makefile 文 件 。

到 目 前 为 止 , 还 没 有 像 Windows 平 台 上 的 Visual Basic 、 Delphi等 一 样 的 、 可 视 化 的 快 速 应 用 程 序 开发 工 具 。 开 发 Linux 应 用 需 要 用 文 本 编 辑 器 书 写源 代 码 , 然 后 再 用 编 译 器 生 成 应 用 程 序 。 有 几种 正 在 开 发 的 RAD(Rapid Application Development , 快 速 应 用开 发 ) 工 具 , 其 中 最 有 希 望 的 是 Glade—— 一 种 GUI生成 器 , 可 以 快 速 生 成 创 建 界 面 的 C源 程 序 。

Glade 是 一 个 GNOME桌 面 环 境 下 用 于 开 发 Gtk+ 的RAD 工 具 。 它 的 界 面 与 GIMP 非 常 类 似 , 可 以 被 用户 定 制 化 , 甚 至 可 以 被 嵌 入 到 界 面 开 发 的 环 境中 。

Glade 包 含 许 多 界 面 创 建 控 件 , 诸 如 文 本 框 、对 话 标 签 、 数 字 输 入 框 和 菜 单 等 , 让 你 可 以 更快 速 地 开 发 界 面 。 界 面 设 计 以 XML 格 式 存 储 ,从 而 让 这 些 设 计 可 以 轻 松 地 应 用 于 外 部 工 具 中 。

安 装 Glade 的 过 程 非 常 简 单 。 举 例 来 说 , 如 果你 使 用 Fedora操 作 系 统 , 你 可 以 使 用 命 令 “ yum install glade3” 来 启 动 安 装 。 Glade 不 像 有 些 集 成 开 发 环 境那 样 具 有 一 个 强 大 的 项 目 管 理 器 , 但 是 你 可 以在 Glade 中 创 建 、 编 辑 和 保 存 项 目 。

1.10 Linux虚拟机及其应用如 果 是 新 手 而 且 想 多 系 统 共 存 的 话 , 安 装

Linux 可 能 会 有 点 难 。 对 于 初 学 者 , 建 议 尝 试 使用 虚 拟 机 VMware或 Cygwin 。1.10.1 VMware 虚 拟 机

VMware 是 一 个 “ 虚 拟 PC”软 件 。 它 可 以 使 你 在一 台 机 器 上 同 时 运 行 两 个 或 更 多 个 的Windows 、 DOS 、 Linux 系 统 。 与 “ 多 启 动 ” 系 统 相比 , VMware采 用 了 完 全 不 同 的 概 念 。 多 启 动 系 统在 一 个 时 刻 只 能 运 行 一 个 系 统 , 在 系 统 切 换 时需 要 重 新 启 动 机 器 。 VMware是 真 正 “ 同 时 ” 运 行 :多 个 操 作 系 统 在 主 系 统 的 平 台 上 , 可 以 像 标 准

• 111 •

Page 112: 预备篇 · Web viewOpen Office ——成熟的office应用套件,类似并兼容MS Office。包括了字处理、电子表格、演示文稿、公式编辑和绘图程序。字处理程序可以直接将文档转换为PDF格式。Perl——广受欢迎的解释性编程语言,适合于检索任意文本

软件综合开发案例教程——Linux、GCC、MySQL、Socket、Gtk+与开源案例的 Windows 应 用 程 序 那 样 进 行 切 换 。 而 且 对 每 个操 作 系 统 都 可 以 进 行 虚 拟 的 分 区 、 配 置 , 而 不影 响 真 实 硬 盘 的 数 据 , 甚 至 可 以 通 过 网 卡 将 几台 虚 拟 机 连 接 为 一 个 局 域 网 , 极 其 方 便 。 安 装在 VMware上 的 操 作 系 统 , 性 能 比 直 接 安 装 在 硬 盘上 的 系 统 低 不 少 , 因 此 , 比 较 适 合 学 习 和 测 试 。

VMware 作 为 一 个 虚 拟 机 软 件 , 是 在 现 有 的 操作 系 统 上 虚 拟 出 一 个 新 的 子 机 。 这 个 子 机 一 方面 是 建 立 在 你 正 在 运 行 的 操 作 系 统 之 上 的 , 另一 方 面 , 它 又 拥 有 自 己 独 立 的 CPU 、 硬 盘 、 内存 及 各 个 硬 件 。 当 然 , 这 些 都 是 虚 拟 出 来 的 。虚 拟 子 机 的 CPU 是 通 过 i386的 保 护 模 式 实 现 的 ,虚 拟 的 硬 盘 其 实 就 是 母 机 上 的 一 个 文 件 , 内 存当 然 是 从 物 理 中 划 出 一 块 , 别 的 ( 如 网 络 设 备 )也 都 是 通 过 某 种 途 径 实 现 的 。

VMware产 品 的 主 要 功 能 有 : (a) 不 需 要 分 区 或 重 开 机 , 就 能 在 同 一 台 PC

上 使 用 两 种 以 上 的 操 作 系 统 。 (b) 完 全 隔 离 , 并 且 保 护 不 同 OS 的 操 作 环 境

以 及 所 有 安 装 在 OS 上 面 的 应 用 软 件 和 资 料 。 (c) 不 同 的 OS 之 间 还 能 互 动 操 作 , 包 括 网 络 、

周 边 、 文 件 分 享 以 及 复 制 粘 贴 功 能 。(d) 有 还 原 (Undo) 功 能 。

(e) 能 够 设 定 并 且 随 时 修 改 操 作 系 统 的 操 作环 境 , 如 : 内 存 、 磁 碟 空 间 、 周 边 设 备 , 等等 。

(f) 热 迁 移 , 高 可 用 性 。当 然 , 我 们 要 清 楚 , VMware是 商 用 软 件 。1. VMware的 下 载 及 安 装可 以 从 许 多 软 件 下 载 网 站 得 到 VMware 的 安 装

程 序 , 比 如 www.VMware.com(VMware 的 大 本 营 ) 和www.VMware.cn(中 国 虚 拟 机 论 坛 ) 。 但 要 注 意 的 是 ,安 装 程 序 有 for Windows 和 for Linux之 分 , 请 下 载 正 确 的版 本 。

2. 建 立 虚 拟 机我 们 以 在 Windows XP 下 安 装 虚 拟 机 为 例 , 介 绍

• 112 •

Page 113: 预备篇 · Web viewOpen Office ——成熟的office应用套件,类似并兼容MS Office。包括了字处理、电子表格、演示文稿、公式编辑和绘图程序。字处理程序可以直接将文档转换为PDF格式。Perl——广受欢迎的解释性编程语言,适合于检索任意文本

第 1章 Linux 基 础虚 拟 机 的 建 立 过 程 。 VMware 下 安 装 Linux 的 过 程 ,实 际 是 我 们 在 Windows XP 中 ( 宿 主 计 算 机 ) 再 虚 拟 出一 台 电 脑 ( 虚 拟 机 ) , 并 在 上 面 安 装 Linux 系 统 。这 样 , 你 就 可 以 放 心 大 胆 地 进 行 各 种 Linux 练 习 ,而 不 用 担 心 操 作 不 当 导 致 宿 主 机 系 统 崩 溃 了 。并 且 你 可 以 举 一 反 三 , 将 一 台 电 脑 变 成 三 台 、四 台 , 再 分 别 安 装 上 其 他 系 统 。 ( 运 行 虚 拟 机软 件 的 操 作 系 统 叫 Host OS , 在 虚 拟 机 里 运 行 的 操作 系 统 叫 Guest OS) 。

(1) 启 动 VMware , 如 图 1-9 所 示 , 在 其 主 界 面 上单 击 New Virtual Machine( 新 建 虚 拟 机 ) 按 钮 以 打 开 新 建向 导 。

图1-9 虚拟机新建向导(2) 单 击 Next( 下 一 步 ) 按 钮 , 进 入 虚 拟 机 配 置

界 面 ( 参 见 图 1-10) 。这 里 有 两 个 选 择 : 一 是 Typical( 典 型 ) 方 式 , 它

根 据 虚 拟 机 的 用 途 自 动 调 整 配 置 ; 二 是 Custom( 自定 义 ) 方 式 , 它 允 许 用 户 自 行 设 置 虚 拟 机 的 主要 参 数 。 典 型 方 式 要 比 自 定 义 方 式 简 单 , 但 缺少 一 定 的 灵 活 性 。 为 了 方 便 起 见 , 这 里 我 们 选择 典 型 方 式 。

• 113 •

Page 114: 预备篇 · Web viewOpen Office ——成熟的office应用套件,类似并兼容MS Office。包括了字处理、电子表格、演示文稿、公式编辑和绘图程序。字处理程序可以直接将文档转换为PDF格式。Perl——广受欢迎的解释性编程语言,适合于检索任意文本

软件综合开发案例教程——Linux、GCC、MySQL、Socket、Gtk+与开源案例

图1-10 虚拟机配置界面(3) 单 击 “ 下 一 步 ” 按 钮 , 进 入 虚 拟 机 操 作

系 统 选 择 界 面 ( 参 见 图 1-11) 。

图1-11 操作系统选择界面可 以 看 到 Windows 、 Linux 、 Novell等 多 种 不 同 的 系

统 , 这 里 我 们 选 中 “ Linux” 。 Linux 又 分 为 多 种 版本 , 这 里 我 们 选 择 “ Red Hat Enterprise Linux 4” 项 。

(4) 单 击 “ 下 一 步 ” , 在 接 下 来 的 界 面 中 ,可 以 为 这 个 新 的 虚 拟 机 取 一 个 名 称 , 并 在Location( 位 置 ) 中 选 择 虚 拟 机 的 保 存 位 置 ( 参 见 图 1-12) 。

• 114 •

Page 115: 预备篇 · Web viewOpen Office ——成熟的office应用套件,类似并兼容MS Office。包括了字处理、电子表格、演示文稿、公式编辑和绘图程序。字处理程序可以直接将文档转换为PDF格式。Perl——广受欢迎的解释性编程语言,适合于检索任意文本

第 1章 Linux 基 础

图1-12 给虚拟机命名每 个 虚 拟 机 都 会 产 生 多 个 特 别 格 式 的 文 件 ,

所 以 最 好 为 每 个 虚 拟 机 创 建 一 个 单 独 的 文 件 夹如 Linux 就 放 到 “ Linux” 文 件 夹 、 Windows 98 就 放 到“ Win98” 文 件 夹 中 , 这 样 便 于 以 后 备 份 和 恢 复 虚拟 机 。

(5) 单 击 “ 下 一 步 ” , 选 择 网 络 连 接 方 式 ( 参见 图 1-13)

在 网 络 类 型 界 面 中 共 有 4 个 选 项 : Use bridged networking( 使 用 桥 接 网 络 ) 、 Use network address translation(NAT)( 使用 网 络 地 址 翻 译 (NAT)) 、 Use host-only networking( 仅 使 用 主机 网 络 ) 和 Do not use a network connection( 不 使 用 网 络 连 接 ) 。网 络 连 接 方 式 以 后 可 以 随 时 修 改 , 因 此 在 这 里可 先 任 意 选 一 种 。

(6) 单 击 “ 下 一 步 ” , 配 置 硬 盘 大 小 ( 参 见 图1-14) 。

软 件 默 认 大 小 为 4GB, 可 根 据 硬 盘 现 有 空 间的 实 际 情 况 增 大 或 减 小 。 最 后 单 击 “ 完 成 ” 按钮 返 回 VMware主 界 面 , 将 看 到 主 界 面 上 多 了 一 个“ Red Hat Linux”标 签 页 , 其 中 显 示 了 这 台 新 建 虚 拟机 的 各 种 配 置 。

(7) 在 虚 拟 机 上 安 装 Linux 操 作 系 统 ( 参 见 图 1-15) 。

为 这 台 虚 拟 机 安 装 上 Linux 操 作 系 统 , 让 它 像真 正 的 计 算 机 一 样 工 作 。 安 装 之 前 , 先 要 设 置一 下 虚 拟 机 的 光 驱 。 在 界 面 中 , 双 击 Devices( 设备 ) 下 的 CD-ROM 项 , 打 开 配 置 窗 口 。

• 115 •

Page 116: 预备篇 · Web viewOpen Office ——成熟的office应用套件,类似并兼容MS Office。包括了字处理、电子表格、演示文稿、公式编辑和绘图程序。字处理程序可以直接将文档转换为PDF格式。Perl——广受欢迎的解释性编程语言,适合于检索任意文本

软件综合开发案例教程——Linux、GCC、MySQL、Socket、Gtk+与开源案例

图 1-13 选 择 网 络 连 接 方 式 图1-14 配置虚拟机硬盘空间

图1-15 Linux 操作系统的安装本 例 使 用 的 是 Linux 安 装 光 盘 , 因 此 选 中 Use

physical drive( 使 用 物 理 驱 动 器 ) 单 选 按 钮 , 并 在 下 拉列 表 中 选 择 正 确 的 光 驱 盘 符 ( 本 例 中 的 光 驱 盘符 为 “ J”) ; 如 果 是 从 网 上 下 载 的 ISO 安 装 映 像 文件 , 则 选 中 Use ISO image( 使 用 ISO 映 像 ) 项 , 并 通 过Browse...( 浏 览 ) 按 钮 选 择 下 载 所 得 的 安 装 映 像 文 件 。设 置 完 毕 , 单 击 OK(确 定 ) 按 钮 。

(8) 启 动 虚 拟 机 ( 参 见 图 1-16) 。

• 116 •

Page 117: 预备篇 · Web viewOpen Office ——成熟的office应用套件,类似并兼容MS Office。包括了字处理、电子表格、演示文稿、公式编辑和绘图程序。字处理程序可以直接将文档转换为PDF格式。Perl——广受欢迎的解释性编程语言,适合于检索任意文本

第 1章 Linux 基 础

图1-16 启动虚拟机将 Red Hat Linux 安 装 光 盘 放 入 光 驱 中 ( 如 果 选 中

“ 使 用 ISO 映 像 ” 方 式 , 则 不 需 此 步 骤 ) , 单 击主 界 面 Commands( 命 令 ) 中 的 start this virtual machine( 启 动 这 个虚 拟 机 ) , 或 直 接 单 击 工 具 栏 上 的 绿 色 三 角 形按 钮 , 这 就 像 打 开 了 真 实 电 脑 的 电 源 开 关 一 样启 动 虚 拟 机 。 注 意 : 如 果 物 理 内 存 紧 张 , 则 会弹 出 一 个 提 示 框 , 提 示 虚 拟 机 会 占 用 大 量 内 存单 击 “ 确 定 ” 按 钮 即 可 。 如 果 选 中 了 “ 不 再 显示 ” 复 选 框 , 则 下 次 这 个 提 示 就 不 会 再 出 现 了 。

窗 口 全 黑 后 , 一 定 要 用 鼠 标 在 中 间 单 击 一下 , 以 切 换 到 虚 拟 机 中 。 VMware模 拟 的 是 Phoenix 的BIOS , 连 续 按 下 “ F2” 键 直 到 进 入 BIOS 设 置 界 面 ,按 左 右 箭 头 键 选 中 BOOT菜 单 项 , 再 按 上 下 箭 头键 选 中 CD-ROM Drive项 , 然 后 按 “ + ” 键 将 其 调 到最 顶 层 , 这 样 即 可 将 光 驱 设 置 成 优 先 启 动 。 按“ F10” 键 并 回 车 , 即 可 保 存 BIOS 设 置 并 退 出 , 虚拟 机 即 可 启 动 Linux 安 装 程 序 进 行 安 装 了 。 单 击工 具 栏 上 倒 数 第 二 个 按 钮 , 可 使 虚 拟 机 全 屏 显示 , 这 样 看 起 来 会 更 加 酷 。

要 注 意 的 是 , 如 果 宿 主 机 的 内 存 配 置 较 大 ,我 们 可 以 将 虚 拟 机 的 内 存 从 256MB 调 到 512MB 或 1GB以 上 ( 前 提 是 要 给 宿 主 操 作 系 统 预 留 一 些 内 存 ,让 它 能 正 常 工 作 ) , 这 样 能 够 有 效 地 提 高 虚 拟机 的 运 行 速 度 和 运 行 效 率 。

• 117 •

Page 118: 预备篇 · Web viewOpen Office ——成熟的office应用套件,类似并兼容MS Office。包括了字处理、电子表格、演示文稿、公式编辑和绘图程序。字处理程序可以直接将文档转换为PDF格式。Perl——广受欢迎的解释性编程语言,适合于检索任意文本

软件综合开发案例教程——Linux、GCC、MySQL、Socket、Gtk+与开源案例Linux 安 装 与 使 用 是 一 个 很 大 的 话 题 , 限 于 篇

幅 , 这 里 就 不 介 绍 了 。 不 过 可 以 肯 定 的 是 , 虚拟 机 实 际 上 就 是 几 个 较 特 别 的 文 件 而 已 , 所 有操 作 改 变 的 只 是 这 几 个 文 件 的 数 据 , 不 会 影 响到 现 有 操 作 系 统 , 所 以 可 以 放 心 地 通 过 Linux 学习 和 应 用 虚 拟 机 。

3. 安 装 VMware Tools

虚 拟 机 安 装 Red Hat 7.3 时 , 在 状 态 栏 中 一 直 提醒 你 安 装 VMware Tools 。 因 为 虚 拟 机 是 默 认 使 用 自带 的 虚 拟 显 卡 , 只 有 正 确 安 装 了 VMware Tools 后 ,才 能 在 虚 拟 机 中 正 确 启 动 Red Hat 操 作 系 统 , 并正 确 设 置 显 卡 以 及 显 示 器 的 分 辨 率 等 参 数 。

注 意 : 在 安 装 好 Linux 后 再 进 行 此 项 操 作 。(1) 重 新 启 动 虚 拟 机 , 单 击 VM->VMware Tools Install( 安

装 VMware工 具 ) , 在 弹 出 的 菜 单 中 单 击 Install , 安 装VMware工 具 。

(2) 单 击 Devices(设 备 ) 菜 单 , 你 会 发 现 光 驱 的 菜单 项 由 IDE:0 变 成 了 IDE:0>F:\ program Files\VMware\Vmware Workstation\Programs\Linux.ISO, 这 表 示 VMware将 Linux 的 ISO 映 像 文 件 当成 了 虚 拟 机 的 光 盘 。

(3) 其 实 , 这 时 并 没 有 真 正 地 安 装 上 VMware Tools软 件 包 , 还 须 进 一 步 设 置 。 进 入 文 本 登 录 界 面中 , 输 入 管 理 员 用 户 名 (ROOT) 和 密 码 , 进 入ROOT@LOCALHOST ROOT 目 录 下 。

(4) 在 命 令 行 后 面 输 入 如 下 命 令 ( 注 意 大 小 写和 空 格 , 每 行 命 令 后 要 记 住 回 车 ) 。

mount -t iso9660 /dev/cdrom /mnt (加载 CDROM 设备,并且CDROM 为只读属性 )

cp /mnt/vmware-linux-tools.tar.gz /tmp ( 将该软件包拷 贝到LINUX的TMP目录下 )

umount /dev/cdrom ( 卸载 CDROM)

cd /tmp ( 进入TMP目录 )

tar zxf vmware-linux-tools.tar.gz ( 解压该软件包 )

cd vmware-linux-tools ( 进入解压后的目录 )

./install.pl ( 运行安装命令,系统开始安装vmware tools)

(5) 在 屏 幕 的 提 示 下 , 连 续 回 车 两 次 后 , 系统 安 装 完 VMware Tools 。 在 命 令 行 中 输 入 startx 命 令 ,启 动 Red Hat , 进 入 图 形 界 面 。

• 118 •

Page 119: 预备篇 · Web viewOpen Office ——成熟的office应用套件,类似并兼容MS Office。包括了字处理、电子表格、演示文稿、公式编辑和绘图程序。字处理程序可以直接将文档转换为PDF格式。Perl——广受欢迎的解释性编程语言,适合于检索任意文本

第 1章 Linux 基 础4. 设 置 显 示 器 的 分 辨 率这 时 虚 拟 机 显 示 器 的 分 辨 率 高 于 本 机 。 由

于 两 机 显 示 器 的 分 辨 率 的 不 同 将 造 成 图 形 窗 口的 大 小 不 一 致 , 在 本 机 与 虚 拟 机 之 间 相 互 切 换时 就 很 不 方 便 , 所 以 要 重 新 设 置 虚 拟 机 显 示 器的 分 辨 率 。

(1) 在 命 令 行 中 键 入 cd /etc/X11(X 为 大 写 ) 。进 入 配 置 文 件 所 在 的 目 录 , 同 时 输 入 mc 命令 。

(2) 进 入 MC 编 辑 器 , 用 上 下 箭 头 将 光 标 移 动到 XF86Config-4.vm文 件 , 按 下 [F4]键 , 这 时 将 出 现 一 个文 本 窗 口 , 里 面 显 示 了 配 置 信 息 。

(3) 显 示 的 配 置 信 息 一 般 在 Screen Section 标 题 后 面可 找 到 它 。

(4) 找 到 显 示 器 的 分 辨 率 之 后 , 将 Modes中 高 于本 机 的 MS Windows所 用 的 分 辨 率 全 部 删 除 , 删 除 务必 从 高 分 辨 率 向 低 分 辨 率 删 除 , 以 免 出 现 漏 洞

(5) 保 存 修 改 的 信 息 , 退 到 X11目 录 下 , 输 入startx 进 入 图 形 界 面 , 虚 拟 机 内 的 操 作 系 统 的 分辨 率 就 发 生 了 改 变 。

5. 虚 拟 机 与 宿 主 机 文 件 资 源 共 享一 些 硬 件 资 源 , 例 如 光 驱 、 软 驱 以 及 USB 设

备 等 资 源 , 虚 拟 机 和 宿 主 机 是 自 动 共 享 的 , 也就 是 说 , 外 部 可 以 读 取 光 驱 里 的 光 盘 , 而 虚 拟机 同 时 也 能 读 取 光 驱 里 的 光 盘 , 两 者 是 一 样的 。

如 果 要 进 行 文 件 传 输 , 则 可 以 使 用 以 下 4 种方 法 :

(a) 使 用 共 享 的 硬 件 资 源 , 譬 如 外 部 可 以 将数 据 拷 贝 到 USB 移 动 设 备 上 , 然 后 虚 拟 机 从 移动 设 备 上 读 取 。

(b) 使 用 网 络 连 接 , 虚 拟 机 在 系 统 中 建 立 了一 些 虚 拟 网 卡 设 备 , 这 些 设 备 有 自 己 的 IP地 址 ,外 部 可 以 通 过 这 些 IP地 址 与 虚 拟 机 进 行 通 信 。譬 如 外 部 架 设 一 个 FTP服 务 器 , 则 虚 拟 机 可 以 连

• 119 •

Page 120: 预备篇 · Web viewOpen Office ——成熟的office应用套件,类似并兼容MS Office。包括了字处理、电子表格、演示文稿、公式编辑和绘图程序。字处理程序可以直接将文档转换为PDF格式。Perl——广受欢迎的解释性编程语言,适合于检索任意文本

软件综合开发案例教程——Linux、GCC、MySQL、Socket、Gtk+与开源案例接 到 这 个 FTP服 务 器 上 , 并 读 取 信 息 。

在 弹 出 的 对 话 框 里 , 可 以 将 虚 拟 机 中 的 分区 映 射 到 外 部 , 如 图 1-17、 1-18所 示 。

图1-17 启动虚拟机的map 配置功能

图1-18 将虚拟机上的分区映射到外部系统Z 分区上(c) 使 用 虚 拟 机 自 带 的 map功 能 , 可 以 将 虚 拟

机 上 的 分 区 映 射 到 外 部 系 统 上 , 并 分 配 盘 符 。具 体 使 用 方 法 是 : 打 开 某 个 虚 拟 机 的 设 置 界 面单 击 hard disk 选 择 硬 盘 的 设 计 页 面 , 然 后 单 击Utilities=>map 选 择 map功 能 。

(d) 文 件 夹 共 享 。 安 装 完 VMware Tools 软 件 包 后( 首 先 下 载 VMware Tools , 然 后 选 择 VM=>Install VMware Tools) , 可 通 过 虚 拟 机 主 界 面 进 行 相 应 的 操 作 ,选 择 VM=>Settings , 双 击 shared folders, 在 旁 边 添 加 文 件夹 , 并 选 择 always enable。

• 120 •

Page 121: 预备篇 · Web viewOpen Office ——成熟的office应用套件,类似并兼容MS Office。包括了字处理、电子表格、演示文稿、公式编辑和绘图程序。字处理程序可以直接将文档转换为PDF格式。Perl——广受欢迎的解释性编程语言,适合于检索任意文本

第 1章 Linux 基 础6. 网 络 连 接 配 置1) VMware 虚 拟 设 备VMware 有 如 下 几 个 虚 拟 设 备 : (a) VMnet0: 这 是 VMware 用 于 虚 拟 Bridge网 络 下 的 虚

拟 交 换 机 ; (b) VMnet1: 这 是 VMware 用 于 虚 拟 Host-Only 网 络 下 的

虚 拟 交 换 机 ; (c) VMnet8: 这 是 VMware 用 于 虚 拟 NAT 网 络 下 的 虚

拟 交 换 机 ;(d) VMware Network Adapter VMnet1 : 这 是 Host 用 于 与 Host-Only

虚 拟 网 络 进 行 通 信 的 虚 拟 网 卡 ;(e) VMware Network Adapter VMnet8 : 这 是 Host 用 于 与 NAT 虚

拟 网 络 进 行 通 信 的 虚 拟 网 卡 ;2) Vmware 网 络 连 接(a) Bridge 模 式 ( 桥 接 模 式 , 如 图 1-19所 示 )这 种 模 式 是 在 新 建 虚 拟 机 的 时 候 默 认 选 择

的 , 是 将 虚 拟 主 机 的 虚 拟 网 卡 桥 接 到 一 个 Host主机 的 物 理 网 卡 上 面 , 实 际 上 是 将 Host主 机 的 物 理网 卡 设 置 为 混 杂 模 式 , 从 而 达 到 侦 听 多 个 IP的能 力 。 在 这 种 模 式 下 , 虚 拟 主 机 的 虚 拟 网 卡 直接 与 Host主 机 的 物 理 网 卡 所 在 的 网 络 相 连 。 可 以理 解 为 虚 拟 机 和 Host主 机 处 于 对 等 的 地 位 , 在 网络 关 系 上 是 平 等 的 , 没 有 谁 主 谁 次 、 谁 前 谁 后之 分 。

图1-19 Bridge 模式工作原理图(b) NAT 模 式 ( 网 络 地 址 翻 译 模 式 , 如 图 1-20所

示 )在 这 种 模 式 下 , Host主 机 的 “ 网 络 连 接 ” 中

• 121 •

Page 122: 预备篇 · Web viewOpen Office ——成熟的office应用套件,类似并兼容MS Office。包括了字处理、电子表格、演示文稿、公式编辑和绘图程序。字处理程序可以直接将文档转换为PDF格式。Perl——广受欢迎的解释性编程语言,适合于检索任意文本

软件综合开发案例教程——Linux、GCC、MySQL、Socket、Gtk+与开源案例会 出 现 一 个 虚 拟 的 网 卡 VMnet8( 默 认 情 况 下 ) 。 Host主 机 上 的 VMnet8 虚 拟 网 卡 就 相 当 于 连 接 到 内 网 的网 卡 , Host主 机 上 的 物 理 网 卡 就 相 当 于 连 接 到 外网 的 网 卡 , 而 虚 拟 机 本 身 则 相 当 于 运 行 在 内 网上 的 计 算 机 , 虚 拟 机 内 的 虚 拟 网 卡 则 独 立 于Virtual Ethernet Switch(VMnet8) 。 在 这 种 方 式 下 , VMware 自 带的 DHCP服 务 会 默 认 地 加 载 到 Virtual Ethernet Switch(VMnet8) 上 ,这 样 虚 拟 机 就 可 以 使 用 DHCP服 务 。

因 此 , 如 果 你 想 使 用 主 机 的 拨 号 网 络 连 接到 Internet 或 者 其 他 TCP/IP 网 络 , 而 这 时 又 不 能 在 外部 网 络 上 给 定 虚 拟 机 的 IP地 址 , 就 可 用 这 种 方式 让 你 的 虚 拟 机 非 常 容 易 地 访 问 该 网 络 。 虚 拟机 在 外 部 网 络 上 是 不 拥 有 它 自 己 的 IP地 址 的 ,相 反 , 是 在 主 机 上 安 装 有 一 个 单 独 的 私 有 网 络虚 拟 机 从 VMware 虚 拟 DHCP服 务 器 上 获 取 该 网 络 的一 个 地 址 。

图1-20 Nat 模式工作原理图设 置 : 在 Internet 协 议 (TCP/IP)的 属 性 中 选 择 “ 自

动 分 配 ” 。 虚 拟 机 能 和 主 机 共 享 网 络 , 但 主 机连 接 到 网 络 时 ping不 到 虚 拟 机 , 而 虚 拟 机 能 ping到主 机 。

(c) Host-Only模 式 ( 仅 为 主 机 网 络 模 式 , 如 图 1-21所示 )

这 种 模 式 是 一 种 封 闭 的 方 式 , 适 合 在 一 个独 立 的 环 境 中 进 行 各 种 网 络 实 验 。 这 种 方 式 下Host主 机 的 “ 网 络 连 接 ” 中 出 现 了 一 个 虚 拟 的 网卡 VMnet1( 默 认 情 况 下 ) 。 和 NAT 唯 一 不 同 的 是 : 此种 方 式 下 , 没 有 地 址 转 换 服 务 。 因 此 这 种 情 况下 , 虚 拟 机 只 能 访 问 到 主 机 , 这 也 是 Host-Only 名称 的 意 义 。

• 122 •

Page 123: 预备篇 · Web viewOpen Office ——成熟的office应用套件,类似并兼容MS Office。包括了字处理、电子表格、演示文稿、公式编辑和绘图程序。字处理程序可以直接将文档转换为PDF格式。Perl——广受欢迎的解释性编程语言,适合于检索任意文本

第 1章 Linux 基 础在 这 种 网 络 连 接 模 式 下 , 虚 拟 机 通 过 它 在

一 个 虚 拟 私 有 网 络 上 被 连 接 到 主 机 操 作 系 统 ,正 常 情 况 下 , 它 对 于 主 机 外 部 是 不 可 见 的 。 在同 一 台 主 机 上 使 用 Host-Only 配 置 的 多 台 虚 拟 机 是在 同 一 个 网 络 上 。

图1-21 Host-Only模式工作原理图设 置 : 手 动 配 置 IP地 址 , 如 IP: 192.168.0.2, 子 网

掩 码 : 255.255.255.0 , 默 认 网 关 : 192.168.0.1。 并 且 在“ 本 地 连 接 属 性 ” 的 “ 高 级 ” 选 项 中 允 许 连 接共 享 , “ 家 庭 网 络 连 接 ” 选 择 “ VMware Network Adapter VMnet1” 。 虚 拟 机 不 能 与 主 机 共 享 网 络 , 且 主 机连 接 到 网 络 时 ping不 到 虚 拟 机 , 而 虚 拟 机 能 ping到主 机 。

(d) 用 于 虚 拟 私 有 网 络 的 网 络 地 址虚 拟 私 有 网 络 VPN(Virtual Private Network)是 实 现 在 公 网

上 安 全 传 输 私 有 网 络 信 息 的 一 种 技 术 , 为 我 们提 供 了 一 种 通 过 公 用 网 络 安 全 地 对 企 业 内 部 专用 网 络 进 行 远 程 访 问 的 连 接 方 式 , 用 以 保 证 办公 网 对 安 全 性 和 灵 活 性 的 要 求 。

要 实 现 VPN 连 接 , 企 业 内 部 网 络 中 必 须 配 置有 一 台 VPN 服 务 器 , VPN 服 务 器 一 方 面 连 接 企 业内 部 专 用 网 络 , 另 一 方 面 要 连 接 到 Internet , 也 就是 说 , VPN 服 务 器 必 须 拥 有 一 个 公 用 的 IP地 址 。

当 客 户 机 通 过 VPN 连 接 与 专 用 网 络 中 的 计 算机 进 行 通 信 时 , 先 由 ISP(Internet 服 务 提 供 商 ) 将 所有 的 数 据 传 送 到 VPN 服 务 器 , 然 后 再 由 VPN 服 务器 负 责 将 所 有 的 数 据 传 送 到 目 标 计 算 机 。 VPN使 用 三 个 方 面 的 技 术 保 证 了 通 信 的 安 全 性 : 隧道 协 议 、 身 份 验 证 和 数 据 加 密 。

客 户 机 向 VPN 服 务 器 发 出 请 求 , VPN 服 务 器

• 123 •

Page 124: 预备篇 · Web viewOpen Office ——成熟的office应用套件,类似并兼容MS Office。包括了字处理、电子表格、演示文稿、公式编辑和绘图程序。字处理程序可以直接将文档转换为PDF格式。Perl——广受欢迎的解释性编程语言,适合于检索任意文本

软件综合开发案例教程——Linux、GCC、MySQL、Socket、Gtk+与开源案例响 应 请 求 并 向 客 户 机 发 出 身 份 质 询 , 客 户 机 将加 密 的 响 应 信 息 发 送 到 VPN 服 务 器 , VPN 服 务 器根 据 用 户 数 据 库 检 查 该 响 应 , 如 果 账 户 有 效 ,VPN 服 务 器 将 检 查 该 用 户 是 否 具 有 远 程 访 问 权限 , 如 果 该 用 户 拥 有 远 程 访 问 的 权 限 , VPN 服务 器 接 受 此 连 接 。 在 身 份 验 证 过 程 中 产 生 的 客户 机 和 服 务 器 公 有 密 钥 , 将 用 来 对 数 据 进 行 加密 。

在 VMware 中 , 对 于 每 一 个 虚 拟 私 有 网 络 , 使用 显 示 在 表 1-8 中 的 规 范 将 可 用 的 IP地 址 分 割 为几 个 部 分 , 其 中 <net> 是 分 配 给 仅 为 主 机 或 者 NAT网 络 的 网 络 数 字 。 VMware Workstation 总 是 为 仅 为 主 机和 NAT 网 络 使 用 一 个 C类 地 址 。

表1-8 虚拟私有网络地址的表示规范范 围 地 址 使 用 示 例

<net>.1 主机 192.168.0.1

<net>.2~<net>.127 静态 IP地址 192.168.0.2~192.168.0.127

<net>.128~<net>.254 DHCP 分配的 IP地址 192.168.0.128~192.168.0.254

<net>.255 广播 IP地址 192.168.0.255

3) 建 立 以 太 网 连 接在 Linux 下 要 建 立 一 个 以 太 网 连 接 , 需 要 一 块

以 太 网 网 卡 、 一 根 CAT-5网 线 以 及 一 个 可 供 连 接的 以 太 网 网 络 ( 如 电 信 、 网 通 提 供 的 接 入 网 络 ) 。具 体 步 骤 如 下 :

(1) 打 开 “ 网 络 配 置 ” 工 具 (“系 统 ” =>“管 理 ”=>“网 络 ” ) 。

(2) 选 中 “ 设 备 ” 面 板 , 单 击 “ 新 建 ” 。(3) 在 弹 出 的 新 窗 口 中 选 择 “ 以 太 网 连 接 ” ,

单 击 “ 前 进 ” 。 (4) 新 出 现 在 以 太 网 卡 列 表 中 已 经 有 你 要 添

加 的 以 太 网 卡 , 直 接 选 中 它 ; 如 果 没 有 , 则 选择 “ 其 他 以 太 网 卡 ” 。 单 击 “ 前 进 ” 。

说 明 : 在 安 装 操 作 系 统 的 过 程 中 , 系 统 会自 动 检 测 并 完 成 大 多 数 网 卡 的 配 置 , 完 成 配 置的 网 卡 会 出 现 在 上 述 设 备 列 表 中 。 对 于 没 有 检测 到 、 无 法 完 成 配 置 以 及 之 后 添 加 的 网 卡 , 则

• 124 •

Page 125: 预备篇 · Web viewOpen Office ——成熟的office应用套件,类似并兼容MS Office。包括了字处理、电子表格、演示文稿、公式编辑和绘图程序。字处理程序可以直接将文档转换为PDF格式。Perl——广受欢迎的解释性编程语言,适合于检索任意文本

第 1章 Linux 基 础可 以 通 过 选 择 “ 其 他 以 太 网 卡 ” 完 成 配 置 。

(5) 如 果 上 一 步 选 择 了 “ 其 他 以 太 网 卡 ” ,则 会 出 现 “ 选 择 以 太 网 适 配 器 ” 窗 口 , 从 中 选择 你 的 以 太 网 卡 型 号 , 并 将 它 分 配 给 指 定 的 设备 (eth0 表 示 第 一 块 网 卡 , eth1为 第 二 块 , 依 此 类推 ) , 然 后 单 击 “ 前 进 ” 。

(6) 出 现 “ 配 置 网 络 设 置 ” 窗 口 , 根 据 实 际情 况 为 网 络 接 口 配 置 好 IP地 址 及 DNS , 完 成 后 单击 “ 前 进 ” 。

(7) 出 现 “ 创 建 以 太 网 设 置 ” 页 面 , 单 击“ 应 用 ” 。

(8) 新 添 加 的 网 络 连 接 会 出 现 在 “ 网 络 配置 ” 工 具 的 设 备 列 表 中 , 单 击 菜 单 “ 文 件 ” => “ 保 存 ” 即 完 成 了 连 接 的 创 建 。

完 成 以 太 网 设 备 的 添 加 之 后 , 从 设 备 列 表中 选 择 某 个 接 口 , 然 后 单 击 “ 编 辑 ” , 即 可 打开 “ 以 太 网 设 备 ” 配 置 窗 口 。

提 示 : 为 了 使 用 方 便 , 可 以 在 “ 以 太 网 设备 ” 配 置 窗 口 中 选 中 “ 当 计 算 机 启 动 时 激 活 设备 ” , 单 击 “ 确 定 ” , 这 样 做 可 以 避 免 每 次 计算 机 启 动 之 后 都 要 人 为 地 激 活 设 备 。

从 设 备 列 表 中 选 中 某 个 网 络 连 接 , 还 可 以通 过 面 板 上 的 “ 激 活 ” 和 “ 取 消 激 活 ” 按 钮 更改 接 口 状 态 。 如 果 没 有 设 置 “ 当 计 算 机 启 动 时激 活 设 备 ” , 在 使 用 这 个 连 接 之 前 需 要 你 手 动进 行 激 活 。

如 果 你 用 一 个 以 太 网 卡 关 联 了 多 个 设 备 ,从 第 二 个 设 备 开 始 , 它 们 都 被 称 为 设 备 别 名 (device aliases) 。 设 备 别 名 的 作 用 是 , 让 你 使 用 一 个物 理 设 备 , 创 建 多 个 虚 拟 设 置 , 从 而 可 以 为 同一 个 物 理 设 备 分 配 多 个 IP地 址 , 例 如 , 你 可 以用 一 块 以 太 网 卡 , 创 建 一 个 eth1接 口 和 一 个 eth1:1接 口 。

4) 网 络 常 用 命 令以 下 是 一 些 网 络 常 用 命 令 :(a) ifconfig

可 以 使 用 ifconfig 命 令 来 配 置 并 查 看 网 络 接 口的 配 置 情 况 。

• 125 •

Page 126: 预备篇 · Web viewOpen Office ——成熟的office应用套件,类似并兼容MS Office。包括了字处理、电子表格、演示文稿、公式编辑和绘图程序。字处理程序可以直接将文档转换为PDF格式。Perl——广受欢迎的解释性编程语言,适合于检索任意文本

软件综合开发案例教程——Linux、GCC、MySQL、Socket、Gtk+与开源案例例 如 :① 配 置 eth0的 IP地 址 , 同 时 激 活 该 设 备 。

#ifconfig eth0 192.168.1.10 netmask 255.255.255.0 up

② 配 置 eth0别 名 设 备 eth0:1 的 IP地 址 , 并 添 加 路由 。

#ifconfig eth0 192.168.1.3

#route add –host 192.168.1.3 dev eth0:1

③ 激 活 设 备 。#ifconfig eth0 up

④ 禁 用 设 备 。#ifconfig eth0 down

⑤ 查 看 指 定 的 网 络 接 口 的 配 置 。#ifconfig eth0

⑥ 查 看 所 有 的 网 络 接 口 配 置 。#ifconfig

(b) route

可 以 使 用 route 命 令 来 配 置 并 查 看 内 核 路 由 表的 配 置 情 况 。

例 如 :① 添 加 到 主 机 的 路 由 。

#route add –host 192.168.1.2 dev eth0:0

#route add –host 10.20.30.148 gw 10.20.30.40

② 添 加 到 网 络 的 路 由 。#route add –net 10.20.30.40 netmask 255.255.255.248 eth0

#route add –net 10.20.30.48 netmask 255.255.255.248 gw 10.20.30.41

#route add –net 192.168.1.0/24 eth1

③ 添 加 默 认 网 关 。#route add default gw 192.168.1.1

④ 查 看 内 核 路 由 表 的 配 置 。

• 126 •

Page 127: 预备篇 · Web viewOpen Office ——成熟的office应用套件,类似并兼容MS Office。包括了字处理、电子表格、演示文稿、公式编辑和绘图程序。字处理程序可以直接将文档转换为PDF格式。Perl——广受欢迎的解释性编程语言,适合于检索任意文本

第 1章 Linux 基 础#route

⑤ 删 除 路 由 。#route del –host 192.168.1.2 dev eth0:0

#route del –host 10.20.30.148 gw 10.20.30.40

#route del –net 10.20.30.40 netmask 255.255.255.248 eth0

#route del –net 10.20.30.48 netmask 255.255.255.248 gw 10.20.30.41

#route del –net 192.168.1.0/24 eth1

#route del default gw 192.168.1.1

对 于 ① 和 ② 两 点 还 可 使 用 下 面 的 语 句 实 现 :Ifconfig eth0 172.16.19.71 netmask 255.255.255.0

Route 0.0.0.0 gw 172.16.19.254

Service network restart

(c) traceroute

可 以 使 用 traceroute 命 令 显 示 数 据 包 到 达 目 的 主机 所 经 过 的 路 由 。

例 如 :#traceroute www.sina.com.cn

(d) ping

可 以 使 用 ping命 令 来 测 试 网 络 的 连 通 性 。例 如 :

#ping www.sina.com.cn

#ping –c 4 192.168.1.12

(e) netstat

可 以 使 用 netstat命 令 来 显 示 网 络 状 态 信 息 。例 如 :① 显 示 网 络 接 口 状 态 信 息 。

#netstat –i

② 显 示 所 有 监 控 中 的 服 务 器 的 Socket和 正 使 用Socket的 程 序 信 息 。

#netstat –lpe

③ 显 示 内 核 路 由 表 信 息 。#netstat –r

• 127 •

Page 128: 预备篇 · Web viewOpen Office ——成熟的office应用套件,类似并兼容MS Office。包括了字处理、电子表格、演示文稿、公式编辑和绘图程序。字处理程序可以直接将文档转换为PDF格式。Perl——广受欢迎的解释性编程语言,适合于检索任意文本

软件综合开发案例教程——Linux、GCC、MySQL、Socket、Gtk+与开源案例#netstat –nr

④ 显 示 TCP/UDP 传 输 协 议 的 连 接 状 态 。#netstat –t

#netstat –u

(f) hostname

可 以 使 用 hostname 命 令 来 更 改 主 机 名 。 例 如 ;#hostname myhost

(g) arp

可 以 使 用 arp 命 令 来 配 置 并 查 看 arp 缓 存 。 例如 :

① 查 看 arp 缓 存 。#arp

② 添 加 一 个 IP地 址 和 MAC 地 址 的 对 应 记 录 。#arp –s 192.168.33.15 00:60:08:27:CE:B2

③ 删 除 一 个 IP地 址 和 MAC 地 址 的 对 应 缓 存 记录 。

#arp –d192.168.33.15

修 改 网 络 配 置 : vi /etc/sysconfig/network-scripts/ifcfg-eth0类 似 如 下 格 式 :

DEVICE=eth0

BOOTPROTO=static

IPADDR=###.###.###.###

NETMASK=255.255.255.0

ONBOOT=yes

修 改 hostname : vi /etc/hosts修 改 DNS : vi /etc/resolv.confGATEWAY 变 更 : vi /etc/sysconfig/network重 启 网 络 服 务 : /etc/init.d/network restart

1.10.2 Cygwin虚 拟 机Cygwin 是 一 个 在 Windows 平 台 上 运 行 的 UNIX 模 拟

• 128 •

Page 129: 预备篇 · Web viewOpen Office ——成熟的office应用套件,类似并兼容MS Office。包括了字处理、电子表格、演示文稿、公式编辑和绘图程序。字处理程序可以直接将文档转换为PDF格式。Perl——广受欢迎的解释性编程语言,适合于检索任意文本

第 1章 Linux 基 础环 境 , 是 Cygnus Solutions 公 司 开 发 的 自 由 软 件 ( 该 公司 开 发 了 很 多 好 东 西 , 著 名 的 还 有 eCos , 不 过现 已 被 Redhat收 购 ) 。 它 对 于 学 习 UNIX/Linux 操 作 环 境 ,或 者 从 UNIX 到 Windows 的 应 用 程 序 移 植 , 或 者 进 行某 些 特 殊 的 开 发 工 作 , 尤 其 是 使 用 Gnu工 具 集 在Windows 上 进 行 嵌 入 式 系 统 开 发 , 非 常 有 用 。

Cygnus 当 初 首 先 把 GCC 、 GDB 、 GAS 等 开 发 工 具进 行 了 改 进 , 使 它 们 能 够 生 成 并 解 释 win32 的 目标 文 件 。 然 后 , 他 们 要 把 这 些 工 具 移 植 到Windows 平 台 上 。 一 种 方 案 是 基 于 Win32 Api 对 这 些 工具 的 源 代 码 进 行 大 幅 度 的 修 改 , 这 样 做 显 然 需要 大 量 工 作 。 因 此 , 他 们 采 取 了 一 种 不 同 的 方法   ——   他 们 写 了 一 个 共 享 库 ( 就 是 Cygwin dll) , 把Win32 Api 中 没 有 的 UNIX 风 格 的 调 用 ( 如fork、 spawn 、 signals、 select 、 sockets 等 ) 封 装 在 里 面 , 也就 是 说 , 他 们 基 于 Win32 Api 写 了 一 个 UNIX 系 统 库 的模 拟 层 。 这 样 , 只 要 把 这 些 工 具 的 源 代 码 和 这个 共 享 库 连 接 到 一 起 , 就 可 以 使 用 UNIX 主 机 上的 交 叉 编 译 器 来 生 成 可 以 在 Windows 平 台 上 运 行的 工 具 集 。 以 这 些 移 植 到 Windows 平 台 上 的 开 发工 具 为 基 础 , Cygnus 又 逐 步 把 其 他 工 具 ( 几 乎 不需 要 对 源 代 码 进 行 修 改 , 只 需 要 修 改 他 们 的 配置 脚 本 ) 软 件 移 植 到 Windows 上 。 这 样 , 在 Windows平 台 上 运 行 bash和 开 发 工 具 、 用 户 工 具 , 感 觉 就像 在 UNIX 上 工 作 一 样 。

1. Cygwin 的 组 成由 于 Cygwin 是 一 个 用 于 在 Windows 上 模 拟 Linux 环

境 的 软 件 , 所 以 它 可 以 作 为 商 用 虚 拟 机 的 替 代品 , 即 Cygwin 是 Windows 下 的 一 个 类 Linux 的 开 源 操 作环 境 。 它 由 以 下 三 部 分 组 成 :

(a) 包 括 了 一 套 用 来 模 拟 Linux 底 层 API 的 动 态 链接 库 (cygwin1 dll) , 该 库 在 Win32系 统 下 实 现 了 POSIX 系统 调 用 的 API , 保 证 了 其 他 应 用 程 序 可 以 在Windows 下 顺 利 运 行 。

(b) 还 有 一 套 GNU 开 发 工 具 集 ( 比 如GCC 、 GDB) , 这 样 可 以 进 行 简 单 的 软 件 开 发 ; 还有 一 些 UNIX 系 统 下 的 常 见 程 序 。 2001 年 , 新 增 了X Window 系 统 。

• 129 •

Page 130: 预备篇 · Web viewOpen Office ——成熟的office应用套件,类似并兼容MS Office。包括了字处理、电子表格、演示文稿、公式编辑和绘图程序。字处理程序可以直接将文档转换为PDF格式。Perl——广受欢迎的解释性编程语言,适合于检索任意文本

软件综合开发案例教程——Linux、GCC、MySQL、Socket、Gtk+与开源案例(c) Cygwin 中 还 包 含 了 MinGW 库 , 该 库 可 以 跟

Windows 本 地 的 MSVCRT 库 (Windows API) 一 起 工 作 。 MinGW占 用 内 存 、 硬 盘 空 间 都 比 较 少 , 能 够 链 接 到 任意 软 件 , 但 它 对 POSIX 规 范 的 实 现 没 有 Cygwin 库 那么 完 备 。

2. 使 用 Cygwin 的 注 意 事 项使 用 Cygwin 时 需 要 注 意 :(a) Cygwin 不 是 用 来 运 行 Linux 下 的 应 用 程 序 的 ,

如 果 需 要 将 Linux 下 的 应 用 程 序 放 到 Cygwin 下 运 行 ,必 须 重 新 在 Cygwin 环 境 下 编 译 。

(b) 如 果 应 用 程 序 需 要 使 用 Cygwin 提 供 的 或 者Windows 操 作 系 统 提 供 的 功 能 , 则 必 须 重 新 编 译应 用 程 序 。 Cygwin 不 提 供 这 种 类 型 的 模 拟 。

(c) Cygwin 不 支 持 Unicode 。 实 际 上 , 除 了 当 前Windows 系 统 以 及 OEM Codepages , Cygwin 对 其 他 字 符 集都 不 支 持 。

(d) Cygwin遵 守 GNU General Public License , 但 也 可 以 与 其他 开 源 软 件 链 接 。

3. 安 装 Cygwin

安 装 Cygwin 时 ( 参 见 图 1-22) , 可 以 从 http://www.cygwin.com/下 载 setup.exe进 行 安 装 。 通 常 情 况 下 是 网络 安 装 , 安 装 时 需 要 一 个 可 用 的 网 络 环 境 , 如图 1-22的 (a) 、 (b) 、 (c) 、 (d) 、 (e) 、 (f) 、 (g) 所 示 。

(a) (b)

• 130 •

Page 131: 预备篇 · Web viewOpen Office ——成熟的office应用套件,类似并兼容MS Office。包括了字处理、电子表格、演示文稿、公式编辑和绘图程序。字处理程序可以直接将文档转换为PDF格式。Perl——广受欢迎的解释性编程语言,适合于检索任意文本

第 1章 Linux 基 础

(c) (d)

(e) (f)

(g)

图1-22 安装Cygwin

运 行 setup.exe时 需 要 进 行 一 些 网 络 设 置 以 及 配置 需 要 从 哪 个 服 务 器 下 载 安 装 包 , 可 以 根 据 自己 所 在 的 地 理 位 置 选 择 最 近 的 服 务 器 。

• 131 •

Page 132: 预备篇 · Web viewOpen Office ——成熟的office应用套件,类似并兼容MS Office。包括了字处理、电子表格、演示文稿、公式编辑和绘图程序。字处理程序可以直接将文档转换为PDF格式。Perl——广受欢迎的解释性编程语言,适合于检索任意文本

软件综合开发案例教程——Linux、GCC、MySQL、Socket、Gtk+与开源案例(a) 选 择 从 网 络 安 装 还 是 从 本 地 安 装 , 通 常

是 从 网 络 安 装 , 因 为 所 有 的 安 装 包 的 大 小 大 概是 40G左 右 , 如 果 不 是 全 部 下 载 , 那 么 还 要 自 己单 个 挑 选 , 比 较 麻 烦 。

(b) 选 择 安 装 路 径 以 及 安 装 方 式 , 这 个 保 持默 认 就 可 以 了 。

(c) 设 置 连 接 的 代 理 , 通 常 不 需 要 设 置 。 除非 系 统 处 在 防 火 墙 内 部 或 者 网 络 速 度 较 慢 需 要代 理 来 加 速 。 因 此 , 选 择 Direct Connection 就 可 以 了 。

(d) 选 择 安 装 镜 像 , 通 过 测 试 发 现 ftp://ftp.ntu.edu.tw距 离 本 机 较 近 且 速 度 也 较 快 , 因 此 选 择 这 个 服务 器 进 行 安 装 。

(e) 选 择 需 要 安 装 的 包 , 对 于 初 学 者 来 说 ,这 个 保 持 默 认 就 可 以 了 。

(f) 接 下 来 是 一 个 漫 长 的 安 装 过 程 , 时 间 依网 速 而 定 。

(g) 安 装 完 成 后 , 单 击 桌 面 上 的 Cygwin 图 标 ,就 可 以 去 启 动 Cygwin 了 。 启 动 Cygwin 后 会 出 来 提 示符 界 面 , 在 这 里 就 可 以 输 入 一 些 常 用 的 Linux 工具 了 。 至 于 可 以 使 用 哪 些 Linux 工 具 , 则 要 根 据之 前 安 装 的 软 件 包 而 定 。

4. 运 行 Cygwin

1) 启 动 Cygwin(a) 双 击 桌 面 的 Cygwin 图 标 , 即 可 启 动 Cygwin 里

的 Bash 。 (b) 或 者 , 你 可 将 C:/Cygwin/bin 加 到 %PATH% 当 中 ,

您 就 可 以 直 接 在 cmd.exe 里 面 使 用 Linux 命 令 了 , 比如 less 、 cat 、 wc 、 wget 等 。

(c) 如 果 您 有 一 个 Bash 脚 本 , 则 可 以 直 接 用 如下 的 形 式 进 行 调 用 :

C:/Cygwin/bin/bash.exe X:/scripts/Monitor.sh

运 行 Cygwin 后 , 你 会 得 到 一 个 类 似 Linux 的 Shell环 境 , 在 其 中 你 可 以 使 用 绝 大 部 分 Linux 软 件 和功 能 , 如 GCC 、 Make 、 Vim、 Emacs, 等 等 。 总 之 ,如 果 你 想 使 用 某 个 Linux 下 的 功 能 , 而 Windows 上 又找 不 到 好 的 替 代 品 的 话 , 就 可 以 在 Cygwin 中 使 用 。

在 Cygwin 下 可 使 用 Linux 的 软 件 了 , 如 果 你 要 开

• 132 •

Page 133: 预备篇 · Web viewOpen Office ——成熟的office应用套件,类似并兼容MS Office。包括了字处理、电子表格、演示文稿、公式编辑和绘图程序。字处理程序可以直接将文档转换为PDF格式。Perl——广受欢迎的解释性编程语言,适合于检索任意文本

第 1章 Linux 基 础发 可 以 在 两 个 平 台 上 运 行 的 程 序 , Cygwin 也 是 你前 期 试 验 的 好 地 方 。 从 互 联 网 上 下 载 的 各 种 开源 代 码 , 也 可 以 在 Cygwin 里 编 译 、 运 行 、 调 试 。

2) 使 用 Cygwin 访 问 Windows 的 文 件Cygwin 安 装 后 , 其 根 目 录 位 于 你 的 安 装 目 录

下 。 所 以 使 用 cd / , 只 能 访 问 到 你 的 安 装 目 录 ,要 访 问 硬 盘 上 的 其 他 文 件 , 可 以 使 用 mount:

mount D:/testdir ~/testdir

这 样 , 你 就 可 以 在 ~/testdir 里 访 问 到 D:/testdir 里 的内 容 了 。

3) 使 用 Cygwin 作 为 X Server现 在 的 Linux 服 务 器 一 般 都 提 供 X, 要 从 Windows

上 使 用 Linux 的 X , 需 要 在 Windows 上 运 行 一 个 X Server。 有 一 些 专 门 为 Windows 开 发 的 软 件 可 以 做 这个 , 但 是 Cygwin 自 带 的 X Server就 可 以 胜 任 。 下 面 举例 说 明 如 何 使 用 :

首 先 你 必 须 安 装 X11包 , 然 后 运 行 Cygwin shell ,输 入 x& 。 这 时 候 , 你 的 桌 面 上 出 现 一 个 布 满 斜纹 的 大 窗 口 , 这 就 是 我 们 的 X Server 了 , Linux 机 器上 的 X 程 序 就 会 显 示 在 这 里 。 然 后 用 xterm 连 接到 Cygwin 中 开 启 的 X Server。

实 验 习 题1. 分 区 安 装 Linux 系 统 和 在 Windows 上 安 装 Linux 虚

拟 机 系 统 及 Cygwin 系 统 。2. 熟 练 使 用 Linux 常 用 命 令 , 能 够 用 Linux 上 的

编 辑 器 编 写 shell脚 本 程 序 。3. 分 别 下 载 开 源 图 形 界 面 设 计 工 具 lesstif(类

Motif 图 形 库 工 具 ) 和 wxWidgets, 并 用 这 些 工 具 进 行界 面 设 计 。

4. 给 出 在 Linux 系 统 下 进 行 应 用 程 序 开 发 ( 涉及 网 络 、 数 据 库 和 GUI等 内 容 ) 所 需 要 的 开 源 工具 支 持 , 并 简 要 说 明 这 些 工 具 的 功 能 和 特 点 。

• 133 •