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 diff
para comparar arquivos facilmente no Linux.
Comparando arquivos com diff
- Abra uma janela de terminal.
- Digite
diff
e 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
- 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.
- Para ver lado a lado os arquivos e suas diferenças, use o
-y
sinalizador apósdiff
. Por exemplo:
diff -y ~/Desktop/hello.c ~/Desktop/hello-1.c
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.
Comparando arquivos com Meld
A funcionalidade do diff
també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 -y
sinalizador dirá automaticamente “sim” a qualquer prompt; remova-o se preferir confirmar esses prompts manualmente.
- 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.
- 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”.
- Dois menus suspensos serão exibidos, ambos com a mensagem “(Nenhum)”. Clique em um para selecionar um arquivo para comparação.
- Clique no outro menu suspenso para selecionar um segundo arquivo para comparação.
- Clique 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.
- 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.
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.
- 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.
- 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.
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.
- Clique no menu Opções no canto superior direito da janela.
- Selecione o submenu “Comparação”.
- Clique na subopção “Formatar como Patch”.
- 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”.
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 diff
programa para gerar um arquivo diff.
- Abra um terminal e verifique se há diferenças entre os dois arquivos:
diff hello.c hello-1.c
- Crie um arquivo diff simples usando o
-c
sinalizador:
diff -c hello.c hello-1.c > hello.diff
- Opcionalmente, use a
-u
opçã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
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
- 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
É 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
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