Выполнение сценариев оболочки из док-станции OS X?

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

Ответ 1

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

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

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

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

Example workflow

Ответ 2

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

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

Ответ 3

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

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

Мне, однако, понадобилось это для запуска от automator или appleScript. Таким образом, чтобы открыть этот новый терминал, команда, которую я запускал из "run shell script", была "открыта myShellScript.command" и открылась в новом терминале.

Ответ 4

В OSX Mavericks:

  • Создайте оболочку script.
  • Сделайте исполняемый файл оболочки script:

    chmod +x your-shell-script.sh
    
  • Переименуйте script для суффикса .app:

    mv your-shell-script.sh your-shell-script.app
    
  • Перетащите script в док-станцию ​​OSX.
  • Переименуйте script в суффикс .sh:

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

Теперь, когда вы нажимаете на script в доке, откроется окно терминала и выполните ваш script.

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

Ответ 5

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

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

Ответ 6

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

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

Ответ 7

В редакторе Script:

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

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

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

Ответ 8

Как упоминалось выше, создание оболочки script, а затем создание applescript script для вызова оболочки script, выполнит это и весьма удобно.

Shell Script

  • Создайте свою оболочку script в своем любимом текстовом редакторе, например:

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

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

  • Сохраните оболочку script, для моего примера "StartKeepass.sh"

Apple Script

  • Откройте редактор AppleScript и вызовите оболочку Script

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

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

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

  • сохранить как... ваш applescript и изменить формат файла на приложение, в результате чего RunKeepass.app в моем случае

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

Ответ 9

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

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