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

Интервал:

Закладка:

Сделать

№ 20. Имитация других окружений: MS-DOS

Хотя в повседневной практике это едва ли понадобится, но с точки зрения освоения некоторых понятий командной оболочки будет интересно и показательно попробовать создать версии классических команд MS-DOS, таких как DIR, в виде сценариев, совместимых с Unix. Конечно, можно просто определить псевдоним и отобразить команду DIR в Unix-команду ls:

alias DIR=ls

Но такое отображение не имитирует фактического поведения команды; оно просто помогает забывчивым пользователям заучить новые названия команд. Если вам доводилось использовать древние способы взаимодействий с компьютером, вы наверняка вспомните, что флаг /W требует использовать широкий формат вывода. Но если передать флаг /W команде ls, она сообщит, что каталог /W не найден. Следующий сценарий DIR, представленный в листинге 2.17, напротив, написан так, что принимает и обрабатывает флаги, начинающиеся с символа слеша.

Код

Листинг 2.17.Сценарий DIR, имитирующий DOS-команду DIR в Unix

#!/bin/bash

# DIR — имитирует поведение команды DIR в DOS, принимает некоторые

#·· стандартные флаги команды DIR и выводит содержимое указанного каталога

function usage

{

cat << EOF >&2

··Usage: $0 [DOS flags] directory or directories

··Where:

····/D sort by columns

····/H show help for this shell script

····/N show long listing format with filenames on right

····/OD sort by oldest to newest

····/O-D sort by newest to oldest

····/P pause after each screenful of information

····/Q show owner of the file

····/S recursive listing

····/W use wide listing format

EOF

··exit 1

}

#####################

### ОСНОВНОЙ СЦЕНАРИЙ

postcmd=""

flags=""

while [$# −gt 0]

do

··case $1 in

····/D······) flags="$flags −x"··;;

····/H······) usage··············;;

картинка 167····/[NQW]··) flags="$fl −l— l"··;;

····/OD····) flags="$flags −rt";;

····/O-D····) flags="$flags −t"··;;

····/P······) postcmd="more"····;;

····/S······) flags="$flags −s"··;;

··········*) # Неизвестный флаг: возможно, признак конца команды DIR;

··············#·· поэтому следует прервать цикл while.

··esac

··shift······ # Флаг обработан; проверить — есть ли что-то еще.

done

# Обработка флагов завершена; теперь выполнить саму команду:

if [! -z "$postcmd"]; then

··ls $flags "$@" | $postcmd

else

··ls $flags "$@"

fi

exit 0

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

Этот сценарий демонстрирует, что инструкция case в языке командной оболочки фактически проверяет регулярное выражение. Как можно видеть в строке картинка 168, DOS-флаги /N, /Q и /W отображаются в один и тот же Unix-флаг −l в окончательном вызове команды ls, и все это достигается с помощью простого регулярного выражения /[NQW].

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

Сохраните сценарий в файле с именем DIR (также желательно создать псевдоним dir=DIR, потому что командный интерпретатор DOS не различает регистр символов, в отличие от Unix). Теперь, вводя команду DIR с флагами, типичными для команды DIR в MS-DOS, пользователи будут получать осмысленные результаты (как показано в листинге 2.18), а не сообщение о том, что команда не найдена.

Результаты

Листинг 2.18.Тестирование сценария DIR со списком файлов

$ DIR /OD /S ~/Desktop

total 48320

7720 PERP — Google SEO.pdf············ 28816 Thumbs.db

····0 Traffic Data······················8 desktop.ini

····8 gofatherhood-com-crawlerrors.csv··80 change-lid-close-behavior-win7-1.png

·· 16 top-100-errors.txt················176 change-lid-close-behavior-win7-2.png

····0 $RECYCLE.BIN······················400 change-lid-close-behavior-win7-3.png

····0 Drive Sunshine····················264 change-lid-close-behavior-win7-4.png

·· 96 facebook-forcing-pay.jpg·········· 32 change-lid-close-behavior-win7-5.png

10704 WCSS Source Files

Это список с содержимым указанного каталога, отсортированный в обратном хронологическом порядке, от более новых к более старым, и размерами файлов (для каталогов всегда выводится размер 0).

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

В наши дни трудно найти человека, который помнил бы командную строку MS-DOS, но основные принципы работы с ней стоят того, чтобы их знать. Как одно из усовершенствований можно было бы реализовать вывод эквивалентной команды в Unix или Linux перед фактическим выполнением, и затем, после нескольких вызовов, сценарий мог бы просто показывать эквивалентную команду, но не выполнять ее. В этом случае пользователь будет вынужден запоминать новые команды, чтобы добиться желаемого!

№ 21. Вывод времени в разных часовых поясах

Основное требование, предъявляемое к команде date, — отображение даты и времени для часового пояса, настроенного в системе. Но как быть пользователям в дальней поездке, пересекающим несколько часовых поясов? Или тем, у кого есть друзья и коллеги, живущие в других уголках планеты, и им хотелось бы знать, который сейчас час, например, в Касабланке, Ватикане или Сиднее?

Как оказывается, команда date в большинстве современных разновидностей Unix опирается в своей работе на базу данных часовых поясов. Обычно хранящаяся в каталоге /usr/share/zoneinfo эта база данных содержит информацию о более чем 600 регионах и соответствующих им смещениях относительно универсального скоординированного времени (Universal Coordinated Time, UTC — часто также называется средним временем по Гринвичу, Greenwich Mean Time или GMT ). Команда date учитывает значение переменной окружения TZ, определяющей часовой пояс, которой можно присвоить любой регион из базы данных, например:

$ TZ="Africa/Casablanca" date

Fri Apr 7 16:31:01 WEST 2017

Однако большинству пользователей неудобно временно подменять значения переменных окружения. Написав сценарий командной оболочки, можно реализовать более дружественный интерфейс к базе данных часовых поясов.

Бо́льшая часть сценария в листинге 2.19 связана с базой данных часовых поясов (которая обычно хранится в виде нескольких файлов в каталоге zonedir ), точнее, с попыткой найти файл, соответствующий указанному шаблону. После обнаружения файла сценарий устанавливает найденный часовой пояс как текущий (в виде TZ="Africa/Casablanca" в данном примере) и с этими настройками вызывает команду date в подоболочке. Команда date определит часовой пояс по значению переменной TZ, и ей совершенно безразлично, хранит ли она временное значение или это тот часовой пояс, в котором вы проводите бо́льшую часть времени.

Код

Листинг 2.19.Сценарий timein для вывода времени в определенном часовом поясе

··#!/bin/bash

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

Интервал:

Закладка:

Сделать


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

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




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


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


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

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