Поскольку этот сценарий предназначен для скрытной работы, в простейшем виде команда его запуска выглядит так:
$ screencapture2 &
$
Вот, собственно, и все. Легко. Чтобы, к примеру, сделать 30 снимков с интервалом 5 секунд между ними, сценарий screencapture2 можно запустить так:
$ screencapture2 −f 5 −m 30 &
$
Результаты
Сценарий ничего не выводит на экран, но создает новые файлы, как показано в листинге 11.2. (Если сценарию передавался флаг −a, появится еще один дополнительный файл.)
Листинг 11.2.Снимки экрана, созданные за период времени сценарием screencapture2
$ ls −s *gif *jpg
4448 animated-captures.gif····4216 capture2.jpg····25728 capture5.jpg
4304 capture0.jpg············ 4680 capture3.jpg······4456 capture6.jpg
4296 capture1.jpg············ 4680 capture4.jpg
Усовершенствование сценария
Для мониторинга экрана в течение длительного периода времени необходимо найти какое-то средство, позволяющее определять, когда экран действительно изменяется, чтобы не захламлять дисковое пространство ненужными скриншотами. Существуют сторонние решения, которые позволяют использовать таким образом программу screencapture, — они сохраняют в журнал сведения о времени существенных изменений вместо десятков и сотен копий одного и того же экрана. (Имейте в виду, что, если на экране присутствуют часы, каждый следующий снимок будет немного отличаться от предыдущего, что значительно осложняет решение задачи!)
Такая возможность позволила бы реализовать «включение» и «выключение» мониторинга в виде обертки, которая делает снимки и определяет наличие изменений между последним и первым изображениями. Но если вы планируете использовать этот сценарий для создания анимированных файлов GIF, чтобы сделать из них обучающее видео, вам понадобится возможность точнее управлять продолжительностью съемки, предусмотрев отдельный аргумент командной строки.
№ 80. Динамическая настройка заголовка терминала
В листинге 11.3 приводится короткий забавный сценарий для пользователей OS X, обожающих работать в программе Terminal. Вместо установки и изменения заголовка окна в диалоге Terminal Preferences Profiles Window(ТерминалНастройкиПрофилиОкно) можно воспользоваться этим сценарием, чтобы изменить все, что вам захочется. В данном примере мы сделаем заголовок окна Terminal чуть более информативным, добавив в него вывод текущего рабочего каталога.
Листинг 11.3.Сценарий titleterm
#!/bin/bash
# titleterm — требует от программы OS X Terminal изменить заголовок окна,
#·· согласно значению, переданному этому короткому сценарию в аргументе.
if [$# −eq 0]; then
··echo "Usage: $0 title" >&2
··exit 1
else
··echo −e "\033]0;$@\007"
fi
exit 0
Программа Terminal поддерживает множество разнообразных управляющих последовательностей, и сценарий titleterm посылает последовательность ESC] 0; title BEL
, которая изменяет настройки заголовка, как определено значением аргумента.
Чтобы изменить заголовок окна Terminal, просто передайте сценарию titleterm новые настройки заголовка в аргументе командной строки.
Сценарий ничего не выводит в процессе работы, как показывает листинг 11.4.
Листинг 11.4.Запуск сценария titleterm для вывода текущего каталога в заголовке окна терминала
$ titleterm $(pwd)
$
Однако он мгновенно добавляет в заголовок окна программы Terminal вывод имени текущего каталога.
Усовершенствование сценария
Немного дополнив сценарий входа ( .bash_profile или какой-то другой, в зависимости от используемой оболочки входа), можно заставить окно Terminal автоматически отображать текущий каталог. Чтобы вдобавок к текущему каталогу вывести, например, название командной оболочки, попробуйте использовать следующее определение для tcsh:
alias precmd 'titleterm "$PWD"' [tcsh]
или для bash:
export PROMPT_COMMAND="titleterm \"\$PWD\"" [bash]
Просто добавьте одну из команд выше в свой сценарий входа, и при следующем запуске программы Terminal вы увидите, что заголовок окна изменяется при каждом переходе в другой каталог. Чертовски удобно.
№ 81. Создание суммарного списка медиатек iTunes
Читать дальше