Як зробити цей file.sh виконуваним за допомогою подвійного клацання?


165

По-перше, я використовую Mac.

Далі мені потрібно виконати цей "file.sh", ми його назвемо. Щоразу, коли мені потрібно його виконати, я повинен відкривати термінал і вводити:

cd /Users/Jacob/Documents/folderWithFileInIt
bash file.sh

Це нормально, але я відчуваю, що це було б набагато швидше, якби я змусив файл виконувати подвійним клацанням, ви не думаєте?

Отже, моє питання полягає в тому, як зробити цей файл виконуваним за допомогою подвійного клацання?

Мої ідеї були:

а) введіть щось подібне chmod до терміналу та змініть дозволи?

б) зробіть файл, покладіть у нього код, про який я писав вище ^, а потім зробіть цей файл виконуваним?

в) зробити автоматизацію якось це робити?

Який шлях найкращий чи є ще кращий спосіб? Також, будь ласка, поясніть, наскільки ви можете, я новачок у Терміналі. Дякую.


1
Якщо ви хочете приємного скрипта, який легко натискати, то так, Automator - це правильний інструмент. Ви, здається, знаєте це з вашого запитання, тож яке ваше питання?
Роб Нап'є

те саме питання, але у мене є jdk dmg, деяка папка додатків для створення значків, деякі Jar .., але мені не вдалося запустити / створити через автоматизатор або
.command

Відповіді:


350

За замовчуванням *.shфайли відкриваються в текстовому редакторі (Xcode або TextEdit). Щоб створити скрипт , який буде виконуватися в терміналі , коли ви відкриваєте його, назвіть його з «командою» розширенням, наприклад, file.command. За замовчуванням вони надсилаються до Terminal, який виконає файл у вигляді скрипту оболонки.

Вам також потрібно буде забезпечити виконання файлу, наприклад:

chmod +x file.command

Без цього Термінал відмовиться його виконувати.

Зауважте, що сценарій не повинен починатися з #!префікса в цьому конкретному сценарії, оскільки Terminal спеціально організовує його виконання зі своєю оболонкою за замовчуванням. (Звичайно, ви можете додати #!рядок, якщо хочете налаштувати, яка оболонка використовується, або якщо ви хочете переконатися, що ви можете виконати її з командного рядка під час використання іншої оболонки.)

Також зауважте, що Terminal виконує скрипт оболонки, не змінюючи робочий каталог. Вам потрібно буде почати свій скрипт з cdкоманди, якщо вам він дійсно потрібен для запуску з певним робочим каталогом.


1
Дякую за кориснішу відповідь.
Яків

46
Також ви можете використовувати cd "`dirname "$0"`"для встановлення поточного робочого каталогу каталог, де знаходиться скрипт оболонки.
gearsdigital

3
З естетичних причин слід також клацнути правою кнопкою миші файл .command та відкрити інформацію. Там ви можете приховати суфікс (під назвою та суфіксом).
Біджан

Я використовую цей метод для запуску програм за допомогою open -n ...команди. Вона працює, але щоразу, коли вікно терміналу відкривається, показує мені "[Процес завершено]". Чи можна якось запобігти появі вікна терміналу?
Нік

1
@Nik Немає сенсу запускати його в Terminal, якщо ви не хочете, щоб він відображався у вікні терміналу. Замість цього зробіть пакет додатків, виконуваним файлом якого є сценарій shebang. Або зробіть аплет AppleScript або Automator, який виконує сценарій. Ви також можете скористатися налаштуваннями терміналів, щоб змінити профіль, щоб закрити вікно, коли процес закінчується, але це не найкраще рішення, якщо ви просто хочете запустити скрипт оболонки без взаємодії з користувачем.
Кріс Пейдж

31

Видаліть розширення цілком і двічі клацніть по ньому. Більшість скриптів системної оболонки такі. Поки у неї є шебанг, він буде працювати.


1
До речі, "shebang" - це здебільшого цей рядок перед будь-якими рядками: #! / Bin / sh, але він може бути різним, читайте надане посилання для інших випадків.
Лукас Лейсіс

Чи не потрібно цей підхід робити chmod?
Атул

11

Ви можете просто сказати Finder, щоб він відкрив .shфайл у терміналі:

  1. Виберіть файл
  2. Отримайте інформацію (cmd-i) на ній
  3. У розділі "Відкрити з" виберіть "Інше ..." у спливаючому меню
  4. Виберіть Термінал як додаток

Це матиме такий самий ефект, як і перейменування його, за .commandвинятком… перейменувати його не потрібно :)


8
  1. Запуск терміналу
  2. Введіть -> nano fileName
  3. Вставте вміст пакетного файлу і збережіть його
  4. Введіть -> chmod + x fileName
  5. Це створить EXE-файл, тепер ви можете двічі клацнути по ньому.

Назва файлу повинна міститись у подвійних лапках. Оскільки я використовую Mac-> У моєму випадку вміст пакетного файлу є

cd / Користувачі / ваше ім’я / Документи / SeleniumServer

java -jar селен-сервер-автономний-3.3.1.jar -рольовий концентратор

Це буде працювати точно


0

Ви можете змінити виконуваний файл, використовуючи chmodподібний

chmod 755 file.sh

і використовувати цю команду для виконання

./file.sh

Ласкаво просимо до SO! Ваша відповідь нічого не додає до вже прийнятої відповіді. Поясніть, будь ласка, чому це відрізняється від інших відповідей, які вже існують.
ГабріельОширо
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.