··delay=2·········· # Задержка по умолчанию, в секундах.
··psize="1200x900>" # Предпочтительные размеры для отображения.
··if [$# −eq 0]; then
····echo "Usage: $(basename $0) watch-directory" >&2
····exit 1
··fi
··watch="$1"
··if [! -d "$watch"]; then
····echo "$(basename $0): Specified directory $watch isn't a directory." >&2
····exit 1
··fi
··cd "$watch"
··if [$? -ne 0]; then
····echo "$(basename $0): Failed trying to cd into $watch" >&2
····exit 1
··fi
··suffixes="$(file * | grep image | cut −d: −f1 | rev | cut −d. -f1 | \
····rev | sort | uniq | sed 's/^/\*./')"
··if [-z "$suffixes"]; then
····echo "$(basename $0): No images to display in folder $watch" >&2
····exit 1
··fi
··/bin/echo −n "Displaying $(ls $suffixes | wc −l) images from $watch "
··set −f; echo "with suffixes $suffixes"; set +f
··display −loop 0 −delay $delay −resize $psize −backdrop $suffixes
··exit 0
Как это работает
Сценарий в листинге 13.6 потребовал от нас не очень много усилий, если не считать изматывающего процесса изучения всех аргументов ImageMagick, необходимых, чтобы добиться желаемого эффекта с помощью команды display. Вся глава 14 будет посвящена ImageMagick, поскольку инструменты, входящие в состав пакета, чертовски полезны. С помощью этого сценария вы можете подготовиться к тому, что вас ждет. А пока просто поверьте, что все написано правильно, в том числе и странного вида определение геометрии изображений 1200x900> , где завершающий символ > означает: «изменять размеры изображений до указанных, сохраняя пропорции оригинальной геометрии».
Иными словами, изображение с размерами 2200 × 1000 будет автоматически уменьшено до 1200 пикселей по горизонтали и, чтобы сохранить пропорции, с 1000 до 545 пикселей по вертикали. Отлично!
Сценарий также гарантирует, что команда file найдет все файлы изображений в указанном каталоге, после чего, с помощью последовательности замысловатых преобразований, имена найденных файлов будут сокращены до расширений (*.jpg, *.png и так далее).
Проблема этого кода в сценарии на языке командной оболочки в том, что каждый раз, когда сценарий ссылается на звездочку, она замещается списком всех имен файлов, соответствующих шаблонным символам, а значит, он выведет не последовательность символов *.jpg, но имена всех файлов .jpg в текущем каталоге. Именно поэтому сценарий временно запрещает автоматическую подстановку имен файлов , способность командной оболочки выполнять подстановку имен файлов вместо шаблонных символов.
Однако если автоматическую подстановку выключить для всего сценария, программа display сообщит, что не может найти файл изображения с именем *.jpg. А это плохо.
Запуск сценария
Передайте сценарию каталог с одним или несколькими файлами изображений, в идеале — фотоархив из облачной системы хранения данных, например OneDrive или Dropbox, как показано в листинге 13.7.
Результаты
Листинг 13.7. Запуск сценария slideshow для отображения изображений из облачного архива
$ slideshow ~/SkyDrive/Pictures/
Displaying 2252 images from ~/Skydrive/Pictures/ with suffixes *.gif *.jpg *.png
После запуска сценария на экране должно появиться новое окно, в котором, сменяя друг друга, будут появляться сохраненные и синхронизированные изображения. Прекрасный сценарий для совместного просмотра всех замечательных фотографий, которые вы сделали в отпуске!
Усовершенствование сценария
В этот сценарий много чего можно было бы добавить, чтобы сделать его более элегантным, например, позволить пользователям самим указывать параметры, которые в настоящее время зашиты в вызов display (такие, как размеры изображений). В частности, вы можете разрешить использовать разные устройства отображения, чтобы выводить изображение на втором экране, или менять скорость смены изображений.
№ 92. Синхронизация файлов с Google Drive
Google Drive — еще одна популярная облачная система хранения данных. В сочетании с комплектом офисных утилит Google, она служит шлюзом к целой системе редактирования и публикации, что делает ее особенно интересной в роли инструмента синхронизации. Скопируйте файл в формате Microsoft Word на свое устройство Google Drive, и вы сможете править его в любом веб-браузере, на любом компьютере. То же относится к презентациям, электронным таблицам и даже фотографиям. Чертовски удобно!