2013-07-09 3 views
11

Я унаследовал сценарий как часть процесса сборки для приложения, и когда я запускаю его на сервере сборки (Ubuntu Precise), он работает нормально, но когда я запускаю это на моем mac я получаю «незаконный вариант - t». Команда, которая имеет проблемы просто, это просто вызов find:Разница между Mac `find` и Linux` find`

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

На тестировании я обнаружил, что это -type вариант, который имеет проблемы на моем Mac. Если я запускаю вместо этого:

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

Это работает, но оба работают (по-видимому, эквивалентно) на ящике Linux. Поэтому мой вопрос заключается в том, существуют ли существенные различия между двоичными файлами OSX (BSD) find и Linux (GNU?) find, и будет ли моя модификация сценария (добавление пути в начале) сломать все, что я еще не обнаружил?

+0

Связанный:.. Http: // stackoverflow.com/questions/752818/why-does-macs-find-not-have-the-option-printf – legoscia

+0

В Linux не нужно упоминать имя или путь к каталогу. По умолчанию он будет принимать текущий каталог. –

+0

В mac os, определяющие поля для указателя пути или каталога –

ответ

11

standard задает путь (./ в вашем примере) как обязательный. find на MacOS следует стандарту.

GNU find (тот, который доступен на Linux) позволяет указать путь к нему. Если не указано, текущий каталог считается путём. В Linux человек находка говорит

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

(обратите внимание, что путь указан в [...] обозначая, что это не является обязательным

Это хорошая практика, чтобы указать путь

+0

Хорошо спасибо, я обновил сценарий, чтобы включить путь, но я не был уверен, что я пропустил некоторые более фундаментальные различия в синтаксисе. – GTF

+0

Могут быть и другие отличия, но в основном это различия в параметрах и тестах, которые они поддерживают - например, поиск OS X поддерживает тесты '-Bmin',' -Bnewer' и '-Btime', которые проверяют файл дата создания (inode «время рождения»), которой нет у linux; с другой стороны, поиск OS X не поддерживает параметр '-D debugopts'. Но если одна и та же команда find запускается без ошибок на обоих, она, как правило, делает то же самое на обоих ... –

Смежные вопросы