Відповіді:
Спочатку в терміналі зробіть сценарій виконуваним, ввівши:
chmod a+x (yourscriptname)
Потім у Finder клацніть правою кнопкою миші файл і виберіть "Відкрити за допомогою", а потім "Інше ...".
Тут ви вибираєте програму, в яку ви хочете виконати файл, у цьому випадку це буде Terminal. Щоб мати можливість вибрати термінал, вам потрібно перейти з "Рекомендовані програми" на "Усі програми". (Додаток Terminal.app можна знайти в папці Utilities)
Зверніть увагу, що якщо ви не хочете пов’язувати всі файли з цим розширенням для запуску в терміналі, ви не повинні мати прапорець "Завжди відкривати".
.command
, за замовчуванням виконується з Finder, без необхідності вказувати Finder, як його відкрити.
.command
розширення файлу.
Ви намагалися використовувати .command
розширення імені файлу?
chmod +x
), але .command
розширення вже пов'язане з Terminal. Чудове рішення, дякую
Що стосується OSX 10.10 (Yosemite) і оскільки принаймні OS X 10.8 (Mountain Lion) , то поведінка виглядає наступним чином, коли ви відкриваєте (двічі клацніть) виконувані сценарії з Finder :
.command
:
Preferences... > Profiles
ви можете автоматично закрити вікно, коли сценарій закінчується.cd -- "$(dirname "$BASH_SOURCE")"
одразу після лінії шебангаcd -- "$(dirname "$0")"
.chmod +x <script>
в Терміналі; в іншому випадку ви побачите такі симптоми:.command
: Finder відображає помилкове повідомлення про помилку, яке дозволяє припустити, що проблему можна усунути File > Get Info
, що не відповідає дійсності - використовуйте chmod +x
запропонований вище метод.#!/bin/bash
): поведінка наче суфікс .sh
- див. нижче..sh
, виконуваними чи ні:
TextEdit.app
або, якщо він встановлений, з Xcode.app
..scpt
або .applescript
(навіть якщо вони самі позначені як виконувані, що зазвичай не буває):
[1] Виконаний означає: сценарій із встановленими бітами дозволу на виконання та користувачем, що викликає виклик - щодо власності на файл - тому потенційно може бути дозволено його виконувати.
Якщо ви використовуєте chmod a+x
для встановлення всіх бітів дозволу (що є типовим), будь-хто може викликати його (припускаючи, що їм також дозволено читати файл на основі дозволів читання дозволів читання та власності на файл).
osascript
ви можете включити у .command
файл, замість того, щоб вручну возитися з профілем.
osascript -e '...'
команди до кінця сценарію? Яка конкретна команда, і чи гарантує вона, що права вкладка закрита, навіть коли сценарій не виконується в передній вкладці?
osascript -e 'tell application "Terminal" to close front window' > /dev/null 2>&1 &
... Це може працювати не в кожному сценарії, хоча перенаправлення на end є дійсно ключовим - osascript в іншому випадку може бути легко адаптований (наприклад, вікно, можливо, потрібно буде змінити на вкладку, якщо це ваша поведінка терміналу за замовчуванням тощо).
.command
запуску файлу сценарію, незважаючи на налаштування профілю?
bash
сценарій, додайте read -p 'Press Return to close this window.'
як останнє твердження.
Крім того, ви можете створити звичайний додаток Mac OS X зі свого сценарію за допомогою Platypus
Найпростіший спосіб - змінити розширення на .command
або не.
Але це відкриє Термінал, і вам доведеться його закрити. Якщо ви не хочете бачити жодного результату, ви можете використовувати Automator для створення програми Mac, яку можна двічі клацнути, додати до док-станції тощо.
Automator
програмаRun
кнопку у верхньому правому куті, щоб перевірити її.File > Save
для створення програми.Не потрібно використовувати сторонні додатки, такі як Platypus.
Просто створіть сценарій Apple із редактором сценаріїв і використовуйте команду do shell script "shell commands"
для прямих викликів команд або виконуваних файлів скриптів оболонки, збережіть файл, який можна редагувати, десь захистити, а потім експортуйте його, щоб створити сценарій програми. сценарій програми може бути запущений подвійним клацанням або виділенням у папці бар.
Ви також можете встановити параметри за замовчуванням за допомогою розширення файлу за допомогою RCDefaultApp:
http://www.rubicode.com/Software/RCDefaultApp/
потенційно ви можете встановити .sh для відкриття в iTerm / Terminal і т. д., йому потрібно буде виконати права доступу користувача, наприклад
chmod u+x filename.sh