diff

diff сравнивает две версии текстового файла и показывает добавленные и удалённые строки. Флаг -q отвечает только, есть ли отличия, а -c 0 убирает строки контекста. Через -o <patch> различия можно сохранить как unified-патч.

РазработкаВерсия 1.1.4СтабильнаяАлиасы: patch
lil-terminal

Обзор

Вместе с diff устанавливается patch. По умолчанию patch <file> <patch> создаёт отдельный файл .patched. Ключ -o <dst> задаёт другой путь, -f разрешает заменить существующий выходной файл. Только явный -r заменяет исходник.

Сначала проверить изменение, затем применить

Патч хранит не только заменяемые строки, но и соседний текст. Перед записью команда проверяет совпадение с исходником: патч от другой версии не будет применён вслепую. Поддерживаются текстовые файлы не более 4 МиБ и 20000 строк.

Синтаксис

lil-terminal
diff <old> <new> [options]

Справочник

diff <old> <new>

показать unified diff с тремя строками контекста

diff <old> <new> -c <lines>

задать от 0 до 20 строк контекста

diff <old> <new> -q

сообщить только, различаются ли файлы

diff <old> <new> -o <patch>

сохранить diff в файл патча

patch <file> <patch>

применить патч в <file>.patched

patch <file> <patch> -o <dst>

записать результат в другой файл

patch <file> <patch> -r

атомарно заменить исходный файл

patch <file> <patch> -f

разрешить замену существующего выходного файла без -r

Сначала увидеть изменение

diff сравнивает две версии текстового файла и показывает добавленные и удалённые строки. Флаг -q отвечает только, есть ли отличия, а -c 0 убирает строки контекста. Через -o <patch> различия можно сохранить как unified-патч.

Две команды одного модуля

Вместе с diff устанавливается patch. По умолчанию patch <file> <patch> создаёт отдельный файл .patched. Ключ -o <dst> задаёт другой путь, -f разрешает заменить существующий выходной файл. Только явный -r заменяет исходник.

Почему патч проверяет контекст

Патч хранит не только заменяемые строки, но и соседний текст. Перед записью команда проверяет совпадение с исходником: патч от другой версии не будет применён вслепую. Поддерживаются текстовые файлы не более 4 МиБ и 20000 строк.

Интерактивный пример из `/sandbox/`

Запускайте подготовленные примеры прямо на странице. Результат заранее сформирован и показывается в браузере; команды терминала на сервере не выполняются.

Сравнить две версии файла

Установка и управление

Устанавливайте актуальную совместимую версию. Для полного набора возможностей выбирайте Base, для сокращённого — Minimum; уже установленный модуль обновляет команда upgrade.

Base и Minimum — два пакета одного текущего релиза модуля, а не разные версии команды.

Пакет Base

Установить полный пакет с локальной справкой и всеми опубликованными режимами.

install diff
Пакет Minimum

Установить сокращённый пакет без локальной справки; help <cmd> -i открывает актуальную серверную справку.

install diff -m
Точная публичная версия

Установить именно эту опубликованную версию.

install diff -v 1.1.4
Проверить или обновить

Поручить upgrade проверить совместимость и заменить установленный блок только при необходимости.

upgrade diff
Удалить модуль

Удалить блок расширения, не затрагивая ядро и остальные модули.

install diff -u

Примеры

Примеры можно копировать, но сайт их не выполняет. Перед запуском на реальном проекте проверьте пути, права и разрушающие флаги.

Сравнить две версии файла
cd \sandbox | diff workspace/original.txt workspace/updated.txt
--- workspace/original.txt
+++ workspace/updated.txt
@@ -1,3 +1,4 @@
 alpha
-beta
+beta updated
 gamma
+delta
Показать только изменения
diff \sandbox\workspace\original.txt \sandbox\workspace\updated.txt -c 0
--- workspace/original.txt
+++ workspace/updated.txt
@@ -2 +2 @@
-beta
+beta updated
@@ -3,0 +4 @@
+delta
Проверить наличие отличий
diff \sandbox\workspace\original.txt \sandbox\workspace\updated.txt -q
Different
Сохранить unified-патч
diff \sandbox\workspace\original.txt \sandbox\workspace\updated.txt -o \sandbox\tmp\workspace.patch
Saved  tmp/workspace.patch
Size   110 B
Применить патч в отдельный файл
patch \sandbox\workspace\original.txt \sandbox\workspace\change.patch
Source   workspace/original.txt
Patched  workspace/original.txt.patched

patch поставляется модулем diff и применяет unified diff средствами PHP, не требуя системной утилиты patch.

Задать имя результата
patch \sandbox\workspace\original.txt \sandbox\workspace\change.patch -o \sandbox\tmp\patched.txt
Source   workspace/original.txt
Patched  tmp/patched.txt

patch поставляется модулем diff и применяет unified diff средствами PHP, не требуя системной утилиты patch.

Заменить существующий результат
patch \sandbox\workspace\original.txt \sandbox\workspace\change.patch -o \sandbox\tmp\current.txt -f
Source   workspace/original.txt
Patched  tmp/current.txt

patch поставляется модулем diff и применяет unified diff средствами PHP, не требуя системной утилиты patch.

Явно заменить оригинал
patch \sandbox\workspace\original.txt \sandbox\workspace\change.patch -r
Source   workspace/original.txt
Patched  workspace/original.txt

patch поставляется модулем diff и применяет unified diff средствами PHP, не требуя системной утилиты patch.

Отклонить чужой патч
patch \sandbox\workspace\updated.txt \sandbox\workspace\change.patch
Patch deletion mismatch

patch поставляется модулем diff и применяет unified diff средствами PHP, не требуя системной утилиты patch.

Проверить отсутствующий файл
diff \sandbox\missing.txt \sandbox\workspace\updated.txt
Файл не найден
Не смешивать -q и -o
diff \sandbox\workspace\original.txt \sandbox\workspace\updated.txt -q -o \sandbox\tmp\bad.patch
Choose -q or -o

Файл из примера: sandbox/workspace/original.txt

Пример использует файл или каталог из защищённой учебной папки /sandbox/.

alpha
beta
gamma

Связанная документация

Текущая публичная версия

v1.1.42026-11-01

Производственная доработка

Актуальная стабильная версия diff. diff сравнивает две версии текстового файла и показывает добавленные и удалённые строки.