Présentation
Le diff
de Linux La commande est utilisée pour comparer deux fichiers ligne par ligne et afficher la différence entre eux. Cet utilitaire de ligne de commande répertorie les modifications que vous devez appliquer pour rendre les fichiers identiques.
Lisez la suite pour en savoir plus sur le diff
commande et ses options avec des exemples faciles à suivre.
Syntaxe diff
La syntaxe pour utiliser le diff
la commande est :
diff [option] file1 file2
Syntaxe de sortie
Lorsque vous travaillez avec diff
, il est crucial de savoir comment interpréter la sortie, qui consiste en :
- Sortie commençant par
<
fait référence au contenu du premier fichier. - Sortie commençant par
>
fait référence au contenu du second fichier. - Numéros de ligne correspondant au premier fichier.
- Un symbole spécial. Des symboles spéciaux indiquent comment le premier fichier doit être modifié pour correspondre au second fichier. La sortie peut afficher :
a
(ajouter)c
(modifier)d
(supprimer)
- Numéros de ligne correspondant au deuxième fichier.
Exemple de comparaison
Pour montrer comment le diff
commande fonctionne, nous avons créé deux exemples de fichiers et comparé leur contenu.
Créer deux exemples de fichiers
1. Tout d'abord, à l'aide du terminal, créez un fichier Linux nommé example1.txt . Nous utilisons l'éditeur de texte Nano, mais vous pouvez utiliser un éditeur de texte de votre choix.
sudo nano example1.txt
2. Une fois que l'éditeur de texte a créé et ouvert le fichier, ajoutez-y les lignes suivantes :
Apple
Orange
Banana
Watermelon
Chery
3. Enregistrez et quittez le fichier - maintenez Ctrl + X et confirmez en appuyant sur Y .
4. Ensuite, créez un example2.txt fichier en exécutant :
sudo nano example2.txt
5. Ajoutez le contenu suivant au fichier :
Orange
Peach
Apple
Banana
Melon
Cherry
6. Enregistrez les modifications et quittez.
Comparer les fichiers avec la commande diff
1. Avec les deux exemples de fichiers en place, utilisez le diff
commande pour voir en quoi ils diffèrent et comment les rendre identiques :
diff example1.txt example2.txt
La sortie répertorie les instructions sur la façon de modifier le premier fichier pour qu'il ait le même contenu que dans example2.txt . Examinons la sortie des exemples de fichiers et décodons les instructions.
1d0
– La première ligne (1
) du premier fichier doit être supprimé (d
). Sinon, il apparaîtrait à la ligne0
dans le deuxième fichier.< Apple
–Le contenu que vous devez supprimer (comme indiqué par1d0
).2a2,3
– En ligne2
du premier fichier, vous devez ajouter (a
) lignes2
et3
(2,3
) du deuxième fichier.> Peach
,> Apple
– Le contenu que vous devez ajouter (comme indiqué par2a2,3
).4c5
– La quatrième ligne (4
) du premier fichier doit être modifié (c
) à la cinquième ligne (5
) du deuxième fichier.< Watermelon
– Le contenu que vous devez modifier.> Melon
– En quoi vous devez le changer.
Options de comparaison
Sans options supplémentaires, diff
affiche la sortie dans le format par défaut. Il existe des moyens de modifier cette sortie pour la rendre plus compréhensible ou applicable à votre cas d'utilisation. Lisez la suite pour en savoir plus sur diff
options de commande.
Option-c
Le format de contexte est un diff
option d'utilitaire de ligne de commande qui génère plusieurs lignes de contexte autour des lignes qui diffèrent.
Pour afficher la différence entre les fichiers sous forme contextuelle, utilisez la commande :
diff -c file1 file2
Jetez un œil à la sortie des exemples de fichiers dans le formulaire de contexte dans l'image ci-dessous.
Les lignes affichant des informations sur le premier fichier commencent par ***
, tandis que les lignes indiquant le deuxième fichier commencent par ---
.
Les deux premières lignes affichent le nom et l'horodatage des deux fichiers :
*** example1.txt 2021-12-27 10:53:30.700640904 +0100
--- example2.txt 2021-12-27 10:54:41.304939358 +0100
****************
- est utilisé uniquement comme séparateur.
Avant de lister les lignes de chaque fichier, la sortie commence par la plage de lignes des fichiers :
*** 1,5 ****
--- 1,6 ----
Le reste des lignes liste le contenu des fichiers. Le début de chaque ligne indique comment modifier example1.txt pour le rendre identique à example2.txt . Si la ligne commence par :
-
(moins) - il doit être supprimé du premier fichier.
+
(plus) – il doit être ajouté au premier fichier.
!
(point d'exclamation) - il doit être remplacé par la ligne correspondante du deuxième fichier.
S'il n'y a pas de symbole, la ligne reste la même.
Par conséquent, dans l'exemple ci-dessus, vous devez supprimer Apple
à partir de la première ligne, remplacez Watermelon
avec Melon
à la ligne quatre, et ajoutez Peach
et Apple
aux lignes deux et trois.
Option -u
Le format unifié est une option que vous pouvez ajouter pour afficher la sortie sans lignes de contexte redondantes. Pour cela, utilisez la commande :
diff -u file1 file2
Examinons maintenant la sortie des exemples de fichiers au format unifié :
Les lignes affichant des informations sur le premier fichier commencent par ---
, tandis que les lignes indiquant le deuxième fichier commencent par +++
.
Les deux premières lignes affichent le nom et l'horodatage des deux fichiers :
*** example1.txt 2021-12-27 10:53:30.700640904 +0100
--- example2.txt 2021-12-27 10:54:41.304939358 +0100
@@ -1,5 +1,6 @@
- affiche la plage de lignes pour les deux fichiers.
Les lignes ci-dessous affichent le contenu des fichiers et comment modifier example1.txt pour le rendre identique à example2.txt . Lorsque la ligne commence par :
-
(moins) - il doit être supprimé du premier fichier.
+
(plus) - il doit être ajouté au premier fichier.
S'il n'y a pas de symbole, la ligne reste la même.
Dans l'exemple ci-dessus, la sortie indique que Apple
et Watermelon
doit être supprimé, alors que Peach
, Apple
, et Melon
doit être ajouté.
option -i
Par défaut, diff
est sensible à la casse. Si vous voulez qu'il ignore la casse, ajoutez le -i
option à la commande :
diff -i file1 file2
Par exemple, si nous créons un fichier avec les lignes suivantes :
Apple
Orange
Banana
Watermelon
Cherry
Et un autre fichier avec le contenu :
Apple
orange
Banana
watermelon
Cherry
La sortie sans options supplémentaires montre qu'il existe des différences entre les fichiers et donne des instructions pour les modifier.
Cependant, si vous ajoutez le -i
option, il n'y a pas de sortie car la commande ne détecte aucune différence.
--option de version
Pour vérifier la version de diff
en cours d'exécution sur votre système, exécutez la commande :
diff --version
--option d'aide
Pour générer un résumé de diff
cycle d'utilisation :
diff --help
Autres options de comparaison
Autres options qui diff
les supports incluent :
-a / --text | Affichez les fichiers sous forme de texte et comparez-les ligne par ligne. |
-b / --ignore-space-change | Ignorer les espaces blancs lors de la comparaison de fichiers. |
-B / --ignore-blank-lines<code> | Ignorer les lignes vides lors de la comparaison de fichiers. |
--binary | Comparer et écrire des données en mode binaire. |
-d --minimal | Modifier l'algorithme (par exemple, pour trouver un plus petit ensemble de modifications). |
-e / --ed | Faire en sorte que la sortie soit un ed valide script. |
-E / --ignore-tab-expansion | Ignorer l'extension de tabulation lors de la comparaison de fichiers. |
-l / --paginate | Exécuter la sortie via pr pour le paginer. |
-N / --new-file | Traiter un fichier manquant comme présent mais vide. |
-q / --brief | Afficher si les fichiers diffèrent sans spécifier de détails. |
-s / --report-identical-files | Sortie lorsque les fichiers sont identiques. |
-w / --ignore-all-space | Ignorer les espaces blancs lors de la comparaison de fichiers. |