Дейв Тейлор - Сценарии командной оболочки. Linux, OS X и Unix. 2-е издание

Тут можно читать онлайн Дейв Тейлор - Сценарии командной оболочки. Linux, OS X и Unix. 2-е издание - бесплатно полную версию книги (целиком) без сокращений. Жанр: comp-programming, издательство Питер, год 2017. Здесь Вы можете читать полную версию (весь текст) онлайн без регистрации и SMS на сайте лучшей интернет библиотеки ЛибКинг или прочесть краткое содержание (суть), предисловие и аннотацию. Так же сможете купить и скачать торрент в электронном формате fb2, найти и слушать аудиокнигу на русском языке или узнать сколько частей в серии и всего страниц в публикации. Читателям доступно смотреть обложку, картинки, описание и отзывы (комментарии) о произведении.
  • Название:
    Сценарии командной оболочки. Linux, OS X и Unix. 2-е издание
  • Автор:
  • Жанр:
  • Издательство:
    Питер
  • Год:
    2017
  • Город:
    СПб.
  • ISBN:
    978-5-496-03029-8
  • Рейтинг:
    5/5. Голосов: 11
  • Избранное:
    Добавить в избранное
  • Отзывы:
  • Ваша оценка:
    • 100
    • 1
    • 2
    • 3
    • 4
    • 5

Дейв Тейлор - Сценарии командной оболочки. Linux, OS X и Unix. 2-е издание краткое содержание

Сценарии командной оболочки. Linux, OS X и Unix. 2-е издание - описание и краткое содержание, автор Дейв Тейлор, читайте бесплатно онлайн на сайте электронной библиотеки LibKing.Ru
Сценарии командной оболочки помогают системным администраторам и программистам автоматизировать рутинные задачи с тех самых пор, как появились первые компьютеры. С момента выхода первого издания этой книги в 2004 году многое изменилось, однако командная оболочка bash только упрочила свои лидирующие позиции. Поэтому умение использовать все ее возможности становится насущной необходимостью для системных администраторов, инженеров и энтузиастов. В этой книге описываются типичные проблемы, с которыми можно столкнуться, например, при сборке программного обеспечения или координации действий других программ. А решения даются так, что их легко можно взять за основу и экстраполировать на другие схожие задачи.
Цель этой книги — продемонстрировать практические приемы программирования сценариев на bash и познакомить с самыми распространенными утилитами на коротких и компактных примерах, не вдаваясь в излишние подробности. Экспериментируйте с этими сценариями — ломайте, исправляйте и приспосабливайте их под свои нужды, чтобы понять, как они работают. Только так вы сможете решать самые сложные задачи.

Сценарии командной оболочки. Linux, OS X и Unix. 2-е издание - читать онлайн бесплатно полную версию (весь текст целиком)

Сценарии командной оболочки. Linux, OS X и Unix. 2-е издание - читать книгу онлайн бесплатно, автор Дейв Тейлор
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Чтобы проверить, присутствует ли в системе работающая программа, достаточно вызвать команду ps, как показано в листинге 13.1.

Код

Листинг 13.1.Сценарий startdropbox

#!/bin/bash

# startdropbox — гарантирует выполнение Dropbox в OS X

app="Dropbox.app"

verbose=1

running="$( картинка 525ps 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

картинка 526··open −a $app

fi

exit 0

Как это работает

Ключевую роль в этом сценарии играют две строки со значками картинка 527и картинка 528. Первая вызывает команду ps картинка 529и затем использует последовательность команд grep, чтобы отыскать требуемое приложение — Dropbox.app — и одновременно исключить из результатов саму команду grep. Если получится непустая строка, значит, Dropbox действует в режиме демона ( демоном называется программа, которая предназначена для работы в фоновом режиме, 24 часа в сутки, 7 дней в неделю, и решает те или иные задачи, не требуя вмешательства пользователя), и на этом все.

Если программа Dropbox.app не запущена, сценарий вызывает команду open картинка 530в 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 с копией в облаке, обычно эмулируя локальный жесткий диск в системе.

Сценарий в листинге 13.3, syncdropbox, пользуется этим обстоятельством и позволяет легко и просто скопировать каталог с файлами или заданный набор файлов во вселенную Dropbox. В первом случае копируются все файлы в каталоге; во втором — файлы из заданного списка сбрасываются в папку sync в Dropbox.

Код

Листинг 13.3.Сценарий syncdropbox

#!/bin/bash

# syncdropbox — синхронизирует заданный набор файлов или указанную

