Guia do Linux/Iniciante+Intermediário/Comandos diversos/diff
diff
[editar | editar código-fonte]Compara dois arquivos e mostra as diferenças entre eles. O comando diff
é usado somente para a comparação de arquivos em formato texto. As diferenças encontradas podem ser redirecionadas para um arquivo que poderá ser usado pelo comando patch
para aplicar as alterações em um arquivo que não contém as diferenças. Isto é útil para grandes textos porque é possível copiar somente as modificações (geradas através do diff, que são muito pequenas) e aplicar no arquivo para atualiza-lo (através do patch
) ao invés de copiar a nova versão. Este é um sistema de atualização muito usado na atualização dos código fonte do kernel do GNU/Linux
.
diff [diretório1/arquivo1] [diretório2/arquivo2] [opções]
Opções:
- diretório1/arquivo1 diretório2/arquivo2
- Arquivos /diretórios que serão comparados. Normalmente é usado como primeiro arquivo/diretório o mais antigo e o mais novo como segundo.
- opções
- -lines [num]
- Gera a diferença com [num] linhas de contexto. Por padrão o
diff
gera um arquivo com 2 linhas que é o mínimo necessário para o correto funcionamento dopatch
. - -a
- Compara os dois arquivos como arquivos texto.
- -b
- Ignora espaços em branco como diferenças.
- -B
- Ignora linhas em branco inseridas ou apagadas nos arquivos.
- -i
- Ignora diferenças entre maiúsculas e minúsculas nos arquivos.
- -H
- Usa análise heurística para verificar os arquivos.
- -N
- Em uma comparação de diretórios, se o arquivo apenas existe em um diretório, trata-o como presente mas vazio no outro diretório.
- -P
- Em uma comparação de diretórios, se o arquivos apenas existe no segundo diretório, trata-o como presente mas vazio no primeiro diretório.
- -q
- Mostra somente se os dois arquivos possuem diferenças. Não mostra as diferenças entre eles.
- -r
- Compara diretórios e sub-diretórios existentes.
- -S [nome]
- Inicia a comparação de diretórios pelo arquivo [nome]. É útil quando cancelamos uma comparação.
- -t
- Aumenta a tabulação das diferenças encontradas.
- -u
- Usa o formato de comparação unificado.
Use o comando zdiff
para comparar diretamente arquivos compactados pelo utilitário gzip
Use o comando sdiff
para visualizar as linhas diferentes entre os dois arquivos em formato texto simples.
Exemplo:
- diff texto.txt texto1.txt - Compara o arquivo
texto.txt
comtexto1.txt
e exibe suas diferenças na tela.
- diff -Bu texto.txt texto1.txt - Compara o arquivo
texto.txt
comtexto1.txt
ignorando linhas em branco diferentes entre os dois arquivos e usando o formato unificado.
- diff texto.txt texto1.txt >texto.diff - Compara o arquivo
texto.txt
comtexto1.txt
e gera um arquivo chamadotexto.diff
contendo a diferença entre eles. Este arquivo poderá ser usado pelopatch
para aplicar as diferenças existente entre os dois no arquivotexto.txt
.
- diff -r /usr/src/linux-2.2.13 /usr/src/linux-2.2.14 >patch-2.2.14.diff - Compara o diretório e sub-diretórios
linux-2.2.13
elinux-2.2.14
e grava as diferenças entre eles no arquivopatch-2.2.14.diff
.