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

Интервал:

Закладка:

Сделать

$ screencapture2 &

$

Вот, собственно, и все. Легко. Чтобы, к примеру, сделать 30 снимков с интервалом 5 секунд между ними, сценарий screencapture2 можно запустить так:

$ screencapture2 −f 5 −m 30 &

$

Результаты

Сценарий ничего не выводит на экран, но создает новые файлы, как показано в листинге 11.2. (Если сценарию передавался флаг −a, появится еще один дополнительный файл.)

Листинг 11.2.Снимки экрана, созданные за период времени сценарием screencapture2

$ ls −s *gif *jpg

4448 animated-captures.gif····4216 capture2.jpg····25728 capture5.jpg

4304 capture0.jpg············ 4680 capture3.jpg······4456 capture6.jpg

4296 capture1.jpg············ 4680 capture4.jpg

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

Для мониторинга экрана в течение длительного периода времени необходимо найти какое-то средство, позволяющее определять, когда экран действительно изменяется, чтобы не захламлять дисковое пространство ненужными скриншотами. Существуют сторонние решения, которые позволяют использовать таким образом программу screencapture, — они сохраняют в журнал сведения о времени существенных изменений вместо десятков и сотен копий одного и того же экрана. (Имейте в виду, что, если на экране присутствуют часы, каждый следующий снимок будет немного отличаться от предыдущего, что значительно осложняет решение задачи!)

Такая возможность позволила бы реализовать «включение» и «выключение» мониторинга в виде обертки, которая делает снимки и определяет наличие изменений между последним и первым изображениями. Но если вы планируете использовать этот сценарий для создания анимированных файлов GIF, чтобы сделать из них обучающее видео, вам понадобится возможность точнее управлять продолжительностью съемки, предусмотрев отдельный аргумент командной строки.

№ 80. Динамическая настройка заголовка терминала

В листинге 11.3 приводится короткий забавный сценарий для пользователей OS X, обожающих работать в программе Terminal. Вместо установки и изменения заголовка окна в диалоге TerminalPreferencesProfilesWindow(ТерминалНастройкиПрофилиОкно) можно воспользоваться этим сценарием, чтобы изменить все, что вам захочется. В данном примере мы сделаем заголовок окна Terminal чуть более информативным, добавив в него вывод текущего рабочего каталога.

Код

Листинг 11.3.Сценарий titleterm

#!/bin/bash

# titleterm — требует от программы OS X Terminal изменить заголовок окна,

#·· согласно значению, переданному этому короткому сценарию в аргументе.

if [$# −eq 0]; then

··echo "Usage: $0 title" >&2

··exit 1

else

картинка 469··echo −e "\033]0;$@\007"

fi

exit 0

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

Программа Terminal поддерживает множество разнообразных управляющих последовательностей, и сценарий titleterm посылает последовательность ESC] 0; title BEL картинка 470, которая изменяет настройки заголовка, как определено значением аргумента.

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

Чтобы изменить заголовок окна Terminal, просто передайте сценарию titleterm новые настройки заголовка в аргументе командной строки.

Результаты

Сценарий ничего не выводит в процессе работы, как показывает листинг 11.4.

Листинг 11.4.Запуск сценария titleterm для вывода текущего каталога в заголовке окна терминала

$ titleterm $(pwd)

$

Однако он мгновенно добавляет в заголовок окна программы Terminal вывод имени текущего каталога.

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

Немного дополнив сценарий входа ( .bash_profile или какой-то другой, в зависимости от используемой оболочки входа), можно заставить окно Terminal автоматически отображать текущий каталог. Чтобы вдобавок к текущему каталогу вывести, например, название командной оболочки, попробуйте использовать следующее определение для tcsh:

alias precmd 'titleterm "$PWD"' [tcsh]

или для bash:

export PROMPT_COMMAND="titleterm \"\$PWD\"" [bash]

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

№ 81. Создание суммарного списка медиатек iTunes

Если вы пользовались iTunes достаточно продолжительное время, у вас наверняка накопился внушительный список музыкальных произведений, аудиокниг, фильмов и телепередач. К сожалению, при всех своих уникальных возможностях, iTunes не дает простого способа экспортировать список музыкальных произведений в компактном и удобочитаемом формате. Но совсем несложно написать сценарий, восполняющий этот недостаток, как показано в листинге 11.5. Сценарий опирается на параметр настройки Share iTunes XML with other applications(«Предоставлять другим программам доступ к файлу XML Медиатеки iTunes»), поэтому перед запуском сценария убедитесь, что соответствующий флажок в настройках iTunes установлен.

Код

Листинг 11.5.Сценарий ituneslist

··#!/bin/bash

··# ituneslist — Списки из вашей медиатеки iTunes в компактной и удобочитаемой

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

··#·· для синхронизации(с помощью diff) библиотек iTunes с другими компьютерами

··#·· и ноутбуками.

··itunehome="$HOME/Music/iTunes"

··ituneconfig="$itunehome/iTunes Music Library.xml"

картинка 471musiclib="/$(grep '>Music Folder<' "$ituneconfig" | cut −d/ −f5- | \

····cut −d\< −f1 | sed 's/%20/ /g')"

··echo "Your library is at $musiclib"

··if [! -d "$musiclib"]; then

····echo "$0: Confused: Music library $musiclib isn't a directory?" >&2

····exit 1

··fi

··exec find "$musiclib" −type d −mindepth 2 −maxdepth 2 \! -name '.*' −print \

····| sed "s|$musiclib/||"

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

Подобно многим современным компьютерным приложениям, iTunes хранит свою медиатеку в стандартном каталоге — в данном случае ~/Music/iTunes/iTunes Media/ — но позволяет переместить ее в любое другое место. Сценарий должен установить местоположение медиатеки, что он и делает, извлекая значение поля Music Folder из файла с настройками iTunes. Именно это значение возвращает конвейер в картинка 472.

Файл с настройками ($ituneconfig) представляет собой файл с данными в формате XML, поэтому приходится отсечь кое-что лишнее, чтобы извлечь точное значение поля Music Folder. Ниже показано, как выглядит значение iTunes Media в файле с настройками iTunes у Дейва:

file://localhost/Users/taylor/Music/iTunes/iTunes%20Media/

Фактически значение iTunes Media хранится в виде полного URL, что само по себе достаточно интересно, значит, нам нужно отбросить префикс file://localhost/. Эту операцию выполняет первая команда cut. Наконец, из-за того что в OS X имена многих каталогов включают пробелы, и того, что поле Music Folder хранит URL, все пробелы в этом поле преобразованы в последовательность %20. Чтобы преобразовать ее обратно в пробелы, перед обработкой вызывается команда sed.

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

Интервал:

Закладка:

Сделать


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

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




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


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


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

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