Відповіді:
Спочатку в терміналі зробіть сценарій виконуваним, ввівши:
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