#·· папку с хранилищем Dropbox. Это достигается путем копирования

#·· папки в ~/Dropbox или набора файлов в папку sync в Dropbox с последующим

#·· запуском Dropbox.app, если это необходимо.

name="syncdropbox"

dropbox="$HOME/Dropbox"

sourcedir=""

targetdir="sync" # Целевая папка в Dropbox для отдельных файлов.

# Проверить начальные аргументы.

if [$# −eq 0]; then

··echo "Usage: $0 [-d source-folder] {file, file, file}" >&2

··exit 1

fi

if ["$1" = "-d"]; then

··sourcedir="$2"

··shift; shift

fi

# Проверка допустимости.

if [! -z "$sourcedir" −a $# −ne 0]; then

··echo "$name: You can't specify both a directory and specific files." >&2

··exit 1

fi

if [! -z "$sourcedir"]; then

··if [! -d "$sourcedir"]; then

····echo "$name: Please specify a source directory with −d." >&2

····exit 1

··fi

fi

#######################

#### ГЛАВНЫЙ БЛОК

#######################

if [! -z "$sourcedir"]; then

картинка 531··if [-f "$dropbox/$sourcedir" −o — d "$dropbox/$sourcedir"]; then

····echo "$name: Specified source directory $sourcedir already exists." >&2

····exit 1

··fi

··echo "Copying contents of $sourcedir to $dropbox…"

··# −a обеспечивает рекурсивное копирование с сохранением

··#·· информации о владельце и пр.

··cp −a "$sourcedir" $dropbox

else

··# Исходный каталог отсутствует, поэтому переходим к отдельным файлам.

··if [! -d "$dropbox/$targetdir"]; then

····mkdir "$dropbox/$targetdir"

····if [$? -ne 0]; then

······echo "$name: Error encountered during mkdir $dropbox/$targetdir." >&2

······exit 1

····fi

··fi

··# Все готово! Скопировать указанные файлы.

картинка 532··cp −p — v "$@" "$dropbox/$targetdir"

fi

# Теперь запустить приложение Dropbox, если необходимо, чтобы выполнить

#·· фактическую синхронизацию.

exec startdropbox −s

Как это работает

Большая часть листинга выполняет проверку на наличие ошибок, что очень утомительно, но необходимо, чтобы гарантировать правильную работу сценария и ничего не испортить. (Никто не хочет потерять свои данные!)

Выражения проверки имеют довольно сложный вид, как, например, в строке картинка 533. Данное выражение проверяет, имеется ли в папке Dropbox файл (что было бы странно) или каталог с именем в переменной $sourcedir. Дословно эта проверка читается так: «если существует-файл $dropbox/$sourcedir ИЛИ существует-каталог $dropbox/$sourcedir, тогда…».

В другой интересной строке вызывается команда cp картинка 534для копирования отдельных файлов. Желающие могут почитать страницу справочного руководства для команды cp (man cp), чтобы узнать, что значат использованные здесь флаги. На всякий случай напомним, что $@ — это краткая форма представления всех позиционных аргументов командной строки, переданных при вызове сценария.

Запуск сценария

Подобно многим сценариям из этой книги, данный сценарий можно запустить без аргументов, чтобы получить краткую инструкцию о порядке его использования, как показано в листинге 13.4.

Листинг 13.4.Вывод сценария syncdropbox с инструкцией о порядке его использования

$ syncdropbox

Usage: syncdropbox [-d source-folder] {file, file, file}

Результаты

Далее, как показано в листинге 13.5, мы выбрали файл и сохранили его в Dropbox.

Листинг 13.5.Синхронизация выбранного файла с хранилищем Dropbox

$ syncdropbox test.html

test.html — > /Users/taylor/Dropbox/sync/test.html

$

Довольно просто и удобно, если вспомнить, что тем самым вы делаете файлы или каталог с файлами доступными на других устройствах, где настроена ваша учетная запись в Dropbox.

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать


Дейв Тейлор читать все книги автора по порядку

Дейв Тейлор - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки LibKing.




Сценарии командной оболочки. Linux, OS X и Unix. 2-е издание отзывы


Отзывы читателей о книге Сценарии командной оболочки. Linux, OS X и Unix. 2-е издание, автор: Дейв Тейлор. Читайте комментарии и мнения людей о произведении.


Понравилась книга? Поделитесь впечатлениями - оставьте Ваш отзыв или расскажите друзьям

Напишите свой комментарий
x