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

joh*_*org 4 distribution-choice posix

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

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

slm*_*slm 9

选择发行版

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

POSIX

显然还有其他的,你可以在distrowatch.com看到。我选择了这 5 个,因为它们确实代表了几乎所有重要的 *nix,在SolarisHP-UX 之外

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

大多数发行版都不符合POSIX,有关详细信息,请参阅 POSIX 上的维基百科页面

最低位

LSB 或 Linux Standard Base是由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.)
    
    Run Code Online (Sandbox Code Playgroud)
  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.)
    
    Run Code Online (Sandbox Code Playgroud)
  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).
    
    Run Code Online (Sandbox Code Playgroud)

要找什么

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

这个列表还在继续,这就是为什么我认为我们大多数人都在这个 stackexchange 站点上闲逛的原因 8-)。

我会认为学习 *nix 是一门手艺,就像木工或木工一样。入门很容易,但掌握这些工具可能需要一生的时间。

编辑#1

从评论中触及一些观点。我正在提出一个很好的问题,@JoelDavis提出了答案,只是为了让潜在读者更容易看到。

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

A: CentOS 涵盖 Red Hat,FreeBSD 涵盖 BSD。对于初学者学习 *nix,我会通过 Fedora 推动 CentOS 开始,因为我们正在教授基础知识。如果你要出去找工作,CentOS(BSD、Debian 和 SUSE)可以说更适合,而不是 Fedora/Ubuntu。

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

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

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

  • 我认为@slm 做得对,更不用说 Fedora 或 Ubuntu。虽然这两个发行版都适合常规桌面使用,但与 Fedora 或 Ubuntu 相比,Debian 或 Arch 或 CentOS 可以教您更多关于 *nix 的知识。 (3认同)

Bra*_*ley 2

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

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

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