Как автоматизировать запуск сценария оболочки при открытии определенного приложения в 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
а затем всегда используйте этот скрипт, чтобы открыть скобки.