1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
Опция q отменяет вывод отличающихся строк и печатает только сообщение о том, имеются ли отличия. Опция -i применяется в случае, если необходимо игнорировать регистр в сравниваемых файлах. Часто используемые опции -u и -c выводят информацию, соответственно, в обобщенном (unified) и контекстном (context) форматах. ps > ps1.txt ps > ps2.txt diff ps1.txt ps2.txt diff -u ps1.txt ps2.txt Особенностью этих форматов является вывод информации об именах сравниваемых файлов. Эта информация может быть использована для реконструкции одного из сравниваемых файлов по-другому с помощью известных отличий этих файлов. Для этого используется утилита patch, позволяющая обновлять содержимое файлов с помощью так называемых "заплаток" (patches). Файлы-"заплатки" создаются с помощью утилиты diff, а обновление файлов производится утилитой patch. Пример с файлами f1 и f2 0. создаем файлы f1.txt и f2.txt cat > f1.txt << . bad file . cat > f2.txt << . good file . 1. Сравниваем файлы diff -Nau f1.txt f2.txt > patch-f1-from-f2 2. Применяем патч patch -p0 < patch-f1-from-f2 Создание и применение патча для директории Допустим, есть две директории dir1 и dir2 diff -Naur ./dir1 ./dir2r > ./patch Теперь, чтобы установить патч, нужно запустить: patch -p0 < ./patch Только не забудьте, что патчиться будет каталог ./dir1 Здесь главное, на что нужно обратить внимание, — это знак перенаправления < и -p Без перенаправления < программа patch будет спрашивать, какой файл патчить. Второй вариант — использовать ключ -i в место перенаправления <, т.е. patch -p0 -i ./patch Подведем итог: patch -p0 < ./patch - этой командой мы устанавливаем патч patch -p0 -i patch1 - этой командой мы устанавливаем патч Но если любую из команд повторить то у нас спросят желаем ли мы откатить все обратно, и если нажмем "y" то все что сделал патч будет отменено. |
Как работает -p в patch
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
-p num или --strip= num Удалить наименьший префикс, содержащий num начальных косых черт, из каждое имя файла, найденное в файле исправления. Последовательность одного или несколько смежных косых черт считаются как одна косая черта. Этот управляет тем, как обрабатываются имена файлов, найденные в файле исправления, если вы храните свои файлы в другом каталоге, чем человек, который отправил патч. Например, если предположить, имя файла в файле патча было /u/howard/src/blurfl/blurfl.c установка -p0 дает полное имя файла без изменений, -p1 дает u/howard/src/blurfl/blurfl.c без косой черты в начале, -p4 дает blurfl/blurfl.c и отсутствие указания -p вообще дает вам blurfl.c . Что бы ни вы в конечном итоге ищете либо в текущем каталоге, либо каталог, указанный параметром -d . |