Читаем Сценарии командной оболочки. Linux, OS X и Unix. 2-е издание полностью

Вездесущая утилита compress быстро сожмет файл ragged.txt и присвоит ему расширение .z:

$ compress ragged.txt

Сжатый файл ragged.txt можно просмотреть командой zcat, как показано в листинге 4.17.

Листинг 4.17. Использование zcat для вывода содержимого сжатого файла

$ zcat ragged.txt.Z

So she sat on, with closed eyes, and half believed herself in

Wonderland, though she knew she had but to open them again, and

all would change to dull reality-the grass would be only rustling

in the wind, and the pool rippling to the waving of the reeds-the

rattling teacups would change to tinkling sheep-bells, and the

Queen’s shrill cries to the voice of the shepherd boy-and the

sneeze of the baby, the shriek of the Gryphon, and all the other

queer noises, would change (she knew) to the confused clamour of

the busy farm-yard-while the lowing of the cattle in the distance

would take the place of the Mock Turtle’s heavy sobs.

Еще раз выполнить в нем поиск строки teacup.

$ zgrep teacup ragged.txt.Z

rattling teacups would change to tinkling sheep-bells, and the

При этом файл сохранится в сжатом состоянии, как показывает листинг 4.18.

Листинг 4.18. Вывод команды ls показывает, что имеется только один файл с таким именем, и это сжатый файл

$ ls −l ragged.txt*

-rw-r-r-··1 taylor··staff··443 Jul··7 16:07 ragged.txt.Z

<p>Усовершенствование сценария</p>

Самый большой недостаток сценария состоит в том, что, если прервать его работу на полпути, он может не успеть повторно сжать файл. Отличным усовершенствованием стало бы исправление этой проблемы с помощью команды trap и функции сжатия, выполняющей проверку на наличие ошибок.

<p>№ 34. Гарантия максимальной степени сжатия файла</p>

Как было отмечено в рецепте № 33, большинство реализаций Linux включает несколько утилит сжатия, но решать, какая из них наиболее эффективно сожмет конкретный файл, приходится пользователю. Однако пользователи обычно привыкают к одной программе, не подозревая, что другие утилиты дали бы лучшие результаты. Еще бо́льшую сумятицу вносит тот факт, что некоторые файлы лучше сжимаются с использованием одного алгоритма, а другие — с использованием другого, и нет никакой возможности выявить лучший вариант без прямых экспериментов.

Логичное решение проблемы — написать сценарий, который сожмет файл с применением каждого из инструментов и оставит наименьший файл как наилучший. Именно это делает сценарий bestcompress, представленный в листинге 4.19!

<p>Код</p>

Листинг 4.19. Сценарий bestcompress

#!/bin/bash

# bestcompress — пытается сжать файл всеми доступными инструментами

#·· сжатия и сохраняет наименьший сжатый файл, сообщая результат

#·· пользователю. Если флаг −a не указан, bestcompress пропускает

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

Z="compress"···· gz="gzip"····bz="bzip2"

Zout="/tmp/bestcompress.$$.Z"

gzout="/tmp/bestcompress.$$.gz"

bzout="/tmp/bestcompress.$$.bz"

skipcompressed=1

if ["$1" = "-a"]; then

··skipcompressed=0; shift

fi

if [$# −eq 0]; then

··echo "Usage: $0 [-a] file or files to optimally compress" >&2

··exit 1

fi

trap "/bin/rm −f $Zout $gzout $bzout" EXIT

for name in "$@"

do

··if [! -f "$name"]; then

····echo "$0: file $name not found. Skipped." >&2

····continue

··fi

··if ["$(echo $name | egrep '(\.Z$|\.gz$|\.bz2$)')"!= ""]; then

····if [$skipcompressed −eq 1]; then

Перейти на страницу:

Все книги серии Для профессионалов

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

Сценарии командной оболочки помогают системным администраторам и программистам автоматизировать рутинные задачи с тех самых пор, как появились первые компьютеры. С момента выхода первого издания этой книги в 2004 году многое изменилось, однако командная оболочка bash только упрочила свои лидирующие позиции. Поэтому умение использовать все ее возможности становится насущной необходимостью для системных администраторов, инженеров и энтузиастов. В этой книге описываются типичные проблемы, с которыми можно столкнуться, например, при сборке программного обеспечения или координации действий других программ. А решения даются так, что их легко можно взять за основу и экстраполировать на другие схожие задачи.Цель этой книги — продемонстрировать практические приемы программирования сценариев на bash и познакомить с самыми распространенными утилитами на коротких и компактных примерах, не вдаваясь в излишние подробности. Экспериментируйте с этими сценариями — ломайте, исправляйте и приспосабливайте их под свои нужды, чтобы понять, как они работают. Только так вы сможете решать самые сложные задачи.

Брендон Перри , Дейв Тейлор

Программирование, программы, базы данных

Похожие книги

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных

Все жанры