Дейв Тейлор - Сценарии командной оболочки. 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-е издание», без необходимости каждый раз заново искать на чём Вы остановились. Поставьте закладку, и сможете в любой момент перейти на страницу, на которой закончили чтение.

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

Интервал:

Закладка:

Сделать

$ brew install ghostscript

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

Размер шрифта, используемого для нанесения водяных знаков, должен быть функцией от размеров изображения. Если изображение имеет ширину 280 пикселей, шрифт размером в 44 пункта окажется слишком большим, но, если изображение имеет ширину 3800 пикселей, тот же шрифт окажется слишком мелким. Можно также позволить пользователю самому выбирать подходящий размер шрифта или местоположение текста, добавив в сценарий поддержку соответствующих параметров.

ImageMagick в состоянии определять шрифты, присутствующие в вашей системе, поэтому вполне можно разрешить пользователю указывать шрифт по его названию.

№ 96. Добавление рамок вокруг изображений

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

Например, ниже приводится выдержка из документации с описанием параметра −frame:

Часть аргумента geometry с размерами определяет дополнительные ширину и высоту, которые будут добавлены к размерам изображения. Если смещения в аргументе geometry не заданы, тогда добавляется бордюр со сплошной заливкой. Смещения x и y , если они заданы, определяют ширину и высоту бордюра, которые отводятся для формирования фаски, внешней ( x пикселей) и внутренней ( y пикселей).

Получили?

Возможно, вам станет понятнее после разбора практического примера. Именно эту цель преследует функция usage() в сценарии, представленном в листинге 14.5.

Код

Листинг 14.5.Сценарий frameit

··#!/bin/bash

··# frameit — упрощает добавление графической рамки вокруг

··#·· изображения, используя ImageMagick.

··usage()

··{

··cat << EOF

··Usage: $(basename $0) −b border −c color imagename

····or $(basename $0) −f frame −m color imagename

··In the first case, specify border parameters as size x size or

··percentage x percentage followed by the color desired for the

··border (RGB or color name).

··In the second instance, specify the frame size and offset,

··followed by the matte color [8] В первом случае определяются параметры бордюра, как пиксели×пиксели или проценты×проценты, за которыми следует желаемый цвет бордюра (в формате RGB или в виде названия цвета). Во втором случае определяются размеры рамки и ее фасок, за которым следует цвет рамки. .

··

··EXAMPLE USAGE:

····$(basename $0) −b 15x15 −c black imagename

····$(basename $0) −b 10%x10 % −c gray imagename

····$(basename $0) −f 10x10+10+0 imagename

····$(basename $0) −f 6x6+2+2 −m tomato imagename

··EOF

··exit 1

··}

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

··# Большая его часть занимается парсингом начальных аргументов!

··while getopts "b: c: f: m: " opt; do

····case $opt in

······b) border="$OPTARG";······;;

······c) bordercolor="$OPTARG";;;

······f) frame="$OPTARG";······;;

······m) mattecolor="$OPTARG";··;;

······?) usage;················;;

····esac

··done

··shift $(($OPTIND — 1)) # Употребить все проанализированные аргументы.

··if [$# −eq 0]; then # Изображения не указаны?

····usage

··fi

··# Что требуется добавить? Бордюр или рамку?

··if [! -z "$bordercolor" −a! −z "$mattecolor"]; then

····echo "$0: You can't specify a color and matte color simultaneously." >&2

····exit 1

··fi

··if [! -z “$frame” −a! −z “$border”]; then

····echo “$0: You can’t specify a border and frame simultaneously.” >&2

····exit 1

··fi

··if [! -z “$border”]; then

····args=”-bordercolor $bordercolor −border $border”

··else

····args=”-mattecolor $mattecolor −frame $frame”

··fi

картинка 559··for name

··do

····suffix="$(echo $name | rev | cut −d. -f1 | rev)"

····prefix="$(echo $name | rev | cut −d. -f2- | rev)"

картинка 560····newname="$prefix+f.$suffix"

····echo "Adding a frame to image $name, saving as $newname"

картинка 561····convert $name $args $newname

··done

··exit 0

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

Если не считать использования команды getopts для анализа сложных параметров, которую мы уже исследовали, этот сценарий действует достаточно прямолинейно. Основная работа в нем выполняется в нескольких последних строках. В цикле for картинка 562создается имя нового файла, включающее "+f" в конце (но перед расширением, определяющим тип файла).

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

Интервал:

Закладка:

Сделать

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

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


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

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

x