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

Здесь есть возможность читать онлайн «Дейв Тейлор - Сценарии командной оболочки. Linux, OS X и Unix. 2-е издание» весь текст электронной книги совершенно бесплатно (целиком полную версию без сокращений). В некоторых случаях можно слушать аудио, скачать через торрент в формате fb2 и присутствует краткое содержание. Город: СПб., Год выпуска: 2017, ISBN: 2017, Издательство: Питер, Жанр: Программирование, ОС и Сети, на русском языке. Описание произведения, (предисловие) а так же отзывы посетителей доступны на портале библиотеки ЛибКат.

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

Предлагаем к чтению аннотацию, описание, краткое содержание или предисловие (зависит от того, что написал сам автор книги «Сценарии командной оболочки. Linux, OS X и Unix. 2-е издание»). Если вы не нашли необходимую информацию о книге — напишите в комментариях, мы постараемся отыскать её.

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

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

Ниже представлен текст книги, разбитый по страницам. Система сохранения места последней прочитанной страницы, позволяет с удобством читать онлайн бесплатно книгу «Сценарии командной оболочки. Linux, OS X и Unix. 2-е издание», без необходимости каждый раз заново искать на чём Вы остановились. Поставьте закладку, и сможете в любой момент перейти на страницу, на которой закончили чтение.

Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Сценарий в листинге 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.

Усовершенствование сценария

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

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

Интервал:

Закладка:

Сделать

Похожие книги на «Сценарии командной оболочки. Linux, OS X и Unix. 2-е издание»

Представляем Вашему вниманию похожие книги на «Сценарии командной оболочки. Linux, OS X и Unix. 2-е издание» списком для выбора. Мы отобрали схожую по названию и смыслу литературу в надежде предоставить читателям больше вариантов отыскать новые, интересные, ещё непрочитанные произведения.


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

Обсуждение, отзывы о книге «Сценарии командной оболочки. Linux, OS X и Unix. 2-е издание» и просто собственные мнения читателей. Оставьте ваши комментарии, напишите, что Вы думаете о произведении, его смысле или главных героях. Укажите что конкретно понравилось, а что нет, и почему Вы так считаете.

x