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

2 ответа2

1

Что вы можете попробовать, так это перейти в папку приложения .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

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

0

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .