Utiliser Diff et Patch sous Linux : Guide Essentiel
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
- des fichiers
- des dossiers
- et même l’entrée standard (via le symbole -).
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é :
- -b ignore les différences du à des espaces blancs
- -B ignore les différences du à des lignes blanches
- -i ignore la casse (c’est a dire les différences entre les minuscules et les majuscule)
- -q indiquer seulement si les fichiers sont différents et ne pas afficher les différences elles-mêmes
- -s indiquer lorsque deux fichiers sont identiques
- -r comparaison récursive des fichiers d’un répertoire, sous répertoires…
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
- Voir les différences entre fichiers : commande diff
- Créer un patch : commande diff avec l’option -u
- Appliquer un patch : commande patch
- Revenir a l’état d’avant le patch : commande patch avec l’option -R
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