Mac的命令行与Linux相比如何?


30

我喜欢Ubuntu Linux-特别是命令行。但是我必须承认,至少就目前而言,Windows更加用户友好-它具有更多的软件,更多的驱动程序以及更多可用的工具。

知道Mac是基于Unix构建的,这使我想知道它是否是它们之间的最佳结合点。但是我想知道:Mac命令行与Linux的bash有何相似之处?我可以立即使用vim和bash脚本以及git等吗?诸如更改目录之类的常用命令会有所不同吗?有人知道在线的“比较对比”资源吗?


Answers:


11

Bash是bash,因此外壳及其内置组件是相同的。但是请注意,某些工具(例如ps或)的行为head在细节上可能有所不同,因此脚本可能会失败。


5
请记住,这与其说是Mac vs. Linux问题,还不如说是各种unix的问题稍有不同。您会发现Linux与例如HP-UX之间的相同(实际上更多的不同)。
KeithB 2010年

2
您可以在Linux和OSX的gnu binutils工具集中进行标准化。Macports和自制软件都将安装在OSX上。这至少将使ls / tar / etc之类的东西标准化。ps仍然取决于操作系统。
skarface

filefile -i在Linux上,而file -I在OSX☹️
安东尼香港

30

Mac OS X是Unix OS,其命令行与任何Linux发行版相同,为99.9%。bash是您的默认Shell,您可以编译所有相同的程序和实用程序。没有明显的区别。您还可以找到各种项目,例如MacPorts,它们为Mac提供软件包管理。


1
+1:以上是正确的。您可能需要牢记,当您的Mac使用intel或powerpc处理器编译代码或使用预构建的软件包时,我知道新的macs只是intel的,但我可能是错的。错字@ w0rm:包*管理。:-)
Sirex

2
尽管您的脚本可能同时适用于Mac和Linux,但在两个平台上对其进行测试始终是明智的。我已经看到了Linux发行版之间甚至同一Linux版本的不同版本之间的相当(细微)差异。
Roalt

1
FeeBSD是准确的。
digitxp

6
@digit,那一定是他们收费的BSD版本吗?s / F / Fr /;)
约翰·T

18
99.9%不正确。OS X是BSD变体,没有GNU实用程序。您始终可以安装它们,但是许多命令具有不同的选项。它是Unix,但不是Linux。
Matteo,

12

这非常相似,但是如果您知道BSD与Linux的任何区别,请期望Mac具有BSD行为。


有趣。您可以详细说明吗?这是为什么?
fat_mike

@fat_milke,因为OSX使用的BSD实用程序而不是Linix使用的GNU
user151019 2016年

b / c Mac OSX是从* nix内核(基于BSD的NeXTSTEP)派生而来的,该内核早于Unix才从Unix分支出来。因此,他们最终得到了一些实用程序的稍微不同的实现。参见en.wikipedia.org/wiki/MacOS
尼采


9

有两件事-它实际上取决于命令行的含义。

  1. 您可能会运行bash,它将与任何其他UNIX上的bash相同。bash编程语言也将相同-只要它是相同的版本即可。Bash版本的语言略有不同,但这与MacOSX与Linux本身无关。

您实际上可能碰到了这一点-由于许可原因,Mac上的/ bin / bash固定为3.x。如果您习惯使用4甚至5,可能会发现较小的兼容性问题。

  1. bash本身是“命令行”的一小部分。为了有用,通常使用一些其他常见的UNIX实用程序,例如awk或ls或cut。由于其历史(它来自BSD,而不是Linux或SystemV),因此Mac版本的实用程序将不同于您在Linux上使用的实用程序(又名GNU版本)。与Linux相比,它们至少具有一些标志差异,以及一些输出和功能差异。使用这些脚本的脚本将必须进行更改以进行补偿。BSD awk与GNU gawk完全不同。或者,您可以从macports或home brew中获得这些GNU版本,并设置PATH,使其成为默认值(超过内置版本)。

  2. MacOS X还具有一些新的很酷的工具。 open很好,它将打开对象,就像您双击它一样。 defaults允许您设置一些首选项,甚至在GUI首选项面板中也可以。 textutil可以是有用的,say可以是有趣的。


3

Mac和Linux上的命令行功能确实很相似,因为OS X在您看到的GUI下具有UNIX(称为Darwin)风格。

OS X上的默认外壳是bash,因此,如果您熟悉它,将可以很好地进行调整。

在Mac上,默认命令行应用程序是Terminal。还有许多其他仿真器,但是总体上Terminal的外观和感觉与您在Linux中使用的shell非常相似。

差异的主要来源是:

  • 有时会使用不同的命令行参数(du例如,请参见)。主要命令(例如cdls等)相似。
  • 像在Linux中一样,不应手动编辑OS X的更多部分。这是一个主题,但要注意,在配置和维护方面,运行Mac并不完全类似于运行Linux。

话虽这么说,OS X的命令行中也有很多不错的技巧(例如opencommnand)。有很多以前的主题,博客文章还有更多信息。

你也可以得到你的手一堆开源包(即githg通过MacPorts的,等等),芬克或OS X.你一些其他的包管理系统也可以建立其他来源包用于UNIX / Linux的系统一样需要。


0

这是一个区别。在Mac和Linux bash shell中都尝试此命令

find /etc -name "*.conf"

即使/ etc中有很多.conf文件,Mac也什么也不显示。


1
也许你可以告诉人们为什么。
2012年

1
不确定,可能与POSIX中的路径名扩展有关。此命令有效find /etc/* -name "*.conf"。不过,这是作为MAC命令行与LINUX命令行对比的示例。无法推理-ve投票。
安东尼·托马斯

4
这是因为OSX上的/ etc是符号链接。如果尝试,find /etc/ -name "*.conf"则表明/ etc是目录而不是文件。请问find在Linux中处理符号链接的目录,默认目录?
MechEthan 2012年
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.