我继承了一个脚本作为应用程序构建过程的一部分,当我在构建服务器(Ubuntu Precise)上运行时,它运行正常,但是当我在我的mac上运行它时,我得到“非法选项 - T”。有问题的命令很简单,只需要调用find
:
find -type f -not -path [...]
在测试中,我发现-type
选项在我的Mac上出现问题。如果我改为运行:
find ./ -type f -not -path [...]
它有效,但在Linux机器上都可以工作(看似相同)。因此我的问题是,OSX(BSD)find
二进制文件和Linux(GNU?)find
之间是否存在显着差异,我将对脚本进行修改(在{1}}处添加./
路径开始)打破我还没有发现的任何东西?
答案 0 :(得分:12)
standard强制要求路径(示例中为./
)。 MacOS上的find
遵循标准。
GNU find
(Linux上可用的那个)允许路径是可选的。如果未指定,则假定当前目录为路径。在Linux上,man找到了说
find [-H] [-L] [-P] [-D debugopts] [-Olevel] [path...] [expression]
(请注意,路径在[...]
内指定,表示它是可选的。
指定路径是一个好习惯。