Como usar arquivos Diff no Linux

Como usar arquivos Diff no Linux

Diff é uma ferramenta de linha de comando para sistemas Unix que permite comparar dois arquivos ou diretórios e ver as diferenças entre eles. É ideal para comparar versões antigas e novas de arquivos para ver o que mudou. Neste artigo, mostramos como você pode usar diffpara comparar arquivos facilmente no Linux.

Comparando arquivos com diff

  • Abra uma janela de terminal.
  • Digite diffe os caminhos para dois arquivos que você gostaria de comparar. Neste caso, estou comparando dois pequenos programas C na minha área de trabalho usando o seguinte comando:

diff ~/Desktop/hello.c ~/Desktop/hello-1.c

Uma janela de terminal mostrando um comando diff.
  • Pressione Enterpara enviar o comando. A exibição resultante mostrará todas as linhas diferentes entre os arquivos. Os números de linha comparados serão mostrados como “1c1”, significando que a primeira linha foi alterada e as seguintes diferenças foram encontradas.
Uma janela de terminal mostrando a saída de um comando diff.
  • Para ver lado a lado os arquivos e suas diferenças, use o -ysinalizador após diff. Por exemplo:

diff -y ~/Desktop/hello.c ~/Desktop/hello-1.c

Uma janela de terminal mostrando um comando que imprimirá uma diferença visual.

Qualquer linha com um símbolo de barra vertical ( |) é uma linha com uma diferença. Apenas certifique-se de expandir a janela do seu terminal primeiro, ou você pode ter dificuldade em ver a tela.

Uma janela de terminal mostrando a saída de um comando visual diff.

Comparando arquivos com Meld

A funcionalidade do difftambém pode ser acessada através do Meld , uma GUI para diff. Considerando que a interface do usuário do diff pode ser difícil de controlar, o Meld é uma ferramenta útil.

  • Instale o Meld a partir da linha de comando abrindo o terminal e digitando:

sudo apt -y install meld

ou

sudo dnf -y install meld

para distribuições baseadas em RPM.

Isso inicializará o gerenciador de pacotes apt e iniciará a instalação do Meld. Observe que o -ysinalizador dirá automaticamente “sim” a qualquer prompt; remova-o se preferir confirmar esses prompts manualmente.

Uma janela de terminal mostrando o comando de instalação do Meld.
  • Digite sua senha de administrador quando solicitado. Quando você vir o prompt de comando novamente, a instalação estará concluída e o Meld poderá ser aberto.
Uma janela de terminal mostrando o processo de instalação do Meld.
  • Ao abrir o Meld, você verá três opções: Comparação de arquivos, Comparação de diretórios e Visualização de controle de versão. Clique em “Arquivo”.
Uma captura de tela da tela de boas-vindas do Meld.
  • Dois menus suspensos serão exibidos, ambos com a mensagem “(Nenhum)”. Clique em um para selecionar um arquivo para comparação.
Uma captura de tela da tela Meld com um destaque no primeiro seletor de arquivos.
  • Clique no outro menu suspenso para selecionar um segundo arquivo para comparação.
Uma captura de tela da tela Meld com destaque no segundo seletor de arquivos.
  • Clique no botão “Comparar”.
Uma captura de tela da tela Meld com destaque no botão Comparar.
  • A próxima janela resume todas as diferenças encontradas entre dois arquivos. Os caracteres vermelhos são diferenças, e o fundo azul indica que há uma diferença nessa linha. Um fundo verde indica que existe uma linha em um arquivo, mas não no outro.
Uma captura de tela do programa Meld com uma visualização simples de comparação de dois arquivos.
  • Para navegar entre as diferenças, clique nos botões para cima e para baixo na barra de menus. Você também pode clicar diretamente no documento com o mouse.
Uma captura de tela do programa Meld destacando seu botão de navegação de diferenças.

Manipulando arquivos no Meld

Além de fazer comparações, o Meld permite que você altere os arquivos comparados. O Meld continuará a analisar o documento em busca de alterações à medida que você modificar qualquer uma das versões, e você pode pressionar Ctrl+ Za qualquer momento para desfazer as alterações.

  • Para copiar as alterações de um arquivo para outro, clique nas pequenas setas pretas entre as alterações. Clicar na seta à esquerda, por exemplo, usará a linha do documento à esquerda para sobrescrever o documento à direita.
Uma captura de tela do programa Meld mostrando os botões de resolução de diferenças.
  • As linhas também podem ser inseridas em documentos sem substituição. Se você segurar a Ctrltecla, verá as setas da última etapa se transformarem em sinais de mais. Clique no ícone para abrir uma pequena caixa de diálogo onde você pode escolher onde inserir uma nova linha.
Uma captura de tela do programa Meld mostrando seu prompt de adição de diferenças.
  • Finalmente, digite diretamente em seu documento. Basta inserir o cursor como faria normalmente e começar a digitar.
  • Depois de fazer as alterações, clique no botão “Salvar” para salvar seus arquivos.
