Как автоматизировать запуск сценария оболочки при открытии определенного приложения в OSX?

Недавно я столкнулся с колеи с одним проектом, который я пытался выполнить. Использую Automator, но я не знаю, как именно поступить в этом проекте. Это приложение для редактирования скриптов называется Brackets, и я хочу, чтобы при каждом его запуске выполнялась команда оболочки, известная как tty.js. Любая помощь, которую я могу получить, была бы отличной

2 ответа

Что вы можете попробовать, так это перейти в папку приложения.app и переименовать двоичный файл, создав файл сценария (помеченный как исполняемый файл) с именем исполняемого файла, который будет содержать ссылку на теперь переименованный исполняемый файл вместе со всем, что вы пишете. например

cd /Applications/Brackets.app/Contents/MacOS
mv Brackets BracketsReal
echo "tty.js" > Brackets
echo "BracketsReal &" >> Brackets
chmod +x Brackets

Это должно создать текстовый скрипт, который запускает ваш скрипт и приложение потом...

редактировать

сценарии в Appname.app/Contents/MacOS/ папка поддерживаются.

Первая строка #!/bin/sh (ака shebang) требуется

Методика перемещения реального исполняемого файла и выполнения его из скрипта называется wrapping и также используется в таких приложениях, как Gimp или XQuartz (Xorg/X11) на MacOS.

Если я правильно понимаю, чего пытался достичь пользователь, запустите Bracket и автоматически откройте файл tty.jsкроме пропавших shebang, нужно другое рассмотрение.

Чтобы правильно обернуть BracketsReal, скобки должны выглядеть примерно так:

#!/bin/sh
exec "$(dirname "$0")/BracketsReal"

Это должно работать так, как будто мы никогда не перемещали скобки в BracketsReal.

exec это встроенная команда оболочки

$0 является специальным аргументом, передаваемым из системы в исполняемый сценарий оболочки; при выполнении щелчком должен быть указан полный путь к сценарию:

/Applications/Brackets.app/Contents/MacOS/Brackets

dirname является командой оболочки, чтобы получить только часть каталога без имени файла, $( ) это подстановка команды, после выполнения строка станет:

exec /Applications/Brackets.app/Contents/MacOS/BracketsReal

Настолько, чтобы мы могли перенести приложение из /Applications в другие папки и все равно должен его запустить.

На данный момент мы должны проверить, что BracketsReal (возможно, сам скрипт) принимает файлы для открытия в качестве аргументов в командной строке (и, в конце концов, если требуется какой-то особый синтаксис), если он принимает аргументы, строка будет выглядеть примерно так:

exec "$(dirname "$0")/BracketsReal" "/path/to/the/file/tty.js"

Последнее замечание: чтобы убедиться, что что-то не так со скриптом оболочки, просто откройте терминал и запустите оболочку, в строке терминала просто введите / paste:

/Applications/Brackets.app/Contents/MacOS/Brackets

привилегии или синтаксические ошибки выводятся в окне терминала.

Клавиатура Maestro имеет возможность запускать макрос при запуске приложения:

Вы также можете назначить ярлык для сценария, как open -a Brackets;tty.js а затем всегда используйте этот скрипт, чтобы открыть скобки.

Другие вопросы по тегам