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