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

Интервал:

Закладка:

Сделать

Код

Листинг 7.12.Сценарий weather

··#!/bin/bash

··# weather — использует Wunderground API для получения информации

··#·· о погоде по почтовому индексу (США).

··if [$# −ne 1]; then

····echo "Usage: $0 "

····exit 1

··fi

··apikey="b03fdsaf3b2e7cd23" # Это недействительный API-ключ — вы

···························· #·· должны получить свой.

картинка 367··weather=`curl −s \

······"https://api.wunderground.com/api/$apikey/conditions/q/$1.xml"`

картинка 368··state=`xmllint −xpath \

······//response/current_observation/display_location/full/text\(\) \

······<(echo $weather)`

··zip=`xmllint −xpath \

······//response/current_observation/display_location/zip/text\(\) \

······<(echo $weather)`

··current=`xmllint −xpath \

······//response/current_observation/temp_f/text\(\) \

······<(echo $weather)`

··condition=`xmllint −xpath \

······//response/current_observation/weather/text\(\) \

······<(echo $weather)`

··echo $state" ("$zip"): Current temp "$current" F and "$condition" outside."

··exit 0

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

Сценарий вызывает команду curl, чтобы отправить запрос к Wunderground API и сохранить HTTP-ответ в переменной weather картинка 369. Затем он использует утилиту xmllint (ее легко установить с помощью диспетчера пакетов, такого как apt, yum или brew) для выполнения XPath-запроса к полученным данным картинка 370, причем в конце каждого вызова xmllint применяется интересный синтаксис <(echo $weather), поддерживаемый языком bash. Эта конструкция принимает вывод команды внутри скобок и передает его указанной программе в виде дескриптора файла, то есть программа думает, что читает настоящий файл. После выборки необходимой информации из полученных данных в формате XML она выводится в виде удобочитаемого сообщения с краткими сведениями о погоде.

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

Запуская сценарий, достаточно передать ему почтовый индекс, как показано в листинге 7.13. Очень просто!

Результаты

Листинг 7.13.Тестирование сценария weather

$ weather 78727

Austin, TX (78727): Current temp 59.0F and Clear outside.

$ weather 80304

Boulder, CO (80304): Current temp 59.2F and Clear outside.

$ weather 10010

New York, NY (10010): Current temp 68.7F and Clear outside.

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

Откроем небольшой секрет. В действительности этот сценарий принимает не только почтовые индексы. Службе Wunderground API можно также передать название региона, например CA/San_Francisco (попробуйте передать эту строку сценарию weather!). Однако такой формат не очень удобен: он требует использовать символы подчеркивания вместо пробелов и символ слеша (/) в середине. В качестве одного из усовершенствований можно было бы добавить в сценарий запрос на ввод аббревиатуры штата и названия города и автоматически заменять пробелы символами подчеркивания, если сценарий запущен без аргумента. Как обычно, можно также добавить дополнительную проверку ошибок. Например, что получится, если передать сценарию четырехзначный или недействительный почтовый индекс?

№ 59. Поиск информации о кинофильме в базе IMDb

Сценарий в листинге 7.14 демонстрирует более сложный пример доступа к Интернету с помощью lynx для поиска в базе данных Internet Movie Database ( http://www.imdb.com/) сведений о кинофильмах по указанному шаблону. База данных IMDb назначает уникальный числовой код каждому фильму, каждому телевизионному сериалу и даже каждой отдельной серии; если пользователь укажет такой код, данный сценарий вернет краткое описание фильма. В противном случае он вернет список фильмов, частично или полностью соответствующих указанному названию.

В зависимости от типа запроса (числовой код или название) сценарий обращается по разным адресам URL и сохраняет результаты в кэше, чтобы многократно обойти содержимое страницы для извлечения разных фрагментов информации. Для этого используется много — очень много! — вызовов команд sed и grep, в чем вы можете убедиться лично.

Код

Листинг 7.14.Сценарий moviedata

··#!/bin/bash

··# moviedata — получая название фильма или сериала, возвращает список

··#·· совпадений. Если пользователь укажет числовой код IMDb, вернет

··#·· краткое описание фильма. Использует базу данных Internet Movie Database.

··titleurl="http://www.imdb.com/title/tt"

··imdburl="http://www.imdb.com/find?s=tt&exact=true&ref_=fn_tt_ex&q="

··tempout="/tmp/moviedata.$$"

картинка 371··summarize_film()

··{

····# Форматирует описания фильма.

····grep "

····grep −color=never −A2 '

Plot:' $tempout | tail -1 | \

······cut −d\< −f1 | fmt | sed 's/^/ /'

····exit 0

··}

··trap "rm −f $tempout" 0 1 15

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

····echo "Usage: $0 {movie title | movie ID}" >&2

····exit 1

··fi

··#########

··# Выяснить тип запроса: по названию или по коду IMDb

··nodigits="$(echo $1 | sed 's/[[: digit: ]]*//g')"

··if [$# −eq 1 −a — z "$nodigits"]; then

····lynx −source "$titleurl$1/combined" > $tempout

····summarize_film

····exit 0

··fi

··##########

··# Это не код IMDb, поэтому нужно выполнить поиск…

··fixedname="$(echo $@ | tr ' ' '+')" # для формирования URL

··url="$imdburl$fixedname"

картинка 372··lynx −source $imdburl$fixedname > $tempout

··# Нет результатов?

картинка 373··fail="$(grep −color=never '

No ' $tempout)"

··# Если найдено несколько похожих названий…

··if [! -z "$fail"]; then

····echo "Failed: no results found for $1"

····exit 1

··elif [! -z "$(grep '

Displaying' $tempout)"]; then

····grep −color=never '/title/tt' $tempout | \

····sed 's/</\

····grep −vE '(.png|.jpg|>[]*$)' | \

····grep −A 1 "a href=" | \

····grep −v '^-$' | \

····sed 's/····awk '(NR % 2 == 1) { title=$0 } (NR % 2 == 0) { print title " " $0 }' | \

····sed 's/\/.*>/: /' | \

····sort

··fi

··exit 0

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

Этот сценарий конструирует разные адреса URL, в зависимости от содержимого аргумента. Если пользователь указал числовой код, сценарий конструирует соответствующий URL, загружает с помощью lynx сведения о фильме, сохраняет их в файле $tempout картинка 374и затем вызывает функцию summarize_film() картинка 375. Ничего сложного.

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

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

Интервал:

Закладка:

Сделать


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

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




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


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


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

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