Чи є спосіб створити файл, який при натисканні відкриває термінал і набирає та виконує вказаний рядок? (Наприклад: say hello world)
Чи є спосіб створити файл, який при натисканні відкриває термінал і набирає та виконує вказаний рядок? (Наприклад: say hello world)
Відповіді:
Простий, але повністю помилковий підхід - це просто написати сценарій оболонки. Збережіть це у файлі під назвою mysay.sh:
#!/bin/sh
say hello world
say number five is alive
Поки у вас не встановлено XCode, який повинен відкриватися в Terminal, коли ви двічі клацніть на ньому.
Ви також можете це зробити за допомогою AppleScript, і це трохи довговічніше, оскільки вам не доведеться турбуватися, якщо програма за замовчуванням для .shфайлів не є терміналом:
tell application "Terminal"
set currentTab to do script "/usr/bin/say hello world"
do script "/usr/bin/say number five is alive" in currentTab
end tell
delay 5
tell application "Terminal" to quit
Збережіть це як програму з редактора AppleScript, і ви можете двічі клацнути по ній, і ваш Mac буде спілкуватися з вами. Ви можете зачекати і закрити сеанс терміналу після цього, за допомогою трохи більше AppleScript, якщо хочете.
Те, що ви намагаєтеся зробити, це написати "скрипт оболонки" (на випадок, якщо вам доведеться згодом його гуглювати).
У першому рядку скрипту оболонки потрібно вказати, який інтерпретатор використовувати. У вашому випадку використовуйте shдля звичайної оболонки Борна. Ви пишете це з так званим "шебангом" так:
#!/bin/sh
після цього написати все команди , які ви хочете запустити, в вашому випадку, say hello world. Інтерпретатор оболонки прочитає це так само, як якщо б ви ввели його в терміналі.
У вашому випадку ваш остаточний файл повинен бути:
#!/bin/sh
say hello world
Якщо ви пишете це в TextEdit.app, переконайтеся, що ви економите в простому текстовому режимі (який перемикається на Cmd+ Shift+ T). Ви можете зберегти за допомогою розширення .commandабо .sh.
Якщо ви хочете запустити його подвійним клацанням, рекомендую .commandрозширення.
І це все!
Можлива помилка: якщо під час запуску ви отримуєте повідомлення про помилку:
Файл "[ім'я файлу]" не вдалося виконати, оскільки у вас немає відповідних прав доступу.
вам потрібно дати дозвіл на виконання. Для цього виконайте:
chmod u+x path/to/my/file
Якщо ви не знаєте, що саме файл-шлях, просто введіть:
chmod u+x
введіть пробіл і перетягніть файл у вікно.
Якщо вам цікаво, u+xзначить, дайте користувачеві (власникові) права на виконання.
chmod u+x
Ви також можете зробити це за допомогою AppleScript, як згадувалося вище, від Ian C. Однак, одну команду можна виконати у меншій кількості рядків та з a delay. Ось AppleScript, який запустить команду, потім зачекайте 5 секунд, а потім закрийте термінал.
tell application "Terminal" to do script "say hello world"
delay 5
tell application "Terminal" to do script "logout"
tell application "Terminal" to quit
Просто альтернативний метод, порівняно зі способом @Ian C. Ви також можете взяти .sh файл Ian і перейменувати його .command, якщо у вас є XCode, який відкриє його в Terminal, і зробіть те саме, що і AppleScript, тільки не зволікаючи. Сподіваюся, це допомагає.