我需要Linux发行版来学习命令行还是OS X足够?


12

我将学习如何使用命令行。具体来说,我将使用《 Linux命令行:完整介绍》这本书。现在,我是否必须使用Linux发行版来阅读本书,否则OS X是否足够?

如果我需要Linux发行版,那么通过VM使用它就足够了还是我需要本地安装它?


8
您需要在物理硬件上而不是VM上安装OS的唯一原因是性能。如果您只是想学习基本程序,那将不是问题。在VM中运行诸如Arch之类的东西可能更可取。
布拉奇利,2015年


4
命令行只是您与系统之间的链接。Bash Shell语法可能是相同的,但是当您需要处理系统特定的部分时,将会有所不同。例如,OS X没有/proc文件系统,USB驱动器往往/Volumes不像/media/usernameUbuntu那样出现。CentOS有不同的dhclient.conf文件。依此类推,等等
Sergiy Kolodyazhnyy 2015年

4
提议的跨站点副本显然是另一个问题,关于MacBooks的虚拟化性能。这个问题不是交叉发布的。
迈克尔·荷马

2
@Utku我认为可能会有用的是分离一些概念:使用命令行以及使用它的操作系统。如果您想通过命令行了解信息,那么OS X以及Linux,BSD甚至Windows都可以使用。如果您想了解UNIX或Linux,命令行只是其中的一小部分-它只是与操作系统进行交互的界面。我认为弄清楚您要做什么也将使学习变得更容易:)
rickcnagy 2015年

Answers:


33

我强烈建议在VM中运行Linux。所有软件均可免费下载,并且在VM中运行与出于学习命令行目的而本地运行之间没有实际区别。

此外,Linux命令行主要由bash + GNU coreutils组成,这与BSD Unix有很大的不同(而OS X是BSD Unix的继承者)。在BSD Unix和GNU Linux中编写参数时,首选项有很大的不同。如果您是非新手,也可以使用标准实用程序的不同选项(例如pstar如果您在两个系统上都可以使用),就可以咬自己。

在特定于Linux的书中使用OS X经常会引发不一致和差异,这些差异和差异在您更有经验时会显得肤浅,但在学习时只会造成混乱。让事情变得轻松自在。

这也使您可以进行实验,而不必担心通过删除或更改任何重要文件来破坏计算机。

最后,尽管当然不是最不重要的一点,它将允许您从OS X终端建立到VM的SSH连接,这样您就可以习惯使用SSH密钥,并且这样的想法对您的Linux服务器是否有用没有影响是本机,本地VM或在AWS或Digital Ocean上用尽:它们的工作原理相同!


顺便说一句,我在VM和本机Linux中是否也将具有相同的目录结构?
Utku

3
是。就您的目的而言,它与本机安装完全相同。
seumasmac

这是最安全的答案,但是根据本书的不同,我会假设命令行书的介绍不会显示很多差异(如果有的话)。看完手册后,唯一让我印象深刻的是对目录结构的解释。
2015年

1
@Utku如果书中提到/ dev / sda或/ dev / hda,但在安装中找不到它,请尝试查找/ dev / vda。这是我能想到的唯一可能的差异,对您来说很重要。
Kimmax

1
您甚至不必使用VM,如果不想占用HD上的大量空间,也可以使用实时CD。也可以从闪存驱动器启动它,并且创建CD /可启动闪存驱动器只需要很少的时间。
克里斯·西里菲斯

18

OS X足以学习命令行,因为它是经过认证的UNIX,并且符合POSIX。如果您在查看特定于Linux的命令行书,则必须记住OS X中的userland工具是从BSD派生的,而Linux上的工具是GNU,它们之间有一些细微(但不是那么细微)的差异。

如果您想学习GNU工具,则可以通过macports或自制软件安装GNU用户区,也可以在VM中进行完整的Linux安装。


因此,我猜想命令行上没有“通用”书吗?一本书将使用GNU或BSD工具。那正确吗?
Utku

1
如果您在外壳上有一本书(例如bash),那么它几乎适合运行它的任何系统。当您开始在外壳外部使用操作系统功能或特定工具时,它会有所不同。
teppic 2015年

1
@teppic但是shell 本身有多有用?AFAIK,shell本身是没有用的,因为它没有任何要执行的命令。即使是最基本的命令,也ls必须来自GNU或BSD(如果我错了,请更正)。因此,我认为这意味着我需要选择一个工具链(或环境)并在那里开始学习命令行。那正确吗?
Utku

@Utku命令大部分是相同的,但选项和输出可能不同(通常是因为GNU实现了许多扩展)。在BSD和GNU工具之间来回切换很容易。
casey 2015年

@casey因此,我可能只是从OS X上的书开始。然后,如果遇到书中未描述的行为,则可以在Linux上尝试或只看同一命令的BSD变体?
Utku

9

到目前为止,有一些不错的答案,但是要远离默认OS X命令行工具的另一个原因是它们是非常旧的版本。例如,OS X grep是2004年和bash2007年的版本!的原因是,苹果拒绝在GPL3下许可船工具。

如果您不想正确安装Linux,则可以手动安装最新版本(也许通过某些端口系统,例如MacPorts,Fink或Homebrew)。


3

第一个区别:

ls * -lah

在linux上工作,在mac上失败(参数必须优先)。使用VM或购买Mac专用书籍。您应该学习一种以后会用到的东西,然后再进行区别。


3
你应该说ls * -lah在Linux上工作它工作在Linux上的方式,它适用于OS X它适用于OS X.它适用于OS X的方式方法是正确的 ,根据POSIX(12实用会展/ 12.2实用程序语法准则/准则9):“所有选项都应在命令行中的操作数之前。” 如getopt(3)中所述:“如果...设置了环境变量POSIXLY_CORRECT,则一旦遇到非选项参数,选项处理就会停止。”
G-Man说'Resstate Monica''2015年

3

学习unix的最好方法是进行实际工作。我要说的是,有必要遇到书中特定于Linux的示例与标准工具的Mac版本之间的差异,以便能够在正常的工作环境(OS X)中使用自己的文件和数据。

即使有时令人沮丧,遇到差异也将是宝贵的学习经历。

同时具有Linux VM进行练习(尤其是对于潜在的危险命令)也很有用,但没有什么比在现实世界中学习更好的了。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.