Comparez des fichiers entre eux avec diff sous Linux
I. Présentation
Il est souvent utile de savoir si deux fichiers comportent des différences. Cela peut par exemple être le cas dans le cas du développement d'application ou de script mais aussi pour la comparaison de configuration par exemple. Je vais ici vous présenter la commande "diff" sous Linux ainsi que quelques une de ses fonctionnalités pour y faire le tour.
II. Utilisation de la commande diff
La commande diff est par défaut présente sur la plupart des systèmes UNIX. Je fait ici mes commandes d'illustration sur une distribution Debian 7. Pour ce faire, je crée deux fichiers f1.txt contenant "Chaine de caractère" et f2.txt contenant la même chose. On va ensuite faire un "diff" sur ces deux fichiers pour voir leurs différences :
diff f1.txt f2.txt
On ne voit alors aucun retour, ce qui est normal puisque nos fichiers sont identiques (pour l'instant) ! Pour rendre le retour un peu plus sympa quand les fichiers comparés sont identiques, on peut ajouter l'option -s pour avoir le résultat suivant :
Je modifier maintenant mon fichier f2.txt pour y insérer des lettres majuscules aléatoirement dans le message au lieu de certaines minuscules :
diff f1.txt f2.txt
Voici le retour que nous aurons :
On voit donc que diff nous trouve une différence entre le contenu des deux fichiers. Pour ignorer ce que l'on appelle la casse, on peut utiliser l'option "-i" :
diff f1.txt f2.txt -i
A nouveau, on peut également y joindre l'option "-s" pour avoir une confirmation textuelle que les fichiers sont identiques.
Nous allons maintenant ajouter deux lignes de texte dans le fichier f2.txt, ces deux lignes contiendront respectivement "Ligne1" et "Ligne2". On va ensuite comparer les deux fichiers :
On voit donc une détection de différence entre les deux fichiers. Si l'on ajoute la même modification dans f1.txt mais avec un saut de ligne entre les deux, la différence sera toujours détectée, pour éviter que les sauts de lignes vides soient considérées comme des différences, on peut utiliser l'option "-B", comme suivant :
De la même façon, nous pourrons exclure les différences d'espace au sein d'une même ligne avec l'option "-b" cette fois-ci. Voila, nous avons rapidement fait le tour de quelques options bien sympathiques de cette commande, il en existe beaucoup d'autres, vous pourrez les découvrir avec "diff --help".
pratique simple et efficace !
Merci