Osascript что это mac os
AppleScript — скриптовый язык, который используется для управления системой, приложениями и файлами в Mac OS X. Наиболее общий принцип применения следующий: открыть приложение и передать ему набор инструкций для выполнения. Причем это не обязательно приложения из стандартного комплекта поставки операционки, многие сторонние приложения также предоставляют API для обращения к ним через AppleScript.

Для редактирования и запуска скриптов есть небольшой редактор, который находится в Application > Utilites > AppleScript Edtior. Редактор довольно минималистичный и не имеет богатых возможностей, но для написания небольших скриптов его обычно оказывается вполне достаточно. Условно его можно разделить на две части: в первой пишется непосредственно сам код, а в нижней части, показывается результат выполнения твоих трудов. Если вдруг возникнет необходимость сделать более или менее серьезный проект, то удобнее будет воспользоваться какой-нибудь сторонней разработкой, например Script Debugger.
Азы
Applescript имеет очень простой синтаксис, который был максимально приближен к обычному английскому языку, давай быстро пробежимся по основным операторам, чтобы понимать, как нам выполнять самые базовые вещи.
Чтобы задать переменную нужно воспользоваться оператором set. Делается это так:
set имя переменной> to значение>
Имя переменной не должно совпадать с зарезервированными словами (beep, say и т.д.), а также нельзя начинать имя переменной с цифры.
Условия задаются при помощи оператора if, как и в других языках:
set a to true if a is true then say "That's true" else say "That's false" end if
Оператор say произносит переданный ему текст. Вместо «is» можно писать привычный знак равенства.
Задать цикл можно оператором repeat. В самом простом случае достаточно написать:
repeat 2 times beep end repeat
Этот цикл 2 раза воспроизведет стандартный системный звук. Если нужны итерационные циклы, то их можно задать используя until или while, например:
set i to 1 repeat until i is 10 beep set i to i + 1 end repeat
Арифметический цикл можно задать при помощи with таким образом:
repeat with i from 1 to 20 by 2 say i end repeat
Я думаю, понятно, что этот код будет произносить числа от 1 до 20 с шагом 2. Сейчас я быстро прошелся по основным «школьным» азам, чтобы было понятно что это за язык и с чем его едят. Как видишь, разработчики старались делать его таким, чтобы пользователи с разным уровнем подготовки могли «говорить» с компьютером практически человеческим языком. Я не буду подробно останавливаться на всех особенностях синтаксиса, если возникнут вопросы, ты всегда сможешь найти ответы в документации на сайте Apple.
Диалоги с пользователем
AppleScript не был бы так интересен, если бы не возможность легко создавать различные диалоговые окна, что дает нам возможность сделать наши скрипты более user-friendly.

Давай начнем с вызова стандартного системного диалога выбора файла. Делается это при помощи команды choose file.
set filePath to choose file of type "PDF", "MOBI"> with multiple selections allowed
В данном примере, будет вызван диалог выбора файла в котором включена фильтрация по типу (pdf или mobi) и разрешен выбор нескольких файлов. Если ты выполнишь этот код, то заметишь, что путь к файлу запишется, как alias:
System:Users:UserName:file.pdf
Такой формат понимают стандартные приложения в Mac OS, но часто требуется использовать привычный нам POSIX-вид, делается это легко:
set posixFilePath to POSIX path of filePath
В переменную posixFilePath путь запишется в виде: /Users/UserName/file.pdf.
Аналогичным способом выбирается папка при помощи choose folder. Чтобы показать свое, кастомное сообщение пользователю, нужно воспользоваться командой:
display dialog "Твое сообщение" with title "Заголовок"
Если не было передано никаких параметров, то будет выведен стандартный диалог с кнопками «ОК» и «Cancel». Тут стоит отметить, что после вывода диалога скрипт приостановит выполнение, и продолжит выполняться после нажатия «ОК», а вот после «Cancel» выполнение скрипта будет прервано с соответствующей ошибкой «User canceled.». Если такое поведение в твои планы не входит, то самое простое, — воспользоваться обработчиком ошибок:
try display dialog "Нажми Cancel" on error display dialog "Ты нажал Cancel :)" end try
Естественно, может такое случиться, что потребуются другие кнопки, кроме «Cancel» и «OK», и ты конечно же волен добавить любые, которые захочешь (но не больше трех). Делается это следующим образом:
display dialog "Are you sure?" buttons "Don't know", "Not sure", "Maybe">
А как быть, если требуется дать пользователю выбрать что-нибудь из списка? Легко:
choose from list "1", "2", "3"> with title "Choose it!" with prompt "Choose somethng:"
В случае если нужно будет просто ввести какие-либо данные воспользуйся такой строчкой:
display dialog "What is your name?" default answer "
Диалоги с софтом
Как я отметил в начале, главным козырем AppleScript является возможность автоматизации действий в различных приложениях, что дает практически безграничные возможности по его применению. Для того чтобы передать команду приложением нужно воспользоваться блоком tell .
tell application "Имя приложения" -- Действия end tell
Например, очистим корзину:
tell application "Finder" empty trash end tell
Чтобы узнать какие действия доступны для того или иного приложения, в AppleScript имеется средство, которое называется Dictionary, оно доступно в меню File > Open dictionary.

