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

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

Жанры

Основы программирования в Linux
Шрифт:

Файл diffs содержит следующие строки:

1c1

< This is file one

– -

> This is file two

4c4, 5

< there is no line 4, this is line 5

– -

> line 4

> line 5

5a7

> a new line 8

На самом деле это набор команд редактора для превращения одного файла в другой. Предположим, что у вас есть файл file1.c и файл diffs. Вы можете обновить свой файл с помощью команды

patch
следующим образом:

$ patch file1.c diffs

Hmm... Looks like a normal diff to me...

Patching file file1.c using Plan A...

Hunk #1 succeeded at 1.

Hunk #2 succeeded at 4.

Hunk #3 succeeded at 7.

done

$

Команда

patch
сделала file1.c таким же, как файл file2.c.

У команды

patch
есть еще один фокус: возможность отказа от внесенных изменений. Предположим, что вам не понравились изменения, и вы хотите вернуться назад к file1 с. Нет ничего проще; всего лишь воспользуйтесь командой
patch
еще раз, добавив опцию
– R
(обратная корректировка).

$ patch -R file1.c diffs

Hmm... Looks like a normal diff to me...

Patching file file1.c using Plan A...

Hunk #1 succeeded at 1.

Hunk #2 succeeded at 4.

Hunk #3 succeeded at 6.

done$

Файл file1.с возвращен в свое исходное состояние.

У команды

patch
есть и другие опции, но лучше всего на входе команды решить, что вы хотите сделать, а затем "выполнить верное действие". Если вдруг команда
patch
завершается аварийно, она создает файл с расширением rej, содержащий фрагменты, которые невозможно было исправить.

Когда вы работаете с корректировками программного обеспечения, полезно применять опцию

diff -с
, формирующую "окружающий контекст". Она включает несколько строк перед каждым изменением и после него, так что команда
patch
сможет проверить контекстные соответствия перед внесением изменений. Кроме того, в этом случае легче читать исправленный файл.

Примечание

Если вы нашли и исправили ошибку в программе, легче, точнее и вежливее отправить автору исправленный файл, а не просто описание исправления.

Другие утилиты распространения

Программы Linux и исходный код обычно распространяются в виде файлов с именами, в которые включен номер версии, и расширениями tar.gz или tgz. Это сжатые программой

gzip
файлы TAR (tape archive, архивы лент), также называемые "tarballs" (клубки архивов tar). Если применить обычную команду
tar
, обрабатывать эти файлы придется в два этапа. Приведенный далее код создает сжатый программой
gzip
файл TAR вашего приложения:

$ tar cvf myapp-1.0.tar main.c 2.c 3.c *.h myapp.1 Makefile5

main.c

2.c

3.c

a.h

b.h

c.h

myapp.1

Makefile5

$

Теперь у вас есть файл TAR:

$ ls -l *.tar

– rw-r--r-- 1 neil users 10240 2007-07-09 11:23 myapp-1.0.tar

$

Сделать его меньше можно с помощью программы сжатия

gzip
:

$ gzip myapp-1.0.tar $ ls -l *.gz

– rw-r--r-- 1 neil users 1648 2007-07-09 11:23 myapp-1.0.tar.gz

$

Как видите, в результате впечатляющее уменьшение размера. Файл tar.gz можно в дальнейшем переименовать, оставив просто расширение tgz.

$ mv myapp-1.0.tar.gz myapp_v1.tgz

Практика задания имен, заканчивающихся точкой и тремя символами, — уступка программному обеспечению, работающему в ОС Windows, которое в отличие от программ для ОС Linux и UNIX сильно зависит от наличия корректного расширения файла. Для того чтобы получить свои файлы обратно, удалите сжатие и опять извлеките их из файла, полученного с помощью

tar
:

$ mv myapp_v1.tgz myapp-1.0.tar.gz

$ gzip -d myapp-1.0.tar.gz

$ tar xvf myapp-1.0.tar

main.с

2.c

3.c

a.h

b.h

c.h

myapp.1

Makefile5

$

С версией GNU программы tar все еще проще — вы можете создать сжатый архив за один шаг:

$ tar zcvf myapp_v1.tgz main.c 2.c 3.c *.h myapp.1 Makefile5

main.c

2.c

3.c

a.h

b.h

c.h

myapp.1

Makefile5

$

Также легко вы можете развернуть файл:

$ tar zxvf myapp_v1.tgz

main.c

2.с

3. с

a. h

b. h c.h

myapp.1

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

Дворянин

Злотников Роман Валерьевич
2. Император и трубочист
Фантастика:
боевая фантастика
альтернативная история
5.00
рейтинг книги
Дворянин

Источники силы

Amazerak
4. Иной в голове
Фантастика:
боевая фантастика
рпг
аниме
5.00
рейтинг книги
Источники силы

История США от глубокой древности до 1918 года

Азимов Айзек
Популярная наука от Азимова
Научно-образовательная:
история
5.00
рейтинг книги
История США от глубокой древности до 1918 года

Гримуар темного лорда V

Грехов Тимофей
5. Гримуар темного лорда
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Гримуар темного лорда V

Гримуар темного лорда VIII

Грехов Тимофей
8. Гримуар темного лорда
Фантастика:
боевая фантастика
альтернативная история
аниме
фэнтези
фантастика: прочее
попаданцы
5.00
рейтинг книги
Гримуар темного лорда VIII

Любовь Носорога

Зайцева Мария
Любовные романы:
современные любовные романы
9.11
рейтинг книги
Любовь Носорога

Древесный маг Орловского княжества 4

Павлов Игорь Васильевич
4. Орловское княжество
Фантастика:
аниме
фэнтези
попаданцы
5.00
рейтинг книги
Древесный маг Орловского княжества 4

Наследие Маозари 3

Панежин Евгений
3. Наследие Маозари
Фантастика:
рпг
аниме
5.00
рейтинг книги
Наследие Маозари 3

История Шотландии с древнейших времен до флодденского сражения 1513 года.

Скотт Вальтер
Научно-образовательная:
история
5.00
рейтинг книги
История Шотландии с древнейших времен до флодденского сражения 1513 года.

Черный Маг Императора 17

Герда Александр
17. Черный маг императора
Фантастика:
юмористическое фэнтези
попаданцы
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
Черный Маг Императора 17

На границе империй. Том 6

INDIGO
6. Фортуна дама переменчивая
Фантастика:
боевая фантастика
космическая фантастика
попаданцы
5.31
рейтинг книги
На границе империй. Том 6

Бастард Императора. Том 2

Орлов Андрей Юрьевич
2. Бастард Императора
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Бастард Императора. Том 2

Геном хищника. Книга седьмая

Гарцевич Евгений Александрович
7. Я - Легенда!
Фантастика:
боевая фантастика
рпг
фэнтези
попаданцы
5.00
рейтинг книги
Геном хищника. Книга седьмая

Великие мифы и легенды. 100 историй о подвигах, мире богов, тайнах рождения и смерти

Мудрова Ирина Анатольевна
Старинная литература:
мифы. легенды. эпос
5.00
рейтинг книги
Великие мифы и легенды. 100 историй о подвигах, мире богов, тайнах рождения и смерти