*nix 的认真学生是否应该选择符合 POSIX 的发行版来很好地学习标准功能?

*nix 的认真学生是否应该选择符合 POSIX 的发行版来很好地学习标准功能?

我想作为一名认真的学生学习 Unix 或 Linux,特别是想学好基础知识,以便我能够有正确的理解,这样我就可以在平台和发行版之间移动,而不会忘记不寻常的习惯。

我应该在标准发行版中寻找什么?真的有关系吗?许多发行版似乎都符合 POSIX 标准——这是最重要的考虑因素吗?

答案1

选择发行版

*nix 不是你真正坐下来学习的东西。我会选择一个发行版,例如以下之一:

POSIX

显然还有其他你可以看到distrowatch.com。我选择了这 5 个,因为它们确实代表了几乎所有重要的 *nix,除了索拉里斯或者惠普-UX

POSIX 合规性很重要,但并不是非常关键,尤其是当您使用 Bash、awk、sed 类型的脚本时。毫无疑问会存在差异,因此如果您倾向于留在 POSIX 路径上,从长远来看它将节省您的时间,特别是如果您从一个 *nix 系列发行版跳到和/或移动到另一个发行版。

大多数发行版不兼容 POSIX,请参阅关于 POSIX 的维基百科页面对于血淋淋的细节。

最低有效位

LSB 或 Linux 标准库是一个项目/工作组,由Linux基金会作为跨各种 *nix 发行版标准化 API、工具等的尝试。它的目标与 POSIX 非常相似。

手册和信息页面

大多数应用程序通常提供如何在 *nix 系统上的 3 个位置之一使用它们的详细信息。

  1. 手册页- 大多数命令都提供手册页,这是手册页的缩写。当你试图弄清楚 *nix 上的命令如何工作时,这些是你最好的朋友。可以使用以下命令访问它们:man <command>

         $ man less
         LESS(1)                                                                                                                  LESS(1)
    
         NAME
                less - opposite of more
    
         SYNOPSIS
                less -?
                less --help
                less -V
                less --version
                less [-[+]aBcCdeEfFgGiIJKLmMnNqQrRsSuUVwWX~]
                     [-b space] [-h lines] [-j line] [-k keyfile]
                     [-{oO} logfile] [-p pattern] [-P prompt] [-t tag]
                     [-T tagsfile] [-x tab,...] [-y lines] [-[z] lines]
                     [-# shift] [+[+]cmd] [--] [filename]...
               (See the OPTIONS section for alternate option syntax with long option names.)
    
  2. 信息页面- 信息页与手册页类似。大多数 GNU 工具都提供它们,并且可以使用命令访问它们info <command>

        $ info less
        File: *manpages*,  Node: less,  Up: (dir)
    
        LESS(1)                                                                LESS(1)
    
    
    
        NAME
               less - opposite of more
    
        SYNOPSIS
               less -?
               less --help
               less -V
               less --version
               less [-[+]aBcCdeEfFgGiIJKLmMnNqQrRsSuUVwWX~]
                    [-b space] [-h lines] [-j line] [-k keyfile]
                    [-{oO} logfile] [-p pattern] [-P prompt] [-t tag]
                    [-T tagsfile] [-x tab,...] [-y lines] [-[z] lines]
                    [-# shift] [+[+]cmd] [--] [filename]...
               (See  the  OPTIONS section for alternate option syntax with long option
               names.)
    
  3. --help** - 大多数工具都提供某种形式的帮助支持程序本身。通常可以通过将参数传递--help给命令来访问它<command> --help

              $ less --help
    
                           SUMMARY OF LESS COMMANDS
    
              Commands marked with * may be preceded by a number, N.
              Notes in parentheses indicate the behavior if N is given.
    
          h  H                 Display this help.
          q  :q  Q  :Q  ZZ     Exit.
         ---------------------------------------------------------------------------
    
                                   MOVING
    
          e  ^E  j  ^N  CR  *  Forward  one line   (or N lines).
          y  ^Y  k  ^K  ^P  *  Backward one line   (or N lines).
          f  ^F  ^V  SPACE  *  Forward  one window (or N lines).
          b  ^B  ESC-v      *  Backward one window (or N lines).
          z                 *  Forward  one window (and set window to N).
          w                 *  Backward one window (and set window to N).
    

要找什么

对于初学者,您需要一个带有 [gcc](编译器)、包管理器的发行版,sed,awk,珀尔,重击,以及所有其他种类或GNU Coreutils例如:

名单不胜枚举这就是为什么我认为我们大多数人都在这个 stackexchange 网站上闲逛的原因 8-)。

我认为学习 *nix 作为一门手艺,就像木工或木工一样。入门非常简单,但掌握这些工具可能需要一生的时间。

编辑#1

触及评论中的一些观点。我正在提出一系列质疑@乔尔戴维斯提出答案只是为了让潜在的读者更容易看到。

问:为什么没有提到 Fedora/Ubuntu?选择 FreeBSD 而不是其中之一,似乎您将它们扔进了池子的最深处。

A:CentOS 涵盖 Red Hat,FreeBSD 涵盖 BSD。对于学习 *nix 的初学者,我会优先选择 CentOS 而不是 Fedora,因为我们正在教授基础知识。如果你要出去找工作,CentOS(BSD、Debian 和 SUSE)可能比 Fedora/Ubuntu 更适合。

我还会向任何即将到来的 *nix 人提到这一点:“首先学习如何管理 *nix 作为服务器操作系统,其次是桌面操作系统)”。在我在 SE 站点上回答的大约 80% 的问题中,我通常看到用户对如何管理 *nix 服务器没有很好的基本了解,或者不了解如何在其中开发/操作。

如果您需要进一步的证明,请参阅这篇 zdnet 文章:Linux 服务器不断增长,Windows 和 Unix 不断萎缩。服务器是我们大多数人需要处理 *nix 的地方。

不要因为我以任何方式否定 *nix 桌面技能或 *nix 在桌面上的功能而阅读上面的内容。十多年来我主要的日常操作系统一直是 Fedora 或 CentOS。我只是把学习 *nix 作为服务器操作系统的重点。

答案2

嗯……实际上有点艰巨。对于所有类 Unix 系统(包括 Linux)来说,日常命令(例如 cp、ps、rm)和实用程序(例如 vi、top)几乎相同 - 尽管选项有所不同(都可用并且字母切换到使用它们。

另一方面,对于系统管理来说,它们差异很大——从处理打印机、添加用户到安装软件包……即使在不同的 Linux 发行版之间,也会有差异。此外,设备的名称 - 特别是硬盘、分区、“片” - 各不相同。配置文件和服务的处理方式也有很大不同。

此外,更底层的系统 - 磁盘的设置方式(例如逻辑卷或软件 RAID)、系统用户和组的使用方式(例如 Solaris 及其“角色”)等等 - 差异很大。

至于 X 下的 GUI 程序 - Unix/Linux 下的“windows”系统 - 它将感觉非常不同,具体取决于哪个 WindowManager(提供窗口和按钮的形状等)或哪个 DesktopEnviroment(基本上是一个更复杂的 WM,带有附加程序 - 编辑器、邮件客户端、文件浏览器等 - 具有相同的“你使用的“外观”,集成到它)以及“主题”,因为许多都是“外观”和“感觉”(哪些按钮和鼠标如何工作)的主题。不同的 Unix 系统或 Linux 发行版具有不同的默认 WM/DE(尽管切换到另一个通常很简单)。

当然,当谈到“日常使用”时,应用程序的使用 - 电子表格、文字处理器、图像编辑软件 - 相同的应用程序将以相同的方式工作 - 特别是因为即使是“商业”Unix 系统现在也经常使用开源软件也。

不同的类 Unix 或 Linux 系统的内部结构相似,但并不完全相同。我不会立即深入研究内核内部,但如果您这样做,请记住它们有些相似,但远非相同。

+++

因此,任何 Unix 系统或 Linux 发行版都应该让您学习日常命令并让您运行(大多数)应用程序(运行操作系统,但不是操作系统的一部分 - 尽管 Linux 发行版通常将两者捆绑在一起),并且这在任何其他系统上也应该几乎相同。然而,当涉及到系统管理时,尽管所有工具都具有基本相同的可用工具集,但它们的名称和用法会有所不同。基本上,您可以在任何操作系统上学习良好的管理例程(例如进行备份),但必须针对每个操作系统学习实际的命令和配置文件。

对于新手,我建议使用 Linux 发行版 - 对于普通的东西来说,它与所有 Unix 系统足够相似,而对于管理的东西来说,它并不比任何其他发行版更相似。它是免费的并且被广泛使用,因此您可以轻松地在线找到帮助。我建议你选择三大 Ubuntu 发行版之一 - Ubuntu、Kubuntu 或 Xbuntu - 因为它们被广泛使用,有很多软件包并且易于管理...... LinuxMint 也非常简单,并且是从 Ubuntu 分叉的。

当您学习了基础知识后,您可以尝试 SlacwareLinux,因为它比其他发行版更“实用”。还有 GentooLinux,您可以在阅读书籍的同时从源代码构建所有内容并“引导”您的系统 - 这个过程将教会您很多有关系统的知识。最后还有 LinuxFromScratch,您可以在其中构建“您自己的”Linxu 系统(没有像 Gentoo 那样的部分自动化),遵循一本书 - 这将真的教您 Linux 的不同部分如何相互配合。编译几个 Linux 内核并查看内核和其他部分的源代码,也会让你学到很多东西。

FreeBSD 是一种开源免费的非 Linux 替代方案,基于“原始”Unix 系统 (BSD) 之一。 Solaris 不是开源的,但可以下载(尽管更新和支持费用) - 它是另一个“原始版本”,并且具有一些关于用户(例如“角色”)和磁盘处理的相当有趣的功能。 Minix 是一个“教学 Unix”,最初是操作系统教科书的配套产品。 Debian/Hurd 是一个正在开发的项目,使用非常“现代”的内核。

为了被允许将操作系统称为“Unix”,它必须经过认证……因为这要花很多钱,大多数 Linux 和其他免费操作系统(如 FreeBSD)都没有经过认证,尽管大多数 Linux 发行版可能已经经过认证。 POSIX 是另一个认证标准,指定了类似 Unix 的“梦想操作系统”。很少(非?)实际上完全遵循这个标准或实现所有部分,但许多类 Unix 操作系统或多或少是兼容的。同样,认证成本很高,许多免费项目没有得到认证,尽管它们与商业 POSIX 认证的操作系统同样出色地实现了该标准(例如,Linux 内核很好地遵循了该标准)。除非您正在为美国政府或类似机构设置系统(可能需要认证,例如出于安全和加密考虑),否则我不会太担心 - Linux 系统上的大多数命令都是实际上遵循 POSIX 标准。

答案3

如果我在你的船上,我会选择一些相当用户友好的东西,并且可能类似于你过去使用的操作系统。对于 Linux 来说,桌面用户的两大竞争者是 Fedora 和 Ubuntu。 Fedora 是红帽企业 Linux 的社区版(本质上),红帽企业 Linux 是企业/政府中最流行的发行版。虽然很多人说他们喜欢 Ubuntu,但我并没有经常使用它来发表意见。只要选择像这样面向桌面的东西,这样你就可以过上正常的生活,当你有一个想要完成的特定的自我强加的家庭作业时,只需进入命令行或使用一些工具即可。

POSIX 是软件开发人员和企业系统管理员需要担心的事情,而不是刚刚起步的人。大多数 POSIX 草案都标准化了命令行工具提供的选项和 API 定义等内容。有时,POSIX 标准会为系统设定一些操作要求,但即便如此,以您的知识水平来看,这也太细了,无需担心。您正在学习的技能很大程度上可以转移到 Linux 之外(但不完全)。即使使用 POSIX,在设计上它也只定义了操作系统功能的某个子集,有些东西(如诊断实用程序、卷管理、日志格式和位置、包管理、防火墙实现等)存在于您所定义的任何 POSIX 标准之外。我必须定期互动。即使是标准化的东西也经常会有类似“是否X将留待实施。”这是假设给定的供应商没有有意识地选择偏离 POSIX(如GNU/Linux 确实如此时)。

无论其他人怎么说,也不管他们对 POSIX 投入多少信心,POSIX 所做的就是保持操作系统的某些关键功能在各个供应商之间保持一致。当迁移到不同的操作系统时,总会有一个很大的学习曲线。但你实际上想要那样。如果事情没有改变,那么供应商的解决方案将仅限于工作组能够支持的确切功能(考虑到 IEEE 有时进展缓慢,该功能列表将会很小并且填写起来很慢)。您需要选择供应商,因为有多种方法来解决同一问题是一件好事。

相关内容