Stations de travail en ligne OnWorks Linux et Windows

Logo

Hébergement gratuit en ligne pour les postes de travail

<Précédent | Table des matières | Suivant>

diff

Comme le comm programme, diff est utilisé pour détecter les différences entre les fichiers. Cependant, diff est un outil beaucoup plus complexe, prenant en charge de nombreux formats de sortie et la capacité de traiter de grandes collections de fichiers texte à la fois. diff est souvent utilisé par les développeurs de logiciels pour examiner les changements entre différentes versions du code source du programme, et a ainsi la capacité d'examiner de manière récursive les répertoires de code source, souvent appelés arbres sources. Une utilisation courante pour diff est la création de fichiers diff or patchs qui sont utilisés par des programmes tels que pièce (dont nous parlerons bientôt) pour convertir une version d'un fichier (ou de fichiers) en une autre version.

Si on utilise diff pour regarder nos fichiers d'exemple précédents :


[moi@linuxbox ~]$ fichier diff1.txt fichier2.txt

1d0

< a 4a4

> e

[moi@linuxbox ~]$ fichier diff1.txt fichier2.txt

1d0

< a 4a4

> e


Nous voyons son style de sortie par défaut : une description concise des différences entre les deux fichiers. Dans le format par défaut, chaque groupe de modifications est précédé d'un commande de changement sous la forme de plage de fonctionnement de la plage pour décrire les positions et les types de modifications nécessaires pour convertir le premier fichier en deuxième fichier :


Tableau 20-4 : commandes de changement diff


Changer la description

Changer la description

r1ar2 Ajoutez les lignes à la position r2 dans le deuxième fichier à la position

r1 dans le premier fichier.


image

r1cr2 Changer (remplacer) les lignes à la position r1 avec les lignes à la position r2 dans le deuxième fichier.


image

r1dr2 Supprimez les lignes du premier fichier à la position r1, qui serait apparu à portée r2 dans le deuxième fichier


image


Dans ce format, une plage est une liste séparée par des virgules de la ligne de début et de la ligne de fin. Bien que ce format soit le format par défaut (principalement pour la conformité POSIX et la compatibilité descendante avec les versions Unix traditionnelles de diff), il n'est pas aussi largement utilisé que d'autres formats optionnels. Deux des formats les plus populaires sont format de contexte et la format unifié.

Lorsqu'il est visualisé à l'aide du format contextuel (le -c option), nous verrons ceci :


[moi@linuxbox ~]$ diff -c fichier1.txt fichier2.txt

*** fichier1.txt 2008-12-23 06:40:13.000000000 -0500

--- fichier2.txt 2008-12-23 06:40:34.000000000 -0500

***************

*** 1,4 ****

- abcd

--- 1,4 ----

bcd

+ et

[moi@linuxbox ~]$ diff -c fichier1.txt fichier2.txt

*** fichier1.txt 2008-12-23 06:40:13.000000000 -0500

--- fichier2.txt 2008-12-23 06:40:34.000000000 -0500

***************

*** 1,4 ****

- abcd

--- 1,4 ----

bcd

+ et


La sortie commence par les noms des deux fichiers et leurs horodatages. Le premier fichier est marqué d'astérisques et le second de tirets. Dans le reste de la liste, ces marqueurs désignent leurs fichiers respectifs. Ensuite, nous voyons des groupes de modifications, avec le nombre par défaut de lignes de contexte environnantes. Dans le premier groupe, nous voyons :

*** 1,4 ***

qui indique les lignes 1 à 4 du premier fichier. On voit ensuite :

--- 1,4 ---

qui indique les lignes 1 à 4 du deuxième fichier. Dans un groupe de modifications, les lignes commencent par l'un des quatre indicateurs suivants :


Tableau 20-5 : Indicateurs de changement de format de contexte diff


Signification de l'indicateur

Signification de l'indicateur

vide Une ligne affichée à titre contextuel. Elle n'indique aucune différence entre les deux fichiers.


image

- Une ligne a été supprimée. Cette ligne apparaîtra dans le premier fichier, mais pas dans le second.


image


image

+ Une ligne a été ajoutée. Cette ligne apparaîtra dans le deuxième fichier, mais pas dans le premier.


image

! Une ligne a été modifiée. Les deux versions de la ligne seront affichées, chacune dans sa section respective du groupe de modifications.


image


Le format unifié est similaire au format contextuel, mais plus concis. Il est spécifié avec le -u option:


[moi@linuxbox ~]$ diff -u fichier1.txt fichier2.txt

--- fichier1.txt 2008-12-23 06:40:13.000000000 -0500

+++ fichier2.txt 2008-12-23 06:40:34.000000000 -0500

@@ -1,4 +1,4 @@

-abcd

+e

[moi@linuxbox ~]$ diff -u fichier1.txt fichier2.txt

--- fichier1.txt 2008-12-23 06:40:13.000000000 -0500

+++ fichier2.txt 2008-12-23 06:40:34.000000000 -0500

@@ -1,4 +1,4 @@

-abcd

+e


La différence la plus notable entre les formats contextuel et unifié réside dans l'élimination des lignes de contexte dupliquées, ce qui rend les résultats du format unifié plus courts que ceux du format contextuel. Dans l'exemple ci-dessus, nous voyons des horodatages de fichier similaires à ceux du format contextuel, suivis de la chaîne. @@ -1,4 +1,4 @@Ceci indique les lignes du premier fichier et celles du second fichier décrites dans le groupe de modifications. Viennent ensuite les lignes elles-mêmes, avec les trois lignes de contexte par défaut. Chaque ligne commence par l'un des trois caractères suivants :


Tableau 20-6 : Indicateurs de changement de format unifié diff


Caractère Signification

Caractère Signification

vide Cette ligne est partagée par les deux fichiers.


image

- Cette ligne a été supprimée du premier fichier.


image

+ Cette ligne a été ajoutée au premier fichier.


image


Meilleur système d'exploitation Cloud Computing chez OnWorks :