问题描述
我已经继承了一个脚本作为应用程序构建过程的一部分,当我在构建服务器(Ubuntu Precise)上运行它时,它运行良好,但是当我在我的Mac上运行它时,我得到非法选项 - T。有问题的命令很简单,只是调用指定路径是一个好习惯。
I have inherited a script as part of a build process for an application, and when I run it on the build server (Ubuntu Precise) it runs fine, but when I run it on my mac I get "illegal option -- t". The command that has problems is simple, it's just a call to find:
find -type f -not -path [...]
On testing I have discovered that it is the -type option that has trouble on my Mac. If I run instead:
find ./ -type f -not -path [...]
It works, yet both work (seemingly equivalently) on the Linux box. Therefore my question is, are there significant differences between OSX's (BSD) find binary and the Linux (GNU?) find and will my modification to the script (adding the ./ path at the start) break anything that I haven't discovered yet?
The standard mandates the path (./ in your example) to be mandatory. find on MacOS follows the standard.
GNU find (the one available on Linux) allows the path to be optional. If not specified, the current directory is assumed to be the path. On Linux, man find says
find [-H] [-L] [-P] [-D debugopts] [-Olevel] [path...] [expression]
(note that path is specified within [...] denoting that it is optional.
It is a good practice to specify the path.
这篇关于Mac find和Linux find之间的区别的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!