Дейв Тейлор - Сценарии командной оболочки. 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-е издание - читать книгу онлайн бесплатно, автор Дейв Тейлор
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

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

Сценарий принимает два аргумента: имя файла с изображением и текст, который должен быть нанесен на него. Если текст содержит несколько слов, не забудьте заключить его в кавычки, как показано в листинге 14.4, чтобы сценарий правильно воспринял фразу целиком.

Листинг 14.4.Запуск сценария watermark

$ watermark test.png "(C) 2016 by Dave Taylor"

Created new watermarked image file test+wm.png.

Результаты

Результат показан на рис. 14.1.

Рис 141Изображение с нанесенными водяными знаками Если вы столкнетесь с - фото 558

Рис. 14.1.Изображение с нанесенными водяными знаками

Если вы столкнетесь с ошибкой unable to read font (невозможно прочитать шрифт), скорее всего, в вашей системе отсутствует пакет Ghostscript (в OS X он устанавливается по умолчанию). Чтобы устранить проблему, установите Ghostscript с помощью своего диспетчера пакетов. Например, в OS X это можно сделать следующей командой:

$ 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" в конце (но перед расширением, определяющим тип файла).

Например, для имени файла abandoned-train.png в переменную suffix будет записано расширение png, а в переменную prefix — имя abandoned-train. Обратите внимание на пропажу точки (.) — она возвращается на место во время сборки нового имени файла картинка 563. После этого остается только вызвать программу convert со всеми параметрами картинка 564.

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

Укажите тип желаемой рамки — с помощью параметра −frame (для придания 3-мерного вида) или −border (простой бордюр) — и ее размеры, предпочтительный цвет для бордюра или лицевой поверхности рамки, а также имя исходного файла (или файлов). Например, как показано в листинге 14.6.

Листинг 14.6.Запуск сценария frameit

$ frameit −f 15%x15 %+10+10 −m black abandoned-train.png

Adding a frame to image abandoned-train.png, saving as abandoned-train+f.png

Результаты

Результат этого вызова показан на рис. 14.2.

Рис 1423мерная рамка матового стекла в музейном стиле Усовершенствование - фото 565

Рис. 14.2.3-мерная рамка матового стекла в музейном стиле

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

Интервал:

Закладка:

Сделать


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

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




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


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


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

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