Utiliser Diff et Patch sous Linux : Guide Essentiel

April 30, 2015

Vous avez déjà eu besoin de chercher les différences entre deux fichiers ?
Modifier un fichier et souhaité transmettre uniquement vos modifications ?
Ou bien appliquer des modifications sur un fichier ?

Si vous avez répondu oui à l’une de ces questions, cet article est fait pour vous.

La commande diff sous Linux

Introduction à la commande diff

Pour résumer la commande diff permet de voir les différences entre plusieurs fichiers. Cette comparaison se fait ligne par ligne de manière séquentielle et comprends donc tout le fichier.

Les cibles peuvent être

En fonction du type de cible le comportement varie un petit peu, surtout lors qu’il ne s’agit pas de deux fichier.

Lorsque  l’une des cibles est un dossier et l’autre un fichier la comparaison est faites sur les fichiers de même nom.

Pour le cas de deux dossiers les fichiers de même nom sont comparé un a un de manière séquentielle.  Par défaut il n’y a pas de récursivité, on ne compare que le premier niveau.

La syntaxe est :

diff [options] cible1 cible 2

Options utiles pour la commande Diff

Comme vous avez pu le voir dans la commande ci-dessous diff peut avoir des options.

Voici les plus pratiques et utilisé :

La commande patch pour appliquer des modifications

Les patch permettent d’appliquer rapidement les modifications effectué entre deux fichiers.

Son utilisation est assez simple entre deux fichiers

patch fichierSource < fichier.patch

Dans le cas des répertoires il y a une option p pour préciser le niveau de profondeur, en effet la hiérarchie des fichiers a pu changer entre le pc ou le patch a été effectué et le pc où l’on applique le patch.

On ajoute le nombre de dossier a sauter dans l’arborescence  pour appliquer le patch.  Souvent l’option -p1 fonctionne – plus de 90% des cas.

Par exemple on pourrai avoir

patch -p3 < fichier.patch

Annuler un patch

Vous avez appliqué le mauvais patch a votre fichier, pas de panique une option est prévu pour revenir au fichier original avec le fichier modifié et notre fichier de patch grâce a l’option -R

Attention pour les patchs avec les répertoire il faut ici encore spécifier la profondeur avec l’option -p comme lors de l’application du patch.

Par exemple

patch -p3 -R < fichier.patch

Créer un patch avec diff

Pour créer un patch avec diff entre deux fichiers on utilise l’option -u et on redirige la sortie vers notre fichier de patch a l’aide du symbole >.

Par exemple

diff -u fichierInitial.c fichierModifie.c > fichier.patch

Pour une arborescence complète l’option change un peu : on utilise -rupN

diff -rupN dossierInitial/ dossierModifie/ > dossier.patch

Conclusion sur l’utilisation de Diff et Patch sous Linux

Pour résumer avec ces commandes vous pouvez

Bien entendu des qu’il y a des dossiers d’autre options sont a rajouté pour gérer la récursion, les fichiers manquant, les différences de hiérarchies etc.

NB : la commande diff est disponible aussi sur git.

En espérant que ces deux petites commandes vous fasse gagner un peu de temps.

comments powered by Disqus