Este guia mostrará como usar o Linux para comparar dois arquivos e exibir sua diferença na tela ou em um arquivo.
Você não precisa instalar nenhum software especial para comparar arquivos usando o Linux, mas precisa saber como abrir uma janela de terminal.
Como o guia vinculado mostra, há muitas maneiras de abrir uma janela de terminal usando o Linux. O mais simples é pressionar as teclas CTRL, ALT e T ao mesmo tempo.
Criando os arquivos para comparar
Para seguir este guia, crie um arquivo chamado "file1" e digite o seguinte texto:
10 garrafas verdes em pé na parede
10 garrafas verdes em pé na parede
Se uma garrafa verde cair acidentalmente
Haveria 9 garrafas verdes em pé na parede
Você pode criar um arquivo seguindo estas instruções:
-
Abra o arquivo digitando o seguinte comando: nano file1
-
Digite o texto no editor nano
-
Pressione CTRL e O para salvar o arquivo
-
Pressione CTRL e X para sair do arquivo
Agora crie outro arquivo chamado "file2" e digite o seguinte texto:
10 garrafas verdes em pé na parede
Se 1 garrafa verde cair acidentalmente
Haveria 9 garrafas verdes em pé na parede
Você pode criar um arquivo seguindo estas instruções:
-
Abra o arquivo digitando o seguinte comando: nano file2
-
Digite o texto no editor nano
-
Pressione CTRL e O para salvar o arquivo
-
Pressione CTRL e X para sair do arquivo
Como comparar dois arquivos usando o Linux
O comando usado no Linux para mostrar as diferenças entre dois arquivos é chamado de comando diff.
A forma mais simples do comando diff é a seguinte:
arquivo diff1 arquivo2
Se os arquivos são os mesmos, então não haverá saída ao usar este comando, no entanto, como existem diferenças, você verá uma saída semelhante à seguinte:
2,4c2,3
<10 garrafas verdes em pé na parede
<Se uma garrafa verde cair acidentalmente
<Haveria 9 garrafas verdes em pé na parede
…
> Se 1 garrafa verde cair acidentalmente
> Haveria 9 garrafas verdes em pé na parede
Inicialmente, a saída pode parecer confusa, mas uma vez que você entenda a terminologia, é bastante lógico.
Usando seus próprios olhos, você pode ver que as diferenças entre os dois arquivos são as seguintes:
- O segundo arquivo tem apenas três linhas, enquanto o primeiro arquivo tem quatro.
- O segundo arquivo diz "1 garrafa verde" na terceira linha, enquanto o primeiro arquivo diz "uma garrafa verde"
- O segundo arquivo diz "não" em vez de "lá" na linha final
A saída do comando diff mostra que entre as linhas 2 e 4 do primeiro arquivo e as linhas 2 e 3 do segundo arquivo existem diferenças.
Em seguida, lista as linhas de 2 a 4 do primeiro arquivo, seguidas das duas linhas diferentes no segundo arquivo.
Como apenas mostrar se os arquivos são diferentes
Se você quer apenas saber se os arquivos são diferentes e você não está interessado em quais linhas são diferentes, você pode executar o seguinte comando:
diff -q arquivo1 arquivo2
Se os arquivos forem diferentes, o seguinte será exibido:
Arquivos file1 e file2 diferem
Se os arquivos forem os mesmos, nada será exibido.
Como mostrar uma mensagem se os arquivos forem iguais
Quando você executa um comando, você quer saber se ele funcionou corretamente, portanto, você deseja que uma mensagem seja exibida ao executar o comando diff, independentemente de os arquivos serem iguais ou diferentes.
Para atingir este requisito usando o comando diff, você pode usar o seguinte comando:
diff -s file1 file2
Agora, se os arquivos forem os mesmos, você receberá a seguinte mensagem:
Os arquivos file1 e file2 são idênticos
Como Produzir as Diferenças Lado a Lado
Se houver muitas diferenças, pode rapidamente tornar-se confuso sobre quais são as diferenças entre os dois arquivos.
Você pode alterar a saída do comando diff para que os resultados sejam mostrados lado a lado. Para fazer isso, execute o seguinte comando:
diff -y arquivo1 arquivo2
A saída para o arquivo usa o | símbolo para mostrar uma diferença entre as duas linhas, a <para mostrar uma linha que foi removida e a> para mostrar uma linha que foi anexada.
Curiosamente, se você executar o comando usando nossos arquivos de demonstração, todas as linhas serão mostradas como diferentes, exceto a última linha do arquivo 2, que será mostrada como tendo sido excluída.
Restringindo as larguras da coluna
Ao comparar dois arquivos lado a lado, pode ser difícil de ler se os arquivos tiverem muitas colunas de texto.
Para restringir um número de colunas, use o seguinte comando:
diff --width = 5 arquivo file2
Como ignorar diferenças de caso ao comparar arquivos
Se você quiser comparar dois arquivos, mas não se importa se o caso das letras é o mesmo entre os dois arquivos, use o seguinte comando:
Como ignorar o espaço em branco no final de uma linha
Se, ao comparar os arquivos, você notar cargas de diferenças e as diferenças forem causadas pelo espaço em branco no final das linhas, você poderá omitir essas alterações como sendo exibidas executando o seguinte comando:
Como ignorar todas as diferenças de espaço em branco entre dois arquivos
Se você está interessado apenas no texto em um arquivo e não se importa se há mais espaços em um que o outro, você pode usar o seguinte comando:
Como ignorar linhas em branco ao comparar dois arquivos
Se você não se importa que um arquivo possa ter linhas extras em branco, você pode comparar os arquivos usando o seguinte comando:
Resumo
Você pode encontrar mais informações lendo o manual do comando diff.
homem diff
O comando diff pode ser usado em sua forma mais simples para mostrar apenas as diferenças entre 2 arquivos, mas você também pode usá-lo para criar um arquivo diff como parte de uma estratégia de correção conforme mostrado neste guia para o comando patch do Linux.
Outro comando que você pode usar para comparar arquivos é o comando cmp, conforme mostrado neste guia. Isso compara arquivos byte por byte.