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

Интервал:

Закладка:

Сделать

Running mogrify −resize 50 % tmp//0696cf00-660e-11e6-8d38-001c42daa3a7.jpg

-опущено-

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

Часто бывает полезно иметь возможность указать имя файла внутри команды или использовать лексемы, подобные тем, что упоминались в описании сценария bulkrename (сценарий № 102 выше): специальные строки, динамически заменяемые во время выполнения фактическими значениями (например, %d можно было бы заменять текущей датой, или %t отметкой текущего времени). Реализация поддержки подобных специальных лексем в команде или в именах файлов стала бы ценным усовершенствованием сценария.

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

№ 104. Определение фазы Луны

Если вы оборотень, ведьма или просто интересуетесь лунным календарем, вам наверняка пригодится полезная и познавательная возможность определять фазы Луны.

Вся сложность в том, что Луна совершает полный оборот вокруг Земли за 27,32 дня. И ее фаза фактически зависит от вашего местоположения на Земле. Однако эта зависимость невелика, так что фазы Луны можно определять только по заданной дате.

Но зачем разбираться со всеми этими сложностями, если в Интернете полно сайтов, которые вычисляют фазу Луны для любой даты в прошлом, в настоящем или в будущем? Для сценария в листинге Б.5 мы используем для этого тот же сайт, что использует Google: http://www.moongiant.com/.

Код

Листинг Б.5.Сценарий moonphase

··#!/bin/bash

··# moonphase — сообщает фазу Луны (в действительности процент

··#·· освещенности) на текущую или указанную дату.

··# Формат запроса к Moongiant.com:

··#·· http://www.moongiant.com/phase/MM/DD/YYYY

··# Если дата не указана, использовать текущую дату.

··if [$# −eq 0]; then

····thedate="today"

··else

····# Дата указана. Проверить правильность ее формата.

····mon="$(echo $1 | cut −d/ −f1)"

····day="$(echo $1 | cut −d/ −f2)"

····year="$(echo $1 | cut −d/ −f3)"

картинка 631····if [-z "$year" −o — z "$day"]; then # Нулевая длина?

······echo "Error: valid date format is MM/DD/YYYY"

······exit 1

····fi

····thedate="$1" # Отсутствие проверки ошибок = опасность.

··fi

··url="http://www.moongiant.com/phase/$thedate"

картинка 632··pattern="Illumination: "

картинка 633··phase="$(curl −s "$url" | grep "$pattern" | tr ',' '\

··' | grep "$pattern" | sed 's/[^0–9]//g')"

··# Сайт возвращает ответ в формате: "Illumination: NN%\n<\/span>"

··if ["$thedate" = "today"]; then

····echo "Today the moon is ${phase}% illuminated."

··else

····echo "On $thedate the moon = ${phase}% illuminated."

··fi

··exit 0

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

По аналогии с другими сценариями, извлекающими информацию из веб-запросов, основу сценария moonphase составляет код конструирования URL запроса и извлечения требуемого ответа из потока данных в формате HTML.

Анализ сайта показал, что поддерживается два вида адресов URL: один определяет текущую дату и имеет вид «phase/today», а другой — дату в прошлом или в будущем в формате MM/DD/YYYY, например: «phase/08/03/2017».

Задайте дату в правильном формате, и вы получите фазу Луны в указанный день. Но мы не можем просто добавить дату к доменному имени сайта, не выполнив некоторые проверки. С этой целью сценарий разбивает ввод пользователя на три поля — месяц, день и год — и затем проверяет строковые значения дня и года на ненулевую длину картинка 634. В сценарий можно было бы добавить еще несколько проверок на ошибки, о которых рассказывается в разделе «Усовершенствование сценария».

Самая хитрая часть любого сценария, извлекающего информацию из Интернета — правильное определение шаблона, позволяющего получить желаемые данные. В сценарии moonphase этот шаблон определяется в строке картинка 635. Самой длинной и сложной строкой ( картинка 636) сценарий получает страницу с сайта moongiant.com и затем, с помощью последовательности команд grep и sed, извлекает строку, соответствующую заданному шаблону.

После этого остается только вывести освещенности для текущей или для указанной даты с использованием заключительной инструкции if/then/else.

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

При вызове без аргумента сценарий moonphase выводит освещенности для текущей даты. Попробуйте указать любой день в прошлом или в будущем в формате MM/DD/YYYY, как показано в листинге Б.6.

Результаты

Листинг Б.6.Запуск сценария moonphase

$ moonphase 08/03/2121

On 08/03/2121 the moon = 74 % illuminated.

$ moonphase

Today the moon is 100 % illuminated.

$ moonphase 12/12/1941

On 12/12/1941 the moon = 43 % illuminated.

ПРИМЕЧАНИЕ

12 декабря 1941 года кинокомпания Universal выпустила на экраны кинотеатров классический фильм ужасов «The Wolf Man» («Человек-волк»). И в этот день Луна не была полной. Проверьте!

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

С точки зрения внутренней реализации, сценарий можно было бы существенно усовершенствовать, добавив дополнительные проверки на ошибки или даже просто задействовав сценарий № 3 из главы 1, чтобы дать пользователям возможность вводить даты в разных форматах. Также инструкцию if/then/else в конце неплохо было бы заменить функцией, преобразующей значение процента освещенности в более общепринятые названия фаз луны, такие как «убывающая», «растущая» или номер четверти. На сайте NASA имеется веб-страница, которую можно использовать для определения разных фаз Луны: http://starchild.gsfc.nasa.gov/docs/StarChild/solar_system_level2/moonlight.html.

Примечания

1

Произносится как «ше-банг». — Примеч. пер.

2

Символы «EOF» должны находиться в начале строки, т. е. перед ними не должно быть пробелов. Это требование синтаксиса встроенных документов. В оригинале это правило нарушено. В данном листинге перед всеми строками добавлены 2 пробела, чтобы не нарушить отступы. Они к делу не относятся, и в данном случае считается, что метка EOF находится в начале строки, без отступа. — Примеч. пер .

3

Тема: Внимание: ashley превысил квоту

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

Интервал:

Закладка:

Сделать


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

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




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


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


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

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