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

Nat*_*ong 36 linux mac bash command-line macos

我喜欢 Ubuntu Linux——尤其是命令行。但我不得不承认,至少就目前而言,Windows 更加用户友好——有更多的软件、更多的驱动程序和更多的东西可以正常工作。

知道 Mac 是基于 Unix 构建的,这让我想知道这是否是它们之间的最佳选择。但我想知道:Mac 命令行与 Linux 的 bash 有多相似?我可以直接使用 vim 和 bash 脚本和 git 等吗?像更改目录这样的常见命令会有所不同吗?有人知道在线“比较和对比”资源吗?

小智 35

Mac OS X 是一个 Unix 操作系统,它的命令行与任何 Linux 发行版的 99.9% 相同。bash是您的默认 shell,您可以编译所有相同的程序和实用程序。没有显着差异。您还可以找到各种项目,例如 MacPorts,它们为 Mac 提供包管理。

  • 99.9% 不正确。OS X 是 BSD 变体,没有 GNU 实用程序。您可以随时安装它们,但很多命令都有不同的选项。它是 Unix 但不是 Linux。 (24认同)
  • @digit,那一定是他们收费的 BSD 版本?s/F/Fr/ ;) (6认同)
  • 尽管您的脚本可能适用于 Mac 和 Linux,但在两个平台上测试它们总是明智的。我已经看到了 linux 发行版之间甚至同一 linux 版本的不同版本之间的一些(微妙的)差异。 (2认同)
  • 事实上,这是一个 100% 虚假统计数据的例子。*根据您的用例*范围是袖口外的大约 70%-100%,但试图将其量化为百分比真的很愚蠢。 (2认同)

小智 18

Bash 是 bash,所以 shell 和它的内置函数是一样的。但请注意,某些工具的行为(例如pshead可能在细节上有所不同),因此您的脚本可能会失败。

  • 请记住,这与其说是 Mac 与 Linux 的问题,不如说是各种风格的 unix 做的事情略有不同的问题。您会发现 Linux 和例如 HP-UX 之间存在相同(实际上更多差异)。 (5认同)
  • 您可以在 Linux 和 OSX 上标准化 gnu binutils 工具集。Macports 和 homebrew 都将安装在 OSX 上。这至少会使 ls/tar/etc 之类的东西标准化。ps 仍然依赖于操作系统。 (2认同)

Net*_*eth 13

它非常相似,但如果您知道 BSD 与 Linux 之间的任何差异,请期待 Mac 具有 BSD 行为。


Ric*_*lka 12

有几件事 - 这真的取决于你所说的命令行是什么意思。

  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也可以很有趣。