Как настроить сценарий оболочки для запуска из док-станции Mac OSX? Кажется, что просто создание ярлыка откроет файл в моем редакторе. Есть ли флаг, который мне нужно установить где-нибудь, чтобы он запустился вместо открытия для редактирования?
160
Ответы:
Вы можете создать рабочий процесс 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:
Сделайте ваш сценарий оболочки исполняемым:
Переименуйте ваш скрипт, чтобы иметь
.app
суффикс:Переименуйте ваш скрипт обратно в
.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 для запуска оболочки.
источник
Как уже упоминал Джо, создание сценария оболочки, а затем создание сценария яблочного сценария для вызова сценария оболочки позволит это сделать, и это очень удобно.
Shell Script
Создайте свой сценарий оболочки в вашем любимом текстовом редакторе, например:
mono "/Volumes/Media/~Users/me/Software/keepass/keepass.exe"
(запускается исполняемый файл w32 с использованием моно-фреймворка)
Сохраните скрипт оболочки, для моего примера «StartKeepass.sh»
Apple Script
Откройте редактор 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
- заявляет, что вы хотите работать от имени администратораСоздайте свой .APP
сохраните ваш яблочный скрипт как filename.scpt, в моем случае RunKeepass.scpt
сохраните как ... ваш appleScript и измените формат файла на приложение, в результате чего в моем случае будет RunKeepass.app
Скопируйте файл приложения в папку приложений
источник
В редакторе скриптов:
do shell script "/full/path/to/your/script -with 'all desired args'
"Сохранить как пакет приложений.
Пока все, что вы хотите сделать, это получить эффект от сценария, это будет работать нормально. Вы не увидите STDOUT или STDERR.
источник
Кто-то написал ...
источник