Что такое скрипты mac os x

Автоматизация задач на Mac с помощью AppleScript и Терминала

С помощью скриптов AppleScript можно ускорить работу с Терминалом и автоматизировать часто выполняемые задачи. Приложение «Терминал» поддерживает сценарии и команды AppleScript. Эти команды описаны в словаре AppleScript для Терминала.

Просмотр словаря AppleScript для Терминала

В Finder на Mac откройте папку «Программы/Утилиты».

Перетяните значок Терминала на значок Редактора скриптов .

В AppleScript можно использовать команду Do Shell Script для отправки команды сценария UNIX shell в Терминал.

Запуск скриптов AppleScript с помощью Терминала

Из Терминала можно запускать скрипты AppleScript, используя команду osascript.

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

Введите команду osascript. Например:

Источник

Applescript: язык автоматизации для macOS

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

Для редактирования и запуска скриптов есть небольшой редактор, который находится в Application > Utilites > AppleScript Edtior. Редактор довольно минималистичный и не имеет богатых возможностей, но для написания небольших скриптов его обычно оказывается вполне достаточно. Условно его можно разделить на две части: в первой пишется непосредственно сам код, а в нижней части, показывается результат выполнения твоих трудов. Если вдруг возникнет необходимость сделать более или менее серьезный проект, то удобнее будет воспользоваться какой-нибудь сторонней разработкой, например Script Debugger.

Applescript имеет очень простой синтаксис, который был максимально приближен к обычному английскому языку, давай быстро пробежимся по основным операторам, чтобы понимать, как нам выполнять самые базовые вещи.

Чтобы задать переменную нужно воспользоваться оператором set. Делается это так:

Имя переменной не должно совпадать с зарезервированными словами (beep, say и т.д.), а также нельзя начинать имя переменной с цифры.

Условия задаются при помощи оператора if, как и в других языках:

Оператор say произносит переданный ему текст. Вместо «is» можно писать привычный знак равенства.

Задать цикл можно оператором repeat. В самом простом случае достаточно написать:

Этот цикл 2 раза воспроизведет стандартный системный звук. Если нужны итерационные циклы, то их можно задать используя until или while, например:

Арифметический цикл можно задать при помощи with таким образом:

Я думаю, понятно, что этот код будет произносить числа от 1 до 20 с шагом 2. Сейчас я быстро прошелся по основным «школьным» азам, чтобы было понятно что это за язык и с чем его едят. Как видишь, разработчики старались делать его таким, чтобы пользователи с разным уровнем подготовки могли «говорить» с компьютером практически человеческим языком. Я не буду подробно останавливаться на всех особенностях синтаксиса, если возникнут вопросы, ты всегда сможешь найти ответы в документации на сайте Apple.

Читайте также:  Jar file editor windows

Диалоги с пользователем

AppleScript не был бы так интересен, если бы не возможность легко создавать различные диалоговые окна, что дает нам возможность сделать наши скрипты более user-friendly.

Давай начнем с вызова стандартного системного диалога выбора файла. Делается это при помощи команды choose file.

В данном примере, будет вызван диалог выбора файла в котором включена фильтрация по типу (pdf или mobi) и разрешен выбор нескольких файлов. Если ты выполнишь этот код, то заметишь, что путь к файлу запишется, как alias:

Такой формат понимают стандартные приложения в Mac OS, но часто требуется использовать привычный нам POSIX-вид, делается это легко:

В переменную posixFilePath путь запишется в виде: /Users/UserName/file.pdf.

Аналогичным способом выбирается папка при помощи choose folder. Чтобы показать свое, кастомное сообщение пользователю, нужно воспользоваться командой:

Если не было передано никаких параметров, то будет выведен стандартный диалог с кнопками «ОК» и «Cancel». Тут стоит отметить, что после вывода диалога скрипт приостановит выполнение, и продолжит выполняться после нажатия «ОК», а вот после «Cancel» выполнение скрипта будет прервано с соответствующей ошибкой «User canceled.». Если такое поведение в твои планы не входит, то самое простое, — воспользоваться обработчиком ошибок:

Естественно, может такое случиться, что потребуются другие кнопки, кроме «Cancel» и «OK», и ты конечно же волен добавить любые, которые захочешь (но не больше трех). Делается это следующим образом:

А как быть, если требуется дать пользователю выбрать что-нибудь из списка? Легко:

В случае если нужно будет просто ввести какие-либо данные воспользуйся такой строчкой:

Диалоги с софтом

Как я отметил в начале, главным козырем AppleScript является возможность автоматизации действий в различных приложениях, что дает практически безграничные возможности по его применению. Для того чтобы передать команду приложением нужно воспользоваться блоком tell .

Например, очистим корзину:

Чтобы узнать какие действия доступны для того или иного приложения, в AppleScript имеется средство, которое называется Dictionary, оно доступно в меню File > Open dictionary.

Также имеется возможность передачи команд на удаленный компьютер. Для начала, нужно включить опцию Remote Apple Events на машине, где требуется выполнить какие-либо действия в System Preferences > Sharing. Теперь, чтобы выполнить код на другой машине, нужно использовать следующую конструкцию:

Будь готов, что для выполнения действия на удаленной машине скрипт запросит логин и пароль, так что если ты потираешь руки, чтобы творить беспредел, придется придумать что-то еще :).

Командная строка

После прочтения предыдущих двух разделов у тебя наверняка должна была зародиться мысль о том, что неплохо было бы соединить удобство AppleScript с мощью shell-скриптов. Первое, что приходит в голову, — воспользоваться знаниями из предыдущего раздела и скормить необходимые команды приложению Terminal.

Такой способ имеет право на существование и в отдельных случаях он может быть даже предпочтительнее, но есть другой вариант: воспользоваться командой do shell script, при помощи которой можно также выполнять консольные команды, что гораздо более удобно, так как дает возможность записать результат выполнения команды в переменную и оперировать с ней дальше средствами AppleScript.

Читайте также:  Как удалить резервные копии windows server

Источник

О shell-скриптах в команде «Терминал» на Mac

Вместо ввода команд и ожидания ответа Вы можете составить shell-скрипт, который будет выполняться без Вашего непосредственного участия.

Shell-скрипт — это текстовый файл, который содержит одну или несколько команд UNIX. Вместо того чтобы вручную поочередно вводить команды в командной строке, Вы запускаете shell-скрипт, который выполняет все эти команды.

Плюс в том, что в одном shell-скрипте можно объединить большое количество стандартных задач. Это обеспечивает экономию Вашего времени и сокращает количество возможных ошибок при многократном выполнении однотипных задач. Кроме того, shell-скрипты можно автоматизировать с помощью таких инструментов, как launchd или Apple Remote Desktop.

Shell-скрипт начинается с комбинации символов, которая сообщает, что это shell-скрипт. Это символы # и ! (вместе называемые shebang), после которых указывается оболочка shell, в которой должен быть выполнен скрипт. Например, вот первая строка shell-скрипта, который будет запущен в sh :

Рекомендуется снабжать shell-скрипты комментариями. Чтобы добавить комментарий, начните строку со знака номера (#). Каждая строка комментария должна начинаться со знака номера:

Чтобы визуально отделить различные части shell-скрипта, в него можно добавлять пустые строки.

С помощью инструмента chmod можно указать, что файл является исполняемым (то есть, его содержимое может быть запущено как приложение). См. раздел Преобразование файлов в исполняемые в Терминале.

Инструкции по написанию shell-скриптов см. в статье Основные сведения о shell-скриптах на веб‑сайте Apple для разработчиков.

Источник

Создание программ для Mac OS X. Часть 3: Apple Script

В этой части я расскажу про еще одно интересное средство разработки приложений для Mac OS X — скриптового языка Apple Script.

Apple Script разрабатывался чтобы применяться конечными пользователями, а не программистами, и позволить им контролировать приложения и документы, с которыми они работают. Например, с помощью Apple Script можно открыть фотографию в редакторе изображений, обрезать до нужного размера, записать ссылку на фото в текстовый файл и т.п.

В отличии от того, как пользователь через GUI взаимодействует с приложением, например впечатывает информацию в текстовые поля приложения для работы с базами данных, AppleScript работает совсем иначе, скрипт использует внутреннюю объектную модель приложения, тем самым внося значения в саму базу данных. Это означает, что во время работы скрипта приложение даже не обязательно показывать. Естественно такая модель работы требует того, чтобы ваше приложение было написано с поддержкой Apple Script.

Каждое приложение, которое понимает Apple Script, публикует поддерживаемые комманды в Apple Event словаре, который используется, чтобы определить допустимые комманды.

Язык, очень похожий на натуральный

в подкасте Радио-Т ведущий bobuk говорил что скрипт, написанный на языке Apple Script читается как обычный английский текст. В принцие он прав, т.к. это и есть одна из основополагающих особеннойстей Apple Script.

Движок Apple Script комбинирует глаголы и существительные, чтобы выполнить действия. Например, чтобы напечатать документ, страницу из документа или опеределенный фрагмент, вместо вызова функций printPage, printDocument, printRange, мы берем глагол print и добавляем нужное существительное:

print page 1
print document 2
print pages 1 thru 5 of document 2

tell application «iTunes»
playpause
end tell

tell application «Microsoft Word» to quit

tell application «QuarkXPress»
tell document 1
tell page 2
tell text box 1
set word 5 to «Apple»
end tell
end tell
end tell
end tell

Использовать иерархичность можно следующим образом:

pixel 7 of row 3 of TIFF image «my bitmap»

set pix to 72
set answer to text returned of (display dialog «Enter in the number of inches» default answer «1»)
display dialog answer & «in = » & (answer * pix) & «px»

при исполнии покажет диалоговое окно с запросом ввода кол-ва дюймов, потом это значение конвертируется в пиксели и результат показывается в следующем окне.

Читайте также:  Узнать все програмы для windows

Также скрипт можно сохранить чтобы в дальнейшем использовать как полноценное приложение. Обработчик события запуска должен находиться внутри следующей конструкции:

В принципе, его можно и не писать, тогда при запуске обработка скрипта начнется с первой строки в файле.

Если бросить на файл со скриптом пару других файлов, то при запуске будет использован следующий обработчик:

on open theItems
— что-нибудь делаем с этими самыми theItems
end open

Средстав для написания скриптов лежат в /Applications/AppleScript

В качестве редактора/интерпритатора исаользуется ScriptEditor.app

Чтобы открыть Apple Event словарь надо в меню Script Editor нажать File=> Open Dictionary, откроется окно со списком приложений
выбираем нужное(например iTunes) и клацаем OK. Открылось окно с описанием комманд для нужного нам приложения

А теперь напишем простенькое Cocoa приложение, с помощью которого можно контроллировать iTunes
Открываем XCode, File=>New Project, Cocoa Application => в Project Name пишем iTunes_Controller. Добавляем новый Objective-C class «controller». В файле controller.h пишем

interface controller: NSObject <
>
— (IBAction) nextClick:(id)sender;
— (IBAction) prevClick:(id)sender;
— (IBAction) pauseClick:(id)sender;
— (IBAction) playClick:(id)sender;
— (void) executeAppleScript:(NSString*)sctript;
end

В принципе, в этом коде ничего секретно-военного нету. Просто пишем класс, с помощью которого и будем контролировать iTunes. Функции *Click — это обработчики нажатия по соответствующим кнопочкам на форме. А executeAppleScript:(NSString*)sctript — функция, которая будет исполнять скрипт в параметре script.

А теперь клацаем по MainMenu.nib и попадаем в InterfaceBuilder. Добавляем в окно MainMenu.nib новый NSObject и назначем ему класс controller:

Затем разместим на форме четыре кнопки с надписями «next»,«play»,«pause»,«previous» и соеденим их с соотв. обработчиками из класса controller:

Сохраняем все и возвращаемся в XCode. В файле controller.m пишем следующее:

— (void) executeAppleScript:(NSString*)script <
try <
NSAppleScript *ascript = [[NSAppleScript alloc] initWithSource:script];
[ascript executeAndReturnError:nil];
[ascript release];
>
catch (NSException * e) <
NSLog(@«exception:%@»,e);
>
>
— (void) nextClick:(id)sender <
[self executeAppleScript:@«tell application \»iTunes\» \n next track \n end tell»];
>
— (void) prevClick:(id)sender <
[self executeAppleScript:@«tell application \»iTunes\» \n previous track \n end tell»];
>
— (void) playClick:(id)sender <
[self executeAppleScript:@«tell application \»iTunes\» \n play \n end tell»];
>
— (void) pauseClick:(id)sender <
[self executeAppleScript:@«tell application \»iTunes\» \n pause \n end tell»];
>

В принципе в этом коде ничего сложного тоже нет. Единственная интересная вещь — класс NSAppleScript, с помощью объекта которого и выполняем скрипт. Подробнее про NSAppleScript можно почитать здесь.

В принципе, я думаю, что этого достаточно чтобы получить общее представление о Apple Script и попробавть что-нибудь на нем написать.

Источник

Оцените статью