Выполнение сценариев оболочки из OS X Dock? - PullRequest
152 голосов
/ 11 ноября 2008

Как настроить сценарий оболочки для запуска с док-станции Mac OSX? Кажется, что просто создание ярлыка откроет файл в моем редакторе. Есть ли флаг, который мне нужно установить где-нибудь, чтобы он запустился вместо того, чтобы открывать его для редактирования?

Ответы [ 9 ]

175 голосов
/ 11 ноября 2008

Вы можете создать рабочий процесс Automator за один шаг - «Run Shell Script»

Затем File > Save As и измените формат файла на «Приложение». Когда вы откроете приложение, оно выполнит шаг сценария оболочки, выполнив команду и выйдя из нее после ее завершения.

Преимущество этого в том, что действительно просто сделать, и вы можете очень легко получить пользовательский ввод (скажем, выбрав несколько файлов), а затем передать его на вход сценария оболочки ( на стандартный ввод или в качестве аргументов).

(Automator находится в вашей папке /Applications!)

Example workflow

42 голосов
/ 11 ноября 2008

Если вам не нужно окно терминала, вы можете сделать любой исполняемый файл приложением, просто переместив example.sh в example.sh.app/Contents/MacOS/example.sh. Вы можете поместить Приложение в док-станцию, как и любой другой, и запустить его одним щелчком мыши.

Если вам нужно отобразить окно терминала, у меня нет простого решения. Вы, вероятно, могли бы что-то сделать с Applescript, но это не очень чисто.

20 голосов
/ 10 января 2014

На OSX Mavericks:

  1. Создайте свой сценарий оболочки.
  2. Сделать исполняемый скрипт:

    chmod +x your-shell-script.sh
    
  3. Переименуйте ваш скрипт, чтобы получить суффикс .app:

    mv your-shell-script.sh your-shell-script.app
    
  4. Перетащите скрипт в док OSX.
  5. Переименуйте ваш скрипт обратно в суффикс .sh:

    mv your-shell-script.app your-shell-script.sh
    
  6. Щелкните правой кнопкой мыши файл в Finder и выберите параметр «Получить информацию».
  7. В нижней части окна установите скрипт оболочки, который будет открываться с помощью терминала.

Теперь, когда вы щелкнете по сценарию в доке, появится окно терминала и запустите ваш сценарий.

Бонус: чтобы заставить терминал закрыться после завершения сценария, добавьте exit 0 в конец и измените настройки терминала на «закрыть оболочку, если она завершена чисто», как сказано в в этом ответе SO .

17 голосов
/ 04 мая 2010

Я знаю, что это старый, но в случае, если это полезно для других:

Если вам нужно запустить скрипт и хотите, чтобы терминал всплыл, чтобы вы могли видеть результаты, которые вы можете сделать, как сказал Abyss Knight, и изменить расширение на .command. Если вы дважды щелкните по нему, откроется окно терминала и запустите.

Мне, однако, нужно было запустить его из automator или appleScript. Таким образом, чтобы открыть новый терминал, я запустил команду «запустить сценарий оболочки» «open myShellScript.command», и она открылась в новом терминале.

7 голосов
/ 11 ноября 2008

Пока ваш скрипт исполняемый и не имеет никакого расширения, вы можете перетаскивать его как есть на правую сторону (сторона документа) Dock, и он будет запускаться в окне терминала при нажатии вместо открытия редактора. .

Если вы хотите иметь расширение (например, foo.sh), вы можете перейти к окну информации о файле в Finder и изменить приложение по умолчанию для этого конкретного скрипта, каким бы оно ни было (TextEdit, TextMate, независимо от того, какое значение по умолчанию установлено на ваш компьютер для .sh файлов) в терминал. Затем он будет просто выполняться вместо открытия в текстовом редакторе. Опять же, вам придется перетащить его на правую сторону дока.

5 голосов
/ 11 ноября 2008

Я думаю, что эта тема может быть полезна: http://forums.macosxhints.com/archive/index.php/t-70973.html

Если перефразировать, вы можете переименовать его с расширением .command или создать AppleScript для запуска оболочки.

4 голосов
/ 23 декабря 2011

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

Shell Script

  1. Создайте сценарий оболочки в вашем любимом текстовом редакторе, например:

    mono "/Volumes/Media/~Users/me/Software/keepass/keepass.exe"

    (запускается исполняемый файл w32 с использованием моно-фреймворка)

  2. Сохранить сценарий оболочки, для моего примера "StartKeepass.sh"

Apple Script

  1. Откройте редактор 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 - команда applecript для вызова внешних команд оболочки
    • "sh ...." - это ваш сценарий оболочки (полный путь), созданный на первом этапе (вы также можете запускать прямые команды, я мог бы пропустить сценарий оболочки и просто запустить мою моно-команду здесь)
    • user name - объявляет appleScript, что вы хотите запустить команду от имени определенного пользователя
    • "<enter username here> - заменить на ваше имя пользователя (с кавычками) от "josh"
    • password - объявляет appleScript свой пароль
    • "<enter password here>" - заменить своим паролем (с сохранением кавычек) ex "mypass"
    • with administrative privileges - заявляет, что вы хотите работать от имени администратора

Создайте свой .APP

  1. сохраните ваш applecript как filename.scpt, в моем случае RunKeepass.scpt

  2. сохранить как ... ваш appleScript и изменить формат файла на application, в результате чего в моем случае будет RunKeepass.app

  3. Скопируйте файл приложения в папку приложений

4 голосов
/ 22 ноября 2008

В редакторе скриптов:

do shell script "/full/path/to/your/script -with 'all desired args' "

Сохранить как пакет приложений.

Пока все, что вы хотите сделать, это получить эффект от сценария, это будет работать нормально. Вы не увидите STDOUT или STDERR.

0 голосов
/ 14 мая 2013

Кто-то написал ...

Я просто установил все файлы, которые заканчиваются на ".sh", чтобы открывать через Терминал. Оно работает хорошо, и вам не нужно менять имя каждого сценария оболочки вы хочу бежать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...