12

我继承了一个脚本作为应用程序构建过程的一部分,当我在构建服务器(Ubuntu Precise)上运行它时,它运行良好,但是当我在我的 Mac 上运行它时,我得到“非法选项 - t”。有问题的命令很简单,只需调用find

find -type f -not -path [...]

在测试中,我发现这是-type在我的 Mac 上出现问题的选项。如果我改为运行:

find ./ -type f -not -path [...]

它可以工作,但两者都可以在 Linux 机器上工作(似乎等效)。find因此我的问题是,OSX(BSD)二进制文件和 Linux(GNU?)之间是否存在显着差异,find我对脚本的修改(./在开始时添加路径)会破坏我尚未发现的任何内容吗?

4

1 回答 1

13

标准要求路径(./在您的示例中)是强制性的。 find在 MacOS 上遵循标准。

GNU find(在 Linux 上可用)允许路径是可选的。如果未指定,则假定当前目录为路径。在 Linux 上,man find 说

find [-H] [-L] [-P] [-D debugopts] [-Olevel] [path...] [expression]

(请注意,指定路径[...]表示它是可选的。

指定路径是一个好习惯。

于 2013-07-09T13:08:02.033 回答