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

Интервал:

Закладка:

Сделать

Если сценарию передается существующее имя пользователя, он должен вывести сводную информацию об этом пользователе GitHub, как показано в листинге 7.7.

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

$ githubuser brandonprry

Brandon Perry is the name of the GitHub user.

They have 67 followers.

They are following 0 other users.

Their account was created on 2010-11-16T02:06:41Z.

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

Этот сценарий имеет большой потенциал благодаря объему информации, возвращаемому GitHub API. Он выводит только четыре значения из возвращаемых JSON-данных. Создание «резюме» на основе информации, которую API возвращает подобно многим веб-службам, лишь одна из возможностей.

№ 56. Поиск по почтовому индексу

Для демонстрации еще одного приема извлечения информации из Интернета, на этот раз с помощью curl, создадим простой инструмент поиска почтовых индексов. Передайте сценарию в листинге 7.8 почтовый индекс, и вы узнаете город и штат (в США), которому он принадлежит. Достаточно просто.

Самой очевидной была бы идея использовать официальный веб-сайт почтовой службы США (US Postal Service), но мы задействуем другой сайт, http://city-data.com/, в котором для каждого почтового индекса отводится своя веб-страница, что упрощает извлечение информации.

Код

Листинг 7.8.Сценарий zipcode

#!/bin/bash

# zipcode — получая почтовый индекс, определяет город и штат в США.

#·· Использует сайт city-data.com, в котором для каждого почтового

#·· индекса отводится своя веб-страница.

baseURL="http://www.city-data.com/zips"

/bin/echo −n "ZIP code $1 is in "

curl −s — dump "$baseURL/$1.html" | \

··grep −i '

··cut −d\(-f2 | cut −d\) −f1

exit 0

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

Адреса URL страниц с информацией о почтовых индексах на сайте http://city-data.com/имеют единообразную организацию: сам почтовый индекс является заключительной частью URL:

http://www.city-data.com/zips/80304.html

Такое единообразие позволяет легко сконструировать адрес URL, соответствующий заданному почтовому индексу. Возвращаемая страница содержит название города в заголовке, которое легко отличить по открывающей и закрывающей круглым скобкам, как показано ниже:

schools, population, income, averages, housing, demographics, location,

statistics, residents and real estate info

Строка длинная, но легко поддается анализу!

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

Чтобы воспользоваться сценарием, достаточно просто передать ему почтовый индекс в аргументе командной строки. Если указан действительный индекс, сценарий выведет название города и штата, как показано в листинге 7.9.

Результаты

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

$ zipcode 10010

ZIP code 10010 is in New York, New York

$ zipcode 30001

ZIP code 30001 is in

$ zipcode 50111

ZIP code 50111 is in Grimes, Iowa

Так как 30001 не является действительным почтовым индексом, сценарий сгенерировал сообщение об ошибке Page not found («Страница не найдена»). Оно выглядит немного неопрятно, но мы можем улучшить его.

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

Наиболее очевидным усовершенствованием могло бы стать выполнение каких-то действий в ответ на ошибки вместо вывода невнятной последовательности . Еще более интересный вариант — добавить флаг −a, который сообщал бы сценарию о необходимости вывода дополнительной информации о регионе, тем более что http://city-data.com/предлагает довольно много информации, помимо названий городов, включая площадь, сведения о населении и цены на недвижимость.

№ 57. Поиск по телефонному коду города

Сценарий поиска по телефонному коду города является разновидностью предыдущего. Как оказывается, реализовать такой сценарий действительно очень просто, благодаря существованию простых для анализа веб-страниц с кодами городов. Например, страница по адресу http://www.bennetyee.org/ucsd-pages/area.htmlлегко поддается анализу, не только потому, что она хранит информацию в табличной форме, но и потому, что автор использовал атрибуты HTML для идентификации элементов. Например, строка с информацией о коде 207 выглядит так:

207 ME

align=center>-5

Maine

Мы использовали этот сайт в сценарии (листинг 7.10) поиска по телефонному коду города.

Код

Листинг 7.10.Сценарий areacode

#!/bin/bash

# areacode — получая трехзначный телефонный код, действующий в США,

#·· определяет город и штат по данным в простой табличной форме, на

#·· веб-сайте Беннета Йи (Bennet Yee).

source="http://www.bennetyee.org/ucsd-pages/area.html"

if [-z "$1"]; then

··echo "usage: areacode "

··exit 1

fi

# wc −c вернет количество символов + символ перевода строки,

#·· то есть для 3 цифр = 4 символа

if ["$(echo $1 | wc −c)" −ne 4]; then

··echo "areacode: wrong length: only works with three-digit US area codes"

··exit 1

fi

# Все символы — цифры?

if [! -z "$(echo $1 | sed 's/[[: digit: ]]//g')"]; then

··echo "areacode: not-digits: area codes can only be made up of digits"

··exit 1

fi

# Теперь можно выполнить поиск по телефонному коду…

result="$( картинка 365curl −s — dump $source | grep "name=\"$1" | \

··sed 's/<[^>]*>//g;s/^ //g' | \

··cut −f2- d\ | cut −f1 −d\()"

echo "Area code $1 =$result"

exit 0

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

Основная часть этого сценария выполняет проверку ввода, чтобы убедиться, что телефонный код, указанный пользователем, действителен. Наиболее важна тут команда curl картинка 366— она извлекает данные из сети и передает их по конвейеру команде sed для анализа и команде cut для выделения информации, которую требуется вывести.

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

Этот сценарий принимает единственный аргумент — телефонный код города для поиска. Примеры использования сценария демонстрируются листинге 7.11.

Результаты

Листинг 7.11.Тестирование сценария areacode

$ areacode 817

Area code 817 = N Cent. Texas: Fort Worth area

$ areacode 512

Area code 512 = S Texas: Austin

$ areacode 903

Area code 903 = NE Texas: Tyler

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

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

№ 58. Слежение за погодой

Если вы проводите весь день в кабинете или в серверном зале, уткнувшись носом в терминал, вам наверняка иногда очень хочется выйти на улицу, прогуляться, особенно в хорошую погоду. Weather Underground ( http://www.wunderground.com/) — отличный веб-сайт, который предлагает прикладной интерфейс (API) с бесплатным доступом для разработчиков. Вам нужно только зарегистрировать API-ключ. Имея API-ключ, можно написать короткий сценарий командной оболочки (показан в листинге 7.12), сообщающий, насколько хороша (или плоха) погода. Знание погоды поможет нам решить, стоит ли выходить на короткую прогулку.

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

Интервал:

Закладка:

Сделать


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

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




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


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


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

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