Hospedagem online grátis para estações de trabalho

<Anterior | Conteúdo | Próxima>

diff

Tal como o comm programa diff é usado para detectar as diferenças entre os arquivos. Contudo, diff é uma ferramenta muito mais complexa, com suporte a muitos formatos de saída e a capacidade de processar grandes coleções de arquivos de texto de uma só vez. diff é frequentemente usado por desenvolvedores de software para examinar as mudanças entre diferentes versões do código-fonte do programa e, portanto, tem a capacidade de examinar recursivamente os diretórios do código-fonte, muitas vezes referido como árvores fonte. Um uso comum para diff é a criação de arquivos diff or remendos que são usados ​​por programas como remendo (que discutiremos em breve) para converter uma versão de um arquivo (ou arquivos) para outra versão.

Se usarmos diff para ver nossos arquivos de exemplo anteriores:


[me @ linuxbox ~] $ diff arquivo1.txt arquivo2.txt

1d0

<a 4a4

> e

[me @ linuxbox ~] $ diff arquivo1.txt arquivo2.txt

1d0

<a 4a4

> e


vemos seu estilo padrão de saída: uma descrição concisa das diferenças entre os dois arquivos. No formato padrão, cada grupo de mudanças é precedido por um mudar o comando na forma de faixa faixa de operação para descrever as posições e tipos de mudanças necessárias para converter o primeiro arquivo para o segundo arquivo:


Tabela 20-4: Comandos de mudança diff


mudar descrição

mudar descrição

r1ar2 Acrescente as linhas na posição r2 no segundo arquivo para a posição

r1 no primeiro arquivo.


r1cr2 Alterar (substituir) as linhas na posição r1 com as linhas na posição r2 no segundo arquivo.


r1dr2 Exclua as linhas do primeiro arquivo na posição r1, que teria aparecido ao alcance r2 no segundo arquivo



Neste formato, um intervalo é uma lista separada por vírgulas da linha inicial e da linha final. Embora este formato seja o padrão (principalmente para conformidade com POSIX e compatibilidade com versões tradicionais do Unix diff), não é tão amplamente usado como outros formatos opcionais. Dois dos formatos mais populares são os formato de contexto e formato unificado.

Quando visualizado usando o formato de contexto (o -c opção), veremos isto:


[me @ linuxbox ~] $ diff -c arquivo1.txt arquivo2.txt

*** file1.txt 2008-12-23 06: 40: 13.000000000 -0500

--- file2.txt 2008-12-23 06: 40: 34.000000000 -0500

***************

*** 1,4 ****

- abcd

--- 1,4 ----

bcd

+ E

[me @ linuxbox ~] $ diff -c arquivo1.txt arquivo2.txt

*** file1.txt 2008-12-23 06: 40: 13.000000000 -0500

--- file2.txt 2008-12-23 06: 40: 34.000000000 -0500

***************

*** 1,4 ****

- abcd

--- 1,4 ----

bcd

+ E


A saída começa com os nomes dos dois arquivos e seus carimbos de data / hora. O primeiro arquivo é marcado com asteriscos e o segundo arquivo é marcado com travessões. Ao longo do restante da listagem, esses marcadores significarão seus respectivos arquivos. A seguir, vemos grupos de mudanças, incluindo o número padrão de linhas de contexto circundantes. No primeiro grupo, vemos:

*** 1,4 ***

que indica as linhas 1 a 4 no primeiro arquivo. Mais tarde vemos:

--- 1,4 ---

que indica as linhas 1 a 4 no segundo arquivo. Dentro de um grupo de mudança, as linhas começam com um dos quatro indicadores:


Tabela 20-5: indicadores de mudança de formato de contexto diff


Significado do indicador

Significado do indicador

em branco Uma linha mostrada para contexto. Isso não indica uma diferença entre os dois arquivos.


- Uma linha excluída. Esta linha aparecerá no primeiro arquivo, mas não no segundo arquivo.



+ Uma linha adicionada. Esta linha aparecerá no segundo arquivo, mas não no primeiro arquivo.


! Uma linha mudou. As duas versões da linha serão exibidas, cada uma em sua respectiva seção do grupo de mudança.



O formato unificado é semelhante ao formato de contexto, mas é mais conciso. É especificado com o -u opção:


[me @ linuxbox ~] $ diff -u arquivo1.txt arquivo2.txt

--- file1.txt 2008-12-23 06: 40: 13.000000000 -0500

+++ file2.txt 2008-12-23 06: 40: 34.000000000 -0500

@@ -1,4 +1,4 @@

-abcd

+e

[me @ linuxbox ~] $ diff -u arquivo1.txt arquivo2.txt

--- file1.txt 2008-12-23 06: 40: 13.000000000 -0500

+++ file2.txt 2008-12-23 06: 40: 34.000000000 -0500

@@ -1,4 +1,4 @@

-abcd

+e


A diferença mais notável entre o contexto e os formatos unificados é a eliminação das linhas de contexto duplicadas, tornando os resultados do formato unificado mais curtos do que os do formato de contexto. Em nosso exemplo acima, vemos carimbos de data / hora de arquivo como os do formato de contexto, seguidos pela string @@ -1,4 +1,4 @@. Isso indica as linhas do primeiro arquivo e as linhas do segundo arquivo descritas no grupo de mudança. A seguir estão as próprias linhas, com o padrão de três linhas de contexto. Cada linha começa com um dos três caracteres possíveis:


Tabela 20-6: indicadores de mudança de formato unificado diff


Significado do personagem

Significado do personagem

em branco Esta linha é compartilhada por ambos os arquivos.


- Esta linha foi removida do primeiro arquivo.


+ Esta linha foi adicionada ao primeiro arquivo.



Top OS Cloud Computing na OnWorks: