Ci-dessous, les différences entre deux révisions de la page.
| Prochaine révision | Révision précédente | ||
| software:applications:diff [2018/01/11 17:12] – créée yoann | software:applications:diff [2022/10/04 13:30] (Version actuelle) – yoann | ||
|---|---|---|---|
| Ligne 3: | Ligne 3: | ||
| ====== diff ====== | ====== diff ====== | ||
| - | La commande **diff** permet d' | + | La commande **diff** permet d' |
| ===== Les fichiers exemples ===== | ===== Les fichiers exemples ===== | ||
| Ligne 39: | Ligne 39: | ||
| </ | </ | ||
| - | ===== Principaux formatages | + | ===== Formats |
| + | |||
| + | Lorsque **diff** est invoqué sans autre argument que les fichiers à comparer, il retourne les modifications à apporter pour passer du premier fichier au second: | ||
| + | |||
| + | <code bash> | ||
| + | diff essai.txt essai2.txt | ||
| + | </ | ||
| + | < | ||
| + | 4c4 | ||
| + | < 6KYnm0FuWSCUsGCM1l7Fy7uLw8nHjE | ||
| + | --- | ||
| + | > .. La ligne 4 est modifiée | ||
| + | </ | ||
| + | Ici une seule modification doit être apportée. La modification est introduite par une ligne de contexte qui indique sa position et le type de modification à apporter ici **4c4** signifie que: | ||
| + | * La ligne 4 du fichier essai.txt doit être modifiée (**c**) en la ligne 4 du fichier essai2.txt; | ||
| + | * La ligne préfixée par ' | ||
| + | * La ligne préfixée par ' | ||
| + | |||
| + | |||
| + | 3 lettres peuvent être utilisées: | ||
| + | * **a**((**a**dd)) pour un ajout; | ||
| + | * **c**((**c**hange)) pour une modification; | ||
| + | * **d**((**d**elete)) pour une suppression. | ||
| + | |||
| + | ===== Affichage du contexte ===== | ||
| + | |||
| + | La commande précédente n' | ||
| + | |||
| + | <code bash> | ||
| + | diff -c essai.txt essai2.txt | ||
| + | </ | ||
| + | < | ||
| + | *** essai.txt | ||
| + | --- essai2.txt | ||
| + | *************** | ||
| + | *** 1,7 **** | ||
| + | DXzs9Oq60ULUMQILNo9XHH8WJWWx7E | ||
| + | QtR3BldTq6Uy4hIwVRoPJCNQIA1UOd | ||
| + | A8ECGIzM72FqPOwEq8gSgFFIoPhbBT | ||
| + | ! 6KYnm0FuWSCUsGCM1l7Fy7uLw8nHjE | ||
| + | fF2myE3iVSHpUZ5hImMFK4mPOVdag2 | ||
| + | ty0AD2q0GfPjAqK3QR6x7DOzRVIxTo | ||
| + | rSoP7edVT8mVxKFydRO74EYNmliEQ0 | ||
| + | --- 1,7 ---- | ||
| + | DXzs9Oq60ULUMQILNo9XHH8WJWWx7E | ||
| + | QtR3BldTq6Uy4hIwVRoPJCNQIA1UOd | ||
| + | A8ECGIzM72FqPOwEq8gSgFFIoPhbBT | ||
| + | ! .. La ligne 4 est modifiée | ||
| + | fF2myE3iVSHpUZ5hImMFK4mPOVdag2 | ||
| + | ty0AD2q0GfPjAqK3QR6x7DOzRVIxTo | ||
| + | rSoP7edVT8mVxKFydRO74EYNmliEQ0 | ||
| + | </ | ||
| + | |||
| + | Par défaut le contexte affiche 3 lignes précédant la modification et 3 lignes la succédant. | ||
| + | |||
| + | * **!** marque une ligne nécessitant une modification; | ||
| + | * **-** marque une ligne du premier fichier supprimée dans le second; | ||
| + | * **+** marque une ligne absente dans le premier fichier et ajoutée dans le second. | ||
| ==== Affichage côte à côte ==== | ==== Affichage côte à côte ==== | ||
| + | |||
| + | Pour les fichiers relativement petits l' | ||
| + | |||
| L' | L' | ||
| Ligne 48: | Ligne 108: | ||
| $ diff -y essai.txt essai2.txt | $ diff -y essai.txt essai2.txt | ||
| </ | </ | ||
| + | |||
| + | Ci dessous la sortie obtenue. On remarque que la ligne modifiée est préfixée par le caractère '' | ||
| + | |||
| + | < | ||
| + | DXzs9Oq60ULUMQILNo9XHH8WJWWx7E | ||
| + | QtR3BldTq6Uy4hIwVRoPJCNQIA1UOd | ||
| + | A8ECGIzM72FqPOwEq8gSgFFIoPhbBT | ||
| + | 6KYnm0FuWSCUsGCM1l7Fy7uLw8nHjE | ||
| + | fF2myE3iVSHpUZ5hImMFK4mPOVdag2 | ||
| + | ty0AD2q0GfPjAqK3QR6x7DOzRVIxTo | ||
| + | rSoP7edVT8mVxKFydRO74EYNmliEQ0 | ||
| + | 4Sr87kZpR2rlup4aSM9yXARXfT6hS4 | ||
| + | </ | ||
| Lorsque les fichiers à comparer deviennent gros ou comportent un grand nombre de caractères par ligne ce type de sortie n'est plus vraiment adaptée. | Lorsque les fichiers à comparer deviennent gros ou comportent un grand nombre de caractères par ligne ce type de sortie n'est plus vraiment adaptée. | ||
| Ligne 55: | Ligne 128: | ||
| En général, dans un contexte de développement, | En général, dans un contexte de développement, | ||
| - | Chaque chunk est introduit par une entete | + | Chaque chunk est introduit par une entête |
| + | L’entête indique pour chacun des fichiers le numéro de la ligne de départ du tronçon et le nombre de lignes du tronçon. | ||
| + | |||
| + | <code bash> | ||
| + | $ diff -u essai.txt essai2.txt | ||
| + | </ | ||
| + | |||
| + | La sortie produite par **diff** est la suivante: | ||
| + | |||
| + | < | ||
| + | --- essai.txt | ||
| + | +++ essai2.txt | ||
| + | @@ -1,7 +1,7 @@ | ||
| + | | ||
| + | | ||
| + | | ||
| + | -6KYnm0FuWSCUsGCM1l7Fy7uLw8nHjE | ||
| + | +.. La ligne 4 est modifiée | ||
| + | | ||
| + | | ||
| + | | ||
| + | </ | ||
| + | |||
| + | Dans l' | ||
| + | |||
| + | * Au fichier A, essai.txt le marqueur **-** (minus) est associé. | ||
| + | * Au fichier B, essai2.txt le marqueur **+** est associé. | ||
| + | |||
| + | Le fichier ne comportant qu'une seule modification un seul chunk est affiché, il est introduit par l’entête: | ||
| + | < | ||
| + | @@ -1,7 +1,7 @@ | ||
| + | </ | ||
| + | |||
| + | * Dans le fichier A la modification impacte les lignes 1 à 7 | ||
| + | * Dans le fichier B la modification impacte également les lignes 1 à 7. | ||
| + | Le chunk affiche les lignes du contexte et les deux versions de la ligne 4 préfixée avec **-** pour celle du fichier A et préfixée avec **+** pour celle du fichier B. | ||
| + | |||
| ===== Références ===== | ===== Références ===== | ||