Я хочу запустить приложение на OSX из скрипта. Мне нужно передать аргументы командной строки. К сожалению, open
не принимает аргументы командной строки.
Единственный вариант, который я могу придумать, - это nohup myApp > /dev/null &
запустить мое приложение, чтобы оно могло существовать независимо от запускающего его скрипта.
Есть предложения лучше?
nohup &
решить проблему?Ответы:
В OS X 10.6
open
команда была расширена, чтобы разрешить передачу аргументов приложению:Но для более старых версий Mac OS X и поскольку пакеты приложений не предназначены для передачи аргументов командной строки, обычный механизм заключается в использовании событий Apple для файлов, например, здесь для приложений Cocoa или здесь для приложений Carbon. Вы также, вероятно, могли бы сделать что-то путное, передав параметры с использованием переменных среды.
источник
open
, - как сказано в ответе - не предназначены для работы из командной строки. "Зачем?" Потому что такова Mac OS X.Как уже упоминалось в вопросе здесь ,
open
команда в 10.6 теперь имеетargs
флаг, поэтому вы можете вызвать:open -n ./AppName.app --args -AppCommandLineArg
источник
Пакет приложения (
.app
файл) на самом деле представляет собой набор каталогов. Вместо того чтобы использоватьopen
и.app
имя, вы можете перейти в него и начать фактическую двоичную. Например:Это фактический двоичный файл, который может принимать аргументы (или не принимать аргументы
LittleSnapper
).источник
DYLD_LIBRARY_PATH
,DYLD_FRAMEWORK_PATH
.В случае, если вашему приложению необходимо работать с файлами (что вы обычно ожидаете передать как:
./myApp *.jpg
, вы должны сделать это следующим образом:источник
open something.py -a Eclipse.app
Я бы порекомендовал технику, которую предлагает MathieuK. В моем случае мне нужно было попробовать с Chromium:
Я понимаю, что это не решает проблему OP, но, надеюсь, это сэкономит чужое время. :)
источник
open
также имеет флаг -a, который можно использовать для открытия приложения из папки Applications по его имени (или по идентификатору пакета с флагом -b). Вы можете комбинировать это с параметром --args для достижения желаемого результата:Чтобы открыть видео в проигрывателе VLC, которое должно масштабироваться с коэффициентом 2x и зацикливаться, вы, например, выполните:
Обратите внимание, что мне не удалось получить вывод команд на терминал. (хотя я ничего не пробовал, чтобы решить эту проблему)
источник
open -a
намеренно повторили ?? В любом случаеopen -a /Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --args --user-data-dir=/Users/an/userll
у меня не работает.Я хотел запустить два отдельных экземпляра Chrome, каждый из которых использует свой профиль. Я хотел иметь возможность запускать их из Spotlight , как это моя привычка запускать приложения для Mac. Другими словами, мне понадобились два обычных Mac-приложения,
regChrome
для нормального просмотра иaltChrome
использования специального профиля, которые можно было бы легко запустить, нажав ⌘-пробел, чтобы вызвать Spotlight, затем «reg» или «alt», затем Enter.Я полагаю, что для достижения вышеуказанной цели методом грубой силы было бы создать две копии пакета приложений Google Chrome под соответствующими именами. Но это некрасиво и усложняет обновление.
В итоге я получил два приложения AppleScript, каждое из которых содержало по две команды. Вот для
altChrome
:Вторая строка запускает Chrome с альтернативным профилем (
--user-data-dir
параметром).Первая строка - это неудачная попытка дать двум приложениям разные значки. Сначала кажется, что все работает нормально. Однако рано или поздно Chrome перечитывает свой файл значков и получает тот, который соответствует тому, какое из двух приложений было запущено последним, в результате чего два запущенных приложения с одинаковым значком. Но я не стал пытаться это исправить - я держу два браузера на разных рабочих столах, и перемещение между ними не было проблемой.
источник
Начиная с OS X Yosemite , теперь мы можем использовать AppleScript и Automator для автоматизации сложных задач. JavaScript для автоматизации теперь можно использовать в качестве языка сценариев.
На этой странице приведен хороший пример сценария, который можно написать из командной строки с использованием интерактивного режима bash и osascript . Он открывает вкладку Safari и переходит к
http://developer.telerik.com/featured/javascript-os-x-automation-example/example.com
.источник
С помощью applescript:
источник
Почему бы просто не указать путь к корзине приложения. Для MacVim я сделал следующее.
Псевдоним - еще один вариант, который я пробовал.
С помощью экспорта PATH я могу вызывать все команды в приложении. Аргументы в пользу моего теста с MacVim прошли успешно. В то время как псевдоним, мне пришлось присвоить псевдоним каждой команде в корзине.
Наслаждайтесь мощью псевдонима и PATH. Однако вам необходимо отслеживать изменения при обновлении ОС.
источник
Просто замените здесь "APP" названием приложения, которое хотите запустить.
Спасибо позже.
источник
Вы можете запускать приложения, используя
open
:Это должно открыть нужное вам приложение.
источник