diff

diff compara dois arquivos de texto como unified diff; o comando patch incluído aplica a mudança somente se o contexto da origem ainda corresponder. Salvar o patch e substituir o original são etapas explícitas.

DesenvolvimentoVersão 1.1.3EstávelAliases: patch
lil-terminal

Visão geral

Use diff e patch como um único ciclo de revisão: veja a mudança, salve-a se necessário, aplique em um destino separado e só então decida se o arquivo original deve ser substituído.

Revisar a mudança antes de aplicá-la

Um fluxo útil é diff old.php new.php -o change.patch e depois patch old.php change.patch. Por padrão é criado um arquivo .patched separado; somente -r substitui a origem.

Sintaxe

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

Referência

diff <old> <new>

mostrar unified diff com três linhas de contexto

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

definir de 0 a 20 linhas de contexto

diff <old> <new> -q

informar somente se os arquivos diferem

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

salvar o diff como arquivo de patch

patch <file> <patch>

aplicar o patch em <file>.patched

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

gravar o resultado em outro arquivo

patch <file> <patch> -r

substituir atomicamente o arquivo original

patch <file> <patch> -f

permitir substituir uma saída existente sem -r

Revisar e aplicar

diff old.php new.php -o change.patch salva a alteração revisada sem modificar as fontes. patch old.php change.patch cria por padrão um .patched separado; -o <dst> escolhe outro destino e -r substitui o original.

Limites e segurança

Cada arquivo de texto é limitado a 4 MiB e 20000 linhas; binários são rejeitados. Antes de gravar, patch verifica todas as linhas de contexto, portanto um patch de outra versão falha sem modificar o arquivo.

Prévia interativa do sandbox

Execute os exemplos preparados diretamente na página. Os resultados são predefinidos e exibidos no navegador; nenhum comando do terminal é executado no servidor.

Mostrar unified diff com três linhas de contexto

Instalar e gerenciar

Instale a versão compatível atual. Escolha Base para o conjunto completo de recursos ou Minimum para o pacote reduzido; use upgrade para atualizar um módulo já instalado.

Base e Minimum são dois pacotes da mesma versão atual do módulo.

Pacote Base

Instala o pacote completo com referência local e todos os modos publicados.

install diff
Pacote Minimum

Instalar o pacote reduzido. A referência local é omitida; help <cmd> -i abre a referência atual do servidor.

install diff -m
Versão pública exata

Instalar exatamente esta versão publicada.

install diff -v 1.1.3
Verificar ou atualizar

upgrade verifica compatibilidade e substitui o bloco somente quando necessário.

upgrade diff
Remover módulo

Remove o bloco da extensão sem afetar o núcleo ou outros módulos.

install diff -u

Exemplos

Os exemplos podem ser copiados, mas o site não os executa. Revise caminhos, permissões e opções destrutivas.

Mostrar unified diff com três linhas de contexto
cd \sandbox | diff workspace/original.txt workspace/updated.txt
--- workspace/original.txt
+++ workspace/updated.txt
@@ -1,2 +1,2 @@
-alpha
+alpha reviewed
Definir de 0 a 20 linhas de contexto
diff workspace/original.txt workspace/updated.txt -c 1
--- workspace/original.txt
+++ workspace/updated.txt
@@ -1,2 +1,2 @@
-alpha
+alpha reviewed
Informar somente se os arquivos diferem
diff workspace/original.txt workspace/updated.txt -q
Different  yes
Old        workspace/original.txt
New        workspace/updated.txt
Salvar o diff como arquivo de patch
diff workspace/original.txt workspace/updated.txt -o tmp/workspace.patch
Saved  tmp/workspace.patch
Size   148 B
Aplicar o patch em <file>.patched
patch workspace/original.txt tmp/workspace.patch
Source   workspace/original.txt
Patched  workspace/original.txt.patched

patch é fornecido pelo módulo diff e aplica unified diff de forma controlada sem depender do programa de sistema patch.

Gravar o resultado em outro arquivo
patch workspace/original.txt tmp/workspace.patch -o tmp/patched.txt
Source   workspace/original.txt
Patched  tmp/patched.txt

patch é fornecido pelo módulo diff e aplica unified diff de forma controlada sem depender do programa de sistema patch.

Permitir substituir uma saída existente sem -r
patch workspace/original.txt tmp/workspace.patch -o tmp/current.txt -f
Source   workspace/original.txt
Patched  tmp/current.txt
Replace  explicit

patch é fornecido pelo módulo diff e aplica unified diff de forma controlada sem depender do programa de sistema patch.

Substituir atomicamente o arquivo original
patch workspace/original.txt tmp/workspace.patch -r
Source   workspace/original.txt
Patched  workspace/original.txt

patch é fornecido pelo módulo diff e aplica unified diff de forma controlada sem depender do programa de sistema patch.

Tratar um arquivo de comparação ausente
diff missing.txt workspace/updated.txt
Arquivo não encontrado: missing.txt

Arquivo usado neste exemplo: sandbox/workspace/original.txt

O exemplo usa um arquivo ou diretório do espaço protegido de documentação /sandbox/.

alpha
beta
gamma

Documentação relacionada

Versão pública atual

v1.1.32026-08-08

Primeira versão estável

Versão estável atual de diff. diff compara dois arquivos de texto como unified diff; o comando patch incluído aplica a mudança somente se o contexto da origem ainda corresponder.