Также имеется возможность передачи команд на удаленный компьютер. Для начала, нужно включить опцию Remote Apple Events на машине, где требуется выполнить какие-либо действия в System Preferences > Sharing. Теперь, чтобы выполнить код на другой машине, нужно использовать следующую конструкцию:
tell application "Имя приложения" of machine "epic://ip-адрес"
Будь готов, что для выполнения действия на удаленной машине скрипт запросит логин и пароль, так что если ты потираешь руки, чтобы творить беспредел, придется придумать что-то еще :).
Командная строка
После прочтения предыдущих двух разделов у тебя наверняка должна была зародиться мысль о том, что неплохо было бы соединить удобство AppleScript с мощью shell-скриптов. Первое, что приходит в голову, — воспользоваться знаниями из предыдущего раздела и скормить необходимые команды приложению Terminal.
tell application "Terminal" do script "ping -c 1 ya.ru" end tell
Такой способ имеет право на существование и в отдельных случаях он может быть даже предпочтительнее, но есть другой вариант: воспользоваться командой do shell script, при помощи которой можно также выполнять консольные команды, что гораздо более удобно, так как дает возможность записать результат выполнения команды в переменную и оперировать с ней дальше средствами AppleScript.
Рекомендую почитать
Свежие записи
- Переустановка старой версии macOS на Mac Mini 2011 года
- Архитектура Redux в Swift: Введение
- Хостинг статического контента в Firebase
- Внешний SSD Transcend ESD240C
- FSEvents: Разбираемся с мониторингом событий файловой системы в macOS
osascript
Run AppleScript or JavaScript for Automation (JXA) from the command line.
- Run an AppleScript command:
- Run multiple AppleScript commands:
- Run a compiled ( *.scpt ), bundled ( *.scptd ), or plaintext ( *.applescript ) AppleScript file:
- Get the bundle identifier of an application (useful for open -b ):
- Run a JavaScript command:
- Run a JavaScript file:
Настройка устройств от фирмы Apple. Программы и приложения под устройства Apple: для макбуков, айфона. Особенности настройки и использования переферии и серверов из под MacOS. Разработка приложений, настройка окружения серверов и …

Операционная система для Mac Book, Apple, iPhone, iPad и прочих i-что-то. Построенная на базе Unix, ядро Darwin показало мощь в лице Маков, кастомизмруемость и удобство в Эйр Маках, ценность и …

Также может быть вам интересно:
- Как найти самые большие папки и файлы в Linux
- Как создать неизменяемый файл в Linux / MacOS / FreeBSD
- Bash < потоки ввода >вывода && управляющие конструкции || коротко о главном
- Как запустить программу в терминале в фоне, без вывода какого либо текста
- Как скопировать вывод команды из терминала в буфер обмена Linux и MacOS
Свежее на «Цифре»
MessageId или как дебажить систему с минимумом проблем
Программы, 09.09.2023
Проверочный список для выпуска промышленных приложений с иллюстрациями
Работа и управление, 30.07.2023
В Google Pixel и Windows Snipping Tool есть возможность восстановления обрезанных изображений
Новости, 23.03.2023
Два подарка «под ёлочку» от Heroes of Might and Magic
Новости, 25.12.2022
Вышел Pulsar – редактор кода на основе Atom
Новости, 25.12.2022
Ленивый backup PostgreSQL
Программы, 17.12.2022
Google анонсировала OSV-Scanner: сканер уязвимостей в программных проектах
Новости, 16.12.2022

Как установить пакеты из requirements.txt через pip, игнорируя ошибки
Простой способ установить список зависимостей пакета через стандартный Python менеджер пакетов. При этом чтобы pip не падал на первой же …

10 хороших примеров работы в Linux, FreeBSD и прочих Unix. Часть 10 — перестаньте пайпить в cat
Частая ошибка при использовании утилиты grep — это перенаправление вывода утилиты cat в неё для последующего поиска по одному файлу

Как установить сообщение на экран логина в MacOS
Сегодня мы немного увеличим наши шансы на возврат ноутбука при его потере.

Как узнать свой IP адрес в Linux, MacOS и других Unix-подобных
Как же узнать свой IP-адрес в Linux / MacOS / Unix-подобных

Как установить и настроить PostgreSQL в MacOS

Как добавить Crontab задачу
Cron – полезный инструмент администрирования и запланированного выполнения программ; В заметке формат Cron-файла, команды для просмотра и добавления

Продолжаем дайвить в Bash
awk, sed, примеры программ и разбор их

Операционные системы. Linux. Bash && «продвинутый» Bash
bash, regexp, printf и другие интересности

Перевод статьи «Learn 10 good UNIX usage habits» от IBM
В заметке перевод «10-ти хороших привычек Unix-пользователя»
Автоматизация задач на Mac с помощью AppleScript и Терминала

С помощью скриптов AppleScript можно ускорить работу с Терминалом и автоматизировать часто выполняемые задачи. Приложение «Терминал» поддерживает сценарии и команды AppleScript. Эти команды описаны в словаре AppleScript для Терминала.
Просмотр словаря AppleScript для Терминала
- В Finder
на Mac откройте папку «Программы/Утилиты». - Перетяните значок Терминала
на значок Редактора скриптов
.
В AppleScript можно использовать команду Do Shell Script для отправки команды сценария UNIX shell в Терминал.
Запуск скриптов AppleScript с помощью Терминала
Из Терминала можно запускать скрипты AppleScript, используя команду osascript.

-
В приложении «Терминал» на Mac можно ввести команду cd для перехода к каталогу, содержащему файл, который Вы хотите запустить. Например:
Руководство пользователя Редактора скриптов


Просмотр команд и объектов скриптования для приложения
Узнайте, какие команды и объекты доступны для приложения, для которого Вы создаете скрипт. Для этого просто просмотрите словарь скриптования для приложения.

Сохранение скрипта как приложения
После создания и тестирования готовый скрипт можно сохранить как приложение, которое можно запускать так же, как любое другое приложение.
Чтобы изучить Руководство пользователя Редактора скриптов, нажмите «Оглавление» вверху страницы либо введите слово или фразу в поле поиска.