Outils pour utilisateurs

Outils du site


software:applications:diff

Ceci est une ancienne révision du document !


diff

La commande diff permet d'identifier les différences entre deux fichiers. L'usage courant étant de rechercher les divergences entres deux versions d'un même fichier afin de produire un patch par exemple. Cette procédure est détaillée dans

Les fichiers exemples

Pour illustrer les exemples ci-après, un fichier texte est créé avec du contenu aléatoire via la commande suivante:

$ for i in $( seq 1 8 ); do  cat /dev/urandom | tr -C -d [:alnum:] | head -c 30 >> essai.txt; echo "" >> essai.txt; done

On obtient un fichier de la forme suivante:

essai.txt
DXzs9Oq60ULUMQILNo9XHH8WJWWx7E
QtR3BldTq6Uy4hIwVRoPJCNQIA1UOd
A8ECGIzM72FqPOwEq8gSgFFIoPhbBT
6KYnm0FuWSCUsGCM1l7Fy7uLw8nHjE
fF2myE3iVSHpUZ5hImMFK4mPOVdag2
ty0AD2q0GfPjAqK3QR6x7DOzRVIxTo
rSoP7edVT8mVxKFydRO74EYNmliEQ0
4Sr87kZpR2rlup4aSM9yXARXfT6hS4

On crée une copie de ce fichier nommée essai2.txt puis on remplace la ligne 4. Le résultat est présenté ci dessous.

essai2.txt
DXzs9Oq60ULUMQILNo9XHH8WJWWx7E
QtR3BldTq6Uy4hIwVRoPJCNQIA1UOd
A8ECGIzM72FqPOwEq8gSgFFIoPhbBT
.. La ligne 4 est modifiée  ..
fF2myE3iVSHpUZ5hImMFK4mPOVdag2
ty0AD2q0GfPjAqK3QR6x7DOzRVIxTo
rSoP7edVT8mVxKFydRO74EYNmliEQ0
4Sr87kZpR2rlup4aSM9yXARXfT6hS4

Principaux formatages de la sortie

Affichage côte à côte

L'option -y permet un affichage côte à côte des fichiers. Pour des fichiers courts avec peu de colonnes comme dans notre exemple la sortie est clairement lisible:

$ diff -y essai.txt essai2.txt

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.

Sortie unifiée

En général, dans un contexte de développement, ce sont de gros fichiers qui sont légèrement modifiés. Pour mieux représenter ces légères modifications la totalité du fichier n'est pas affichée par diff. Seule la zone ayant subi une altération est affichée avec quelques lignes de contexte (lignes restées inchangées avant et après). Cette zone est appelée chunk ou hunk (qui signifie tronçon ou gros morceau).

Chaque chunk est introduit par une entete encadrée par les caractères “@

Références

software/applications/diff.1515690774.txt.gz · Dernière modification : 2021/02/01 21:51 (modification externe)