Выбрать главу

··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, и вы сможете править его в любом веб-браузере, на любом компьютере. То же относится к презентациям, электронным таблицам и даже фотографиям. Чертовски удобно!