Uma captura de tela do programa Meld destacando seu botão de salvamento por arquivo.

Criando arquivos diff usando Meld e diff

Além de mostrar as diferenças entre dois arquivos, você também pode usar o Meld para criar “arquivos diff”. Estes são pequenos pedaços de texto que contêm instruções sobre como aplicar alterações de uma versão de arquivo para outra. Isso é útil se você deseja distribuir atualizações de código rapidamente sem compartilhar novamente todo o arquivo de origem.

  • Abra os dois arquivos que você deseja comparar.
Uma captura de tela do programa Meld mostrando uma comparação simples.
  • Clique no menu Opções no canto superior direito da janela.
Uma captura de tela destacando o botão de opções do Meld.
  • Selecione o submenu “Comparação”.
Uma captura de tela do menu de opções do Meld com destaque no submenu Comparação.
  • Clique na subopção “Formatar como Patch”.
Uma captura de tela do submenu Comparação com destaque na subopção Formato.
  • Isso abrirá uma pequena janela onde o Meld imprimirá todo o arquivo diff entre seus dois arquivos. Neste ponto, você pode copiar este texto para a área de transferência ou salvá-lo em um arquivo. Para fazer o último, clique no botão “Salvar patch”.
Uma captura de tela da subjanela Patch do Meld com um destaque no

Embora a criação de arquivos diff dentro do Meld seja simples e direta, há casos em que pode não ser possível acessar uma GUI durante a edição do código. Para isso, você também pode usar o diffprograma para gerar um arquivo diff.

  • Abra um terminal e verifique se há diferenças entre os dois arquivos:

diff hello.c hello-1.c

Um terminal mostrando uma diferença simples entre dois arquivos.
  • Crie um arquivo diff simples usando o -csinalizador:

diff -c hello.c hello-1.c > hello.diff

Um terminal mostrando uma saída básica de arquivo diff.
  • Opcionalmente, use a -uopção que combina os dois fluxos de texto em um único bloco de comparação unificado. Isso pode ser útil se você estiver alterando muito código e quiser economizar espaço em disco:

diff -u hello.c hello-1.c > hello.diff

Um terminal mostrando uma saída diff unificada mais complexa.

Usando arquivos diff para corrigir o código-fonte

Conforme discutido acima, um arquivo diff permite que você crie um resumo facilmente compartilhável das alterações em seu código-fonte. No entanto, o próprio diff não pode aplicá-los a arquivos existentes. Para fazer isso, use o programa complementar do diff, patch.

  • Determine o código-fonte original que o arquivo diff está tentando alterar:

cat hello.diff | sed 1q

Um terminal mostrando o cabeçalho do arquivo de origem original.
  • Crie um backup do seu código-fonte original:

cp hello.c hello.c.old

  • Execute o programa patch com o arquivo original no primeiro argumento e o arquivo diff no segundo:

patch hello.c hello.diff

Um terminal mostrando um comando patch simples para um único arquivo de origem.

É importante observar que um arquivo diff também pode conter alterações que abrangem vários arquivos. Aplique isso colocando todos os arquivos necessários para atualizar em um único diretório e executando patch < multi-file.diff.

  • Verifique se o programa de patch atualizou com sucesso seu arquivo de origem comparando-o com seu backup:

diff -y hello.c hello.c.old

Um terminal mostrando a diferença visual entre o arquivo de origem novo e o original.

FYI: Git é um poderoso programa de controle de versão multiplataforma. Saiba como você pode usá-lo para gerenciar seus repositórios de código-fonte no Linux.

perguntas frequentes

É possível corrigir um arquivo várias vezes?

Sim. No entanto, é importante observar que o valor do número da linha dentro de um arquivo diff é estático. Por exemplo, aplicar um diff que adiciona cinco linhas de código na linha 1 ajustará o arquivo inteiro em cinco linhas. Embora as ferramentas modernas possam compensar as alterações de diferenças únicas, aplicar mais de uma pode criar conflitos de código desnecessários.

Um arquivo diff é semelhante a um patch do Git?

Sim. Tanto o diff quanto o Git usam um tipo de formato semelhante para seus patches de código. Como resultado, você pode trocar os dois utilitários ao aplicar atualizações em seu código-fonte. Por exemplo, correr git apply hello.diffé equivalente a correr patch < hello.diff.

Você pode usar o Meld com um programa de controle de versão como o Git?

Sim. Um dos recursos mais poderosos do Meld é que ele pode funcionar de forma transparente com qualquer programa de controle de versão. Isso permite que você interaja facilmente com seus repositórios fora da interface do terminal.

Para fazer isso, pressione Ctrl+ Ne clique no botão “Visualização de controle de versão”. Em seguida, clique na caixa suspensa abaixo e selecione “Outro”. Isso abrirá uma pequena janela onde você pode ver e carregar seu repositório Git.

Crédito da imagem: Unsplash . Todas as capturas de tela por Ramces Red.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *