Задача, которую выполняет описанный под катом процесс, весьма специфична. Вместе с тем, устройство приведенного алгоритма может быть полезным и в общеобразовательных целях.
Как-то мне понадобилось извлечь из штатных программ Mac OS X их иконки, сохранив их в формате PNG. Я бы для этого использовал хорошо известный способ, если бы не одно но — программ было более трех десятков. Лень — двигатель прогресса, и памятуя эту умную мысль, вместо дурной механической работы, я попробовал найти решение, как бы ее автоматизировать.
Немного погуглив, набрел на алгоритм, который извлекал иконку только из одной программы. Убрав из него все лишнее и доработав, чтобы на входе принималось произвольное число приложений, у меня получилась такая служба:
Как видно из скриншота, на входе служба принимает приложения, предварительно выделенные в окне «Файндера». На всякий случай из массива объектов отсеивается все, что не является программой, и запрашивается, в какую папку следует сложить готовые иконки.
Самое главное в этом алгоритме — shell-скрипт, именно он выполняет всю работу. В качестве входных аргументов он получает список путей к выделенным ранее приложениям, плюс путь к папке, куда вы решили сохранить иконки. Необходимо первое отделить от последнего: в переменную INPUTAPPS сохраняются пути к программам в виде массива строковых величин, а в переменной DESTINATION заносится путь к папке сохранения пиктограмм.
Теперь следует обработать каждый элемент массива INPUTAPPS. Первым делом определяется местоположение иконки внутри каждого приложения, для чего используется консольная команда basename извлекается название соответствующего приложения (переменная APPNAME), чтобы присвоить его будущей PNG-картинке. Эта же строка используется для формирования полного пути к картинке внутри указанной ранее папки (переменная OUTFILE). И теперь посредством консольной утилиты sips иконка программы сохраняется в формате PNG по сформированному только что адресу. Конец цикла — и новая итерация. Таким образом будут обработаны все программы, которые были выделены перед началом работы общего алгоритма службы «Автоматора».
В качестве индикатора завершения работы я использую всплывающее Growl-сообщение. Вот и все дела. 🙂 Работоспособность готовой службы можете проверить на своем Маке, скачав workflow-пакет по щелчку на нижеприведенной ссылке и скопировав его в каталог ~/Library/Services.
P. S. Если у вас есть идеи, как можно оптимизировать shell-скрипт, буду рад узнать, что еще можно с ним сделать. 🙂
+1 u0432 u043au0430u0440u043cu0443 🙂 u0410 u0442u043e u043du0430u0434u043eu0435u043bu043e u0440u0443u043au0430u043cu0438 u0438u0445 u0432u044bu0442u044fu0433u0438u0432u0430u0442u044c.u00a0
:)))
Александр! где взять Automator? свой случайно удалил. И дисковод не работает.
Для Mac OS 10.6.8 Снежный Леопард