Наконец, как в любой другой игре командной строки, интерфейс можно было бы доработать. Мы оставим это на ваше усмотрение. Мы также предлагаем вам самим подумать о том, какие другие карточные игры можно было бы реализовать со столь удобной библиотекой функций.
Глава 13. Работа в облаке
Одним из важнейших достижений последних десяти лет стало дальнейшее проникновение Интернета в прикладные области. В первую очередь это касается интернет-хранилищ данных. Первоначально они служили только для хранения резервных копий, но в наши дни, с распространением мобильных технологий, облачные хранилища стали все чаще заменять обычные диски. В число приложений, пользующихся облачными сервисами, входят музыкальные библиотеки (iCloud for iTunes) и файловые архивы (OneDrive в Windows и Google Drive для устройств на Android).
Некоторые современные системы полностью основаны на облачных сервисах. Примером может служить операционная система Chrome компании Google, все рабочее окружение которой полностью основано на веб-браузере. Десять лет назад такое показалось бы странным, но теперь, если вспомнить, сколько времени мы проводим в браузере… в общем, в Купертино или Редмонде никто над этим смеяться не будет.
Облачные технологии можно использовать и в сценариях командной оболочки, так что давайте попробуем. Сценарии в этой главе в основном предназначены для OS X, но предлагаемые в них идеи легко воплотить в Linux или в других BSD-системах.
№ 89. Поддержание непрерывной работы Dropbox
Dropbox — одна из множества облачных систем хранения данных, ставшая особенно популярной благодаря своей широкой доступности в iOS, Android, OS X, Windows и Linux. Важно понимать, что Dropbox — облачная система, то есть та ее часть, что действует на вашем устройстве, — это лишь небольшое приложение, которое выполняется в фоновом режиме, соединяет вашу систему с серверами Dropbox в Интернете и имеет весьма скудный пользовательский интерфейс. Если это приложение не запущено, то невозможно успешно копировать и синхронизировать файлы с вашего компьютера в Dropbox.
Чтобы проверить, присутствует ли в системе работающая программа, достаточно вызвать команду ps, как показано в листинге 13.1.
Листинг 13.1.Сценарий startdropbox
#!/bin/bash
# startdropbox — гарантирует выполнение Dropbox в OS X
app="Dropbox.app"
verbose=1
running="$(
ps aux | grep −i $app | grep −v grep)"
if ["$1" = "-s"]; then # −s — немой режим.
··verbose=0
fi
if [! -z "$running"]; then
··if [$verbose −eq 1]; then
····echo "$app is running with PID $(echo $running | cut −d\ −f2)"
··fi
else
··if [$verbose −eq 1]; then
····echo "Launching $app"
··fi
··open −a $app
fi
exit 0
Ключевую роль в этом сценарии играют две строки со значками
и
. Первая вызывает команду ps
и затем использует последовательность команд grep, чтобы отыскать требуемое приложение — Dropbox.app — и одновременно исключить из результатов саму команду grep. Если получится непустая строка, значит, Dropbox действует в режиме демона ( демоном называется программа, которая предназначена для работы в фоновом режиме, 24 часа в сутки, 7 дней в неделю, и решает те или иные задачи, не требуя вмешательства пользователя), и на этом все.
Если программа Dropbox.app не запущена, сценарий вызывает команду open
в OS X, которая сама отыщет приложение и запустит его.
Если сценарий вызывается с флагом −s, он ничего не выводит. Но по умолчанию выводится информация о состоянии программы, как показано в листинге 13.2.
Листинг 13.2.Вызов сценария startdropbox для запуска Dropbox.app
$ startdropbox
Launching Dropbox.app
$ startdropbox
Dropbox.app is running with PID 22270
Усовершенствование сценария
В этом сценарии мало что можно усовершенствовать, но, если вы пожелаете перенести его в систему Linux, не забудьте установить официальные пакеты Dropbox с веб-сайта проекта. Запустить Dropbox (после правильной настройки) можно командой startdropbox.
№ 90. Синхронизация с Dropbox
Не составляет труда написать сценарий, синхронизирующий папку или набор файлов с облачной системой, такой как Dropbox. Система сама заботится о синхронизации содержимого локального каталога Dropbox с копией в облаке, обычно эмулируя локальный жесткий диск в системе.
Читать дальше