Командная строка в операционной системе Mac OS X на MacBook, iMac


Миры UNIX и Mac OS X гораздо ближе друг к другу и имеют гораздо больше точек соприкосновения, чем можно предположить. Вы легко можете «перебросить мостик» из одного мира в другой, если знаете некоторые секреты.На первый взгляд Mac OS X и UNIX производят впечатление довольно странной парочки. Mac OS X имеет очень красивый, интуитивно понятный и в высшей степени дружественный интерфейс. Операционная система UNIX, по крайней мере, новичкам на первых порах кажется суровой, абсолютно недружественной и малопонятной средой. Но в действительности они — просто две стороны одной медали, а это значит, что они великолепно могут между собой взаимодействовать. В этом рецепте будут приведены несколько хитростей, которые помогут вам навести между ними мосты и наладить эффективное взаимодействие.

Язык AppleScript

В Mac OS X имеется два стильных и элегантных средства автоматизации рутинных задач: Automator и Quartz Composer. Хотя оба этих инструмента просто великолепны, не следует забывать и о языке AppleScript, который присутствует в Mac OS X с первых дней ее существования. Многие приложения поддерживают автоматизацию при помощи AppleScript. Команды AppleScript очень удобно запускать из окна Terminal при помощи команды osascript.

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

1$ osascript -e ‘say «Hello world»‘

Кроме того, команде osascript можно передавать целые последовательности команд, используя так называемый heredoc-синтаксис, показанный в листинге.


1234567// Передача команде osascript последовательности команд$ osascript — <<EOF;tell application «Finder»activateopen folder «Applications» of startup diskend tellEOF

Как видно на примере, показанном в листинге, команде osascript можно передавать короткие скрипты, используя символ дефиса (-) и специальный heredoc-синтаксис. Здесь символ дефиса (-) служит сигналом для osascript о том, что необходимо прочесть скрипт из стандартного ввода оболочки, при этом все, что заключено между символами Буфер обмена

Если вы много работаете с командной строкой, то вам часто требуется передать вывод одной из ваших команд другой программе (например, для вставки в электронную таблицу или отправки по почте). В окне Terminal можно выделить вывод команды и использовать обычные операции копирования и вставки (copy/paste). Помимо этого, вы можете перенаправить вывод команды в буфер по конвейеру (pipe). Например, следующая команда перенаправляет список всех работающих на вашем Mac процессов в буфер обмена:

1$ ps -ef | pbcopy

Аналогичным образом, вы можете перенаправить содержимое буфера обмена команде UNIX, используя для этой цели команду pbpaste. Например, следующая команда ищет в буфере обмена строки, содержащие комбинации цифр формата nn:nn (например, временные отметки вида 08:30):

1$ pbpaste | grep ‘[0-9][0-9]:[0-9][0-9]’

Некоторые приложения, например, Microsoft Word, хранят текст в буфере обмена в формате, не поддерживаемом в UNIX (символом завершения строки является возврат каретки, r). Исправить положение поможет использование Perl. В данном случае команда действует во многом подобно утилите sed и заменяет символ возврата каретки r (carriage return) на символ перевода строки n (line feed):

1$ pbpaste | perl -pe ‘s/r/n/g’ | grep ‘[0-9][0-9]:[0-9][0-9]’

Команда Open

Вам требуется что-то открыть? Например, файл или папку? Не проблема — следующая команда откроет нужный объект в Finder:

1$ open ~/Music

Вы можете также запускать приложения — для этого команда open должна использоваться с ключом –a, например:

1$ open -a iTunes

Команда open имеет множество мощных и удобных опций, поэтому внимательно изучите их, дав в окне Terminal команду man open.

Функция QuickLook

Функцию быстрого просмотра QuickLook тоже можно вызвать из окна Terminal. Например, чтобы отобразить содержимое файла, дайте следующую команду:

1$ qlmanage -p flower.jpg

Можно отобразить и целую группу файлов, например:

1$ qlmanage -p *jpg

Функция Spotlight

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

1$ mdfind N95

Если вы к тому же знаете, где искать то, что вам требуется, очень удобно воспользоваться опцией –onlyin (например, вместо аргумента N95 можно указать модель вашей камеры):

1$ mdfind -onlyin ~/Pictures N95

Кроме того, можно пользоваться и ключевыми словами Spotlight, например:

1$ mdfind «kMDItemComposer == ‘*Garcia*'»

А вот пример команды, которая выводит метаданные Spotlight для конкретного файла:

1$ mdls ~/Pictures/iChat Icons/Planets/Pluto and Charon.gif

Получение экранных снимков из командной строки

С помощью утилиты командной строки screencapture можно получить экранный снимок. Например, следующая команда создает экранный снимок, создает файл с указанным вами именем и сохраняет в нем полученный снимок:

1$ screencapture cap.png

Команду screencapture можно запустить и удаленно, без регистрации на компьютере.