Читаем Искусство программирования на языке сценариев командной оболочки полностью

Сравнение и/или редактирование двух файлов перед объединением их в один файл. Это интерактивная утилита, по своей природе, и из-за этого она довольно редко используется в сценариях.

cmp

Утилита cmp -- это упрощенная версия diff. В то время, как diff выводит подробную информацию об имеющихся различиях, утилита cmp лишь показывет номер строки и позицию в строке, где было встречено различие.

Подобно команде diff, команда cmp возвращает код завершения 0, если файлы идентичны и 1, если они различны. Это позволяет использовать команду cmp в условных операторах.

<p><strong>Пример 12-27. Пример сравнения двух файлов с помощью cmp.</strong></p>

#!/bin/bash

ARGS=2 # Ожидаются два аргумента командной строки.

E_BADARGS=65

E_UNREADABLE=66

if [ $# -ne "$ARGS" ]

then

echo "Порядок использования: `basename $0` file1 file2"

exit $E_BADARGS

fi

if [[ ! -r "$1" || ! -r "$2" ]]

then

echo "Оба файла должны существовать и должны быть доступны для чтения."

exit $E_UNREADABLE

fi

cmp $1 $2 &> /dev/null # /dev/null -- "похоронит" вывод от команды "cmp".

# cmp -s $1 $2 даст тот же результат ("-s" -- флаг "тишины" для "cmp")

# Спасибо Anders Gustavsson за замечание.

#

# Также применимо к 'diff', т.е., diff $1 $2 &> /dev/null

if [ $? -eq 0 ] # Проверка кода возврата команды "cmp".

then

echo "Файл \"$1\" идентичен файлу \"$2\"."

else

echo "Файл \"$1\" отличается от файла \"$2\"."

fi

exit 0

Для работы с gzip файлами используется утилита zcmp.

comm

Универсальная утилита сравнения. Работает с отсортированными файлами.

comm -optionsfirst-filesecond-file

comm file-1 file-2 -- вывод в три колонки:

 колонка 1 = уникальные строки для file-1

 колонка 2 = уникальные строки для file-2

 колонка 3 = одинаковые строки.

Ключи, подавляющие вывод в одной или более колонках.

-1 -- подавление вывода в колонку 1

-2 -- подавление вывода в колонку 2

-3 -- подавление вывода в колонку 3

-12 -- подавление вывода в колонки 1 и 2, и т.д.

Утилиты

basename

Выводит только название файла, без каталога размещения. Конструкция basename $0 -- позволяет сценарию узнать свое имя, то есть имя файла, который был запущен. Это имя может быть использовано для вывода сообщений, напрмиер:

echo "Порядок использования: `basename $0` arg1 arg2 ... argn"

dirname

Отсекает basename от полного имени файла и выводит только путь к файлу.

Утилитам basename и dirname может быть передана любая строка, в качестве аргумента. Этот аргумент необязательно должен быть именем существующего файла (см. Пример A-8).

<p><strong>Пример 12-28. Утилиты basename и dirname</strong></p>

#!/bin/bash

a=/home/bozo/daily-journal.txt

echo "Basename для /home/bozo/daily-journal.txt = `basename $a`"

echo "Dirname для /home/bozo/daily-journal.txt = `dirname $a`"

echo

echo "Мой домашний каталог `basename ~/`." # Можно указать просто ~.

echo "Каталог моего домашнего каталога `dirname ~/`." # Можно указать просто ~.

exit 0

split

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

sum, cksum, md5sum

Эти утилиты предназначены для вычисления контрольных сумм. Контрольная сумма -- это некоторое число, вычисляемое исходя из содержимого файла, и служит для контроля целостности информации в файле. Сценарий может выполнять проверку контрольных сумм для того, чтобы убедиться, что файл не был изменен или поврежден. Для большей безопасности, рекомендуется использовать 128-битную сумму, генерируемую утилитой md5sum (message digest checksum).

bash$ cksum /boot/vmlinuz

1670054224 804083 /boot/vmlinuz

bash$ md5sum /boot/vmlinuz

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

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

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

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

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

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

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

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

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