Чтение онлайн

на главную - закладки

Жанры

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

Купер Мендель

Шрифт:

# к файлам, описанным там же.

# Так выполняется обновление пакетов до более высоких версий.

Наложение "заплат" на ядро:

cd /usr/src

gzip -cd patchXX.gz | patch -p0

# Обновление исходных текстов ядра с помощью 'patch'.

# Пример взят из файла "README",

# автор не известен (Alan Cox?).

Кроме того, утилита diff в состоянии выполнять рекурсивный обход каталогов.

bash$ diff -r ~/notes1 ~/notes2

Only in /home/bozo/notes1: file02

Only in /home/bozo/notes1: file03

Only in /home/bozo/notes2: file04

Утилита zdiff сравнивает сжатые, с помощью gzip, файлы.

diff3

Расширенная версия diff, которая сравнивает сразу 3 файла. В случае успеха возвращает 0, но, к сожалению, не дает никакой информации о результатах сравнения.

bash$ diff3 file-1 file-2 file-3

====

1:1c

This is line 1 of "file-1".

2:1c

This is line 1 of "file-2".

3:1c

This is line 1 of "file-3"

sdiff

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

cmp

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

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

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

#!/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 – options first-file second-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– - позволяет сценарию узнать свое имя, то есть имя файла, который был запущен. Это имя может быть использовано для вывода сообщений, напрмиер:

Поделиться:
Популярные книги

Дракон с подарком

Суббота Светлана
3. Королевская академия Драко
Любовные романы:
любовно-фантастические романы
6.62
рейтинг книги
Дракон с подарком

Бывшие. Война в академии магии

Берг Александра
2. Измены
Любовные романы:
любовно-фантастические романы
7.00
рейтинг книги
Бывшие. Война в академии магии

Мастер клинков. Начало пути

Распопов Дмитрий Викторович
1. Мастер клинков
Фантастика:
фэнтези
9.16
рейтинг книги
Мастер клинков. Начало пути

Имя нам Легион. Том 8

Дорничев Дмитрий
8. Меж двух миров
Фантастика:
боевая фантастика
рпг
аниме
5.00
рейтинг книги
Имя нам Легион. Том 8

Измена. Право на счастье

Вирго Софи
1. Чем закончится измена
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Измена. Право на счастье

Начальник милиции 2

Дамиров Рафаэль
2. Начальник милиции
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Начальник милиции 2

Камень. Книга 4

Минин Станислав
4. Камень
Фантастика:
боевая фантастика
7.77
рейтинг книги
Камень. Книга 4

Измена. Мой заклятый дракон

Марлин Юлия
Любовные романы:
любовно-фантастические романы
7.50
рейтинг книги
Измена. Мой заклятый дракон

Предатель. Цена ошибки

Кучер Ая
Измена
Любовные романы:
современные любовные романы
5.75
рейтинг книги
Предатель. Цена ошибки

Звездная Кровь. Изгой

Елисеев Алексей Станиславович
1. Звездная Кровь. Изгой
Фантастика:
боевая фантастика
попаданцы
рпг
5.00
рейтинг книги
Звездная Кровь. Изгой

Рождение победителя

Каменистый Артем
3. Девятый
Фантастика:
фэнтези
альтернативная история
9.07
рейтинг книги
Рождение победителя

Барону наплевать на правила

Ренгач Евгений
7. Закон сильного
Фантастика:
боевая фантастика
попаданцы
аниме
5.00
рейтинг книги
Барону наплевать на правила

Камень. Книга шестая

Минин Станислав
6. Камень
Фантастика:
боевая фантастика
7.64
рейтинг книги
Камень. Книга шестая

Чужая дочь

Зика Натаэль
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Чужая дочь