Unix 指南/为什么像 Unix 一样
安装在许多 服务器 和一些 工作站 上的 操作系统 是 像 Unix 一样 的。但像 Unix 一样意味着什么?在这本书中,像 Unix 一样的系统是指类似于 *BSD、GNU/Linux、Solaris 和 原始 Unix 的系统。如今,Mac OS X 也符合像 Unix 一样的系统标准。
与普通计算机用户熟悉的(点击式)(图形用户界面)相反,在 Unix 中,工作通常以文本方式完成,通过称为(命令行 shell)的方式完成。
与(单用户)操作系统(允许一次仅一人使用计算机)相反,Unix 是一个多用户系统,允许多个用户同时访问计算机。通常,这是通过让用户通过数字网络(远程)访问系统来实现的。
无论是(远程)访问还是不访问,用户都需要一个(用户帐户)才能获得对系统的访问权限;出于计费、安全、日志记录和资源管理目的。
由于每个特定用户帐户对系统及其资源的控制程度各不相同,因此能够验证给定用户的真实身份至关重要,因此存在一种方法可以将每个用户帐户(用户名)与相应的(密码)进行验证;在一个称为(登录)的过程中。
所有像 Unix 一样的系统都相似。与许多服务器操作系统一样,像 Unix 一样的系统可以同时托管多个用户和程序。有些功能特定于像 Unix 一样的系统。像 Unix 一样的系统提供了一个通用的 命令行界面,称为shell。它们还为 C 语言 提供了一个通用的编程接口。后一个事实使大多数像 Unix 一样的系统能够运行相同的 应用程序软件 和 桌面环境。
Unix 在程序员中很受欢迎,原因有很多。它受欢迎的主要原因是其构建块方法,其中一套简单的工具可以串联起来以产生非常复杂的结果。另一个原因是“一切皆文件”的理念,这意味着可以对不同的文件类型(目录与普通文件)、硬件设备,甚至系统进程执行标准化的一组操作和功能。
Shell 是像 Unix 一样的系统特有的程序。它允许您键入命令以启动其他程序。
当您通过纯文本终端登录系统时,Unix 会为您提供一个登录 shell。如果您的系统有 图形用户界面,例如 GNOME、KDE 或任何使用 X Window System 的界面,您可以通过一个名为控制台模拟器或终端模拟器的程序访问 shell。这模拟了 shell 运行所需的纯文本终端。
不幸的是,shell 和命令很难学习。此外,许多命令需要“参数”才能工作。例如,rm 命令(删除文件)需要一个或多个“参数”来命名要删除的文件。本书有一个 解释/Shell 提示 章节,介绍了 shell 及其众多功能。
可以通过将 shell 命令保存到一个名为 shell 脚本 的文本文件中来自动执行任务。例如,shell 脚本用于引导系统。
Unix shell 是像 Unix 一样的系统特有的。实际上,Unix 提供了多个可用的 shell。这些 shell 以不同的方式扩展其功能。对于“与 Bourne 兼容”的 shell,维基教科书Bourne Shell 脚本 描述了它们。大多数 shell 脚本适用于与 Bourne 兼容的 shell。
Unix 是流行的 C 语言 的起源。计算机上的每个程序都与C 库链接,该库提供基本系统功能,包括对内核的访问。即使应用程序是用另一种语言(如 C++)编写的,它仍然与 C 库链接。像 perl 这样的解释型语言需要一个与 C 库链接的 perl 解释器。
这种对 C 的依赖可能是一个缺点。大多数像 Unix 一样的内核完全用 C 编写;大多数常用程序使用 C、C++ 或 Objective-C。很难用另一种语言(如 Fortran)向这些程序添加代码。相反,一些非 Unix 系统允许不同的编程语言更轻松地交互。
本书不描述如何用 C 编程;那是本书 编程:C 的工作。但是,本书的计划新增部分将描述如何构建和运行 Unix 程序,以便您获得它们的 C 源代码。
每个像 Unix 一样的系统都有一个内核。这个程序控制计算机 硬件。
系统上的所有其他程序都是用户空间的一部分,这意味着在内核之外。内核在所有正在运行的用户空间程序之间共享系统。要使用键盘、网络连接或硬件的其他部分,用户空间程序必须使用 系统调用 联系内核。内核允许多个程序安全地共享硬件。它还会将程序切换进出 处理器;因此它是一个“多任务”内核。
例如,一个像 Apache 这样的 Web 服务器可以通过内核同时建立与多个 Web 浏览器的多个网络连接。同一台计算机也可以运行其他服务器程序。作为另一个例子,台式机系统(例如使用 GNOME、KDE 或 Xfce)上的用户可以同时打开多个包含文件管理器、文字处理器和游戏的窗口。当文件管理器复制文件而文字处理器打印文档时,用户可以同时玩一个俄罗斯方块克隆。
如今,一个非常流行的内核是 Linux。Linux 符合 免费 和 开源 的标准;即使 Linux 为数百万用户运行服务器,也不需要支付许可费。Linux 通常与 GNU 结合起来,形成像 UNIX 一样的操作系统,GNU/Linux(虽然有些情况下它没有与 GNU 结合)。因此,家庭用户获取像 Unix 一样的系统的简单方法是安装一个包含友好桌面的 GNU/Linux 发行版。
当我们需要配置网络连接、存储系统或硬件的其他部分时,通常需要使用特殊的实用程序来配置运行的内核。本书将介绍其中一些程序。
本书旨在保持中立的观点。因此,本书并不声称 Unix 始终是任何任务的最佳选择。它将同时提及类 Unix 系统的优缺点。