Как настроить сценарий оболочки для запуска из док-станции Mac OSX? Кажется, что просто создание ярлыка откроет файл в моем редакторе. Есть ли флаг, который мне нужно установить где-нибудь, чтобы он запустился вместо открытия для редактирования?
Как настроить сценарий оболочки для запуска из док-станции Mac OSX? Кажется, что просто создание ярлыка откроет файл в моем редакторе. Есть ли флаг, который мне нужно установить где-нибудь, чтобы он запустился вместо открытия для редактирования?
Ответы:
Вы можете создать рабочий процесс Automator за один шаг - «Run Shell Script»
Затем File > Save As
и измените формат файла на «Приложение». Когда вы откроете приложение, оно выполнит шаг Shell Script, выполнив команду и выйдя из нее после ее завершения.
Преимущество в том, что это действительно просто сделать, и вы можете очень легко получить пользовательский ввод (скажем, выбрав кучу файлов), а затем передать его на вход сценария оболочки (либо в stdin, либо в качестве аргументов).
(Automator находится в вашей /Applications
папке!)
open -a SomeAppThing.app --args --etc=2
это, следует сосредоточиться. В качестве альтернативы вы можете сфокусировать его, используя Applescript (например osascript -e 'tell application "Google Chrome" to activate'
)
Если вам не нужно окно терминала, вы можете сделать любой исполняемый файл приложением, просто создав сценарий оболочки Example
и переместив его в имя файла Example.app/Contents/MacOS/Example
. Вы можете поместить это новое приложение в вашу док-станцию, как и любое другое, и запустить его одним щелчком мыши.
ПРИМЕЧАНИЕ: название приложения должно точно соответствовать имени скрипта. Таким образом, каталог верхнего уровня должен быть Example.app
и скрипт в Contents/MacOS
подкаталоге должен быть назван Example
, и скрипт должен быть исполняемым.
Если вам нужно отобразить окно терминала, у меня нет простого решения. Возможно, вы могли бы что-то сделать с Applescript, но это не очень чисто.
example.sh.app
, а не только example.app
. Вы получите предупреждение о поврежденном приложении, если они не совпадают
.app
этой структурой, и она будет считаться исполняемым приложением. Если вы хотите просмотреть содержимое этой папки в Finder, вам нужно щелкнуть по ней правой кнопкой мыши и выбрать «просмотреть содержимое пакета» (потому что двойной щелчок по нему запустит приложение). В Терминале это будет просто папка. (Я не уверен, что Finder позволит вам переименовать папку в .app самостоятельно; возможно, вам придется выполнить переименование в терминале.)
На OSX Mavericks:
Сделайте ваш сценарий оболочки исполняемым:
chmod +x your-shell-script.sh
Переименуйте ваш скрипт, чтобы иметь .app
суффикс:
mv your-shell-script.sh your-shell-script.app
Переименуйте ваш скрипт обратно в .sh
суффикс:
mv your-shell-script.app your-shell-script.sh
Теперь, когда вы нажимаете на скрипт в доке, появится окно терминала и запустите ваш скрипт.
Бонус: чтобы заставить терминал закрыться после завершения сценария, добавьте exit 0
в конец и измените настройки терминала, чтобы «закрыть оболочку, если она завершена чисто», как сказано в этом SO-ответе .
Я знаю, что это старый, но в случае, если это полезно для других:
Если вам нужно запустить скрипт и хотите, чтобы терминал всплывал, чтобы вы могли видеть результаты, которые вы можете сделать, как сказал Abyss Knight, и измените расширение на .command. Если вы дважды щелкните по нему, откроется окно терминала и запустите.
Мне, однако, нужно было это запустить из Automator или AppleScript. Таким образом, чтобы открыть новый терминал, я запустил команду «запустить сценарий оболочки» «open myShellScript.command», и она открылась в новом терминале.
Пока ваш скрипт исполняемый и не имеет никакого расширения, вы можете перетаскивать его как есть на правую сторону (сторона документа) Dock, и он будет запускаться в окне терминала при нажатии вместо открытия редактора.
Если вы хотите иметь расширение (например, foo.sh), вы можете перейти к окну информации о файле в Finder и изменить приложение по умолчанию для этого конкретного сценария из того, что есть (TextEdit, TextMate, независимо от того, какое значение по умолчанию установлено на вашем компьютере для .sh файлы) в Терминал. Затем он будет просто выполняться вместо открытия в текстовом редакторе. Опять же, вам придется перетащить его на правую сторону дока.
Я думаю, что эта тема может быть полезна: http://forums.macosxhints.com/archive/index.php/t-70973.html
Перефразируя, вы можете переименовать его с расширением .command или создать AppleScript для запуска оболочки.
Как уже упоминал Джо, создание сценария оболочки, а затем создание сценария яблочного сценария для вызова сценария оболочки позволит это сделать, и это очень удобно.
Создайте свой сценарий оболочки в вашем любимом текстовом редакторе, например:
mono "/Volumes/Media/~Users/me/Software/keepass/keepass.exe"
(запускается исполняемый файл w32 с использованием моно-фреймворка)
Сохраните скрипт оболочки, для моего примера «StartKeepass.sh»
Откройте редактор AppleScript и вызовите скрипт оболочки
do shell script "sh /Volumes/Media/~Users/me/Software/StartKeepass.sh" user name "<enter username here>" password "<Enter password here>" with administrator privileges
do shell script
- командаScript для вызова внешних команд оболочки"sh ...."
- это ваш сценарий оболочки (полный путь), созданный на первом этапе (вы также можете запускать прямые команды, я мог бы пропустить сценарий оболочки и просто запустить мою моно команду здесь)user name
- объявляет appleScript, что вы хотите запустить команду от имени конкретного пользователя"<enter username here>
- заменить своим именем пользователя (с сохранением кавычек) от "Джош"password
- объявляет паролем свой пароль"<enter password here>"
- заменить своим паролем (с сохранением кавычек) ex "mypass"with administrative privileges
- заявляет, что вы хотите работать от имени администраторасохраните ваш яблочный скрипт как filename.scpt, в моем случае RunKeepass.scpt
сохраните как ... ваш appleScript и измените формат файла на приложение, в результате чего в моем случае будет RunKeepass.app
Скопируйте файл приложения в папку приложений
В редакторе скриптов:
do shell script "/full/path/to/your/script -with 'all desired args'
"
Сохранить как пакет приложений.
Пока все, что вы хотите сделать, это получить эффект от сценария, это будет работать нормально. Вы не увидите STDOUT или STDERR.