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

1541
VEDA0095

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

0

2 ответа на вопрос

1
EkriirkE

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

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

Спасибо! У меня была одна проблема, хотя. При запуске этих команд в терминале я продолжал получать сообщение «-bash:! / Bin / sh»: событие не найдено »после попытки выполнить« echo »#! / Bin / sh"> Скобки » VEDA0095 9 лет назад 0
Ага, хорошо, тогда пропустите эту строку. Отредактируйте файл в текстовом редакторе и удалите эту верхнюю строку. Ответ отредактирован. EkriirkE 9 лет назад 0
У меня есть еще одна проблема. Всякий раз, когда я набираю команду "mv", я также получаю это: "mv: переименовать скобки в BracketsReal: такого файла или каталога нет". Я понятия не имею, что делать на этом этапе. VEDA0095 9 лет назад 0
Я не был на OSX некоторое время, извините. Попробуйте сначала: `cd / Applications / Brackets.app / Contents / MacOS` EkriirkE 9 лет назад 0
Все хорошо. Спасибо за вашу помощь, хотя. К сожалению, я просто получаю это сообщение каждый раз, когда пытаюсь открыть приложение после изменений. «Вы не можете открыть приложение« Скобки », потому что оно не поддерживается на этом типе Mac». VEDA0095 9 лет назад 0
Grr. Чтобы вернуть его обратно, сделайте это: `cd /Applications/Brackets.app/Contents/MacOS; cp BracketsReal Brackets` EkriirkE 9 лет назад 0
Благодаря ответу @ EkriirkE я обнаружил, что скрипты поддерживаются, поэтому добавил немного информации, я все еще новичок в MacOS Alex 9 лет назад 1
0
user495470

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

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