La commande Linux diff permet de comparer deux fichiers ligne par ligne et d‘afficher la différence entre eux. Cet utilitaire de ligne de commande répertorie les modifications à apporter pour rendre les fichiers identiques.
Lisez la suite pour en savoir plus sur la commande diff et ses options à l’aide d’exemples faciles à suivre.
Quelle est la syntaxe de la commande diff
Voici la syntaxe de la commande diff :
diff [option] file1 file2
Lorsque l’on travaille avec diff, il est essentiel de savoir comment interpréter la sortie, qui se compose de :
Option | Description |
---|---|
-c or --context |
Différences de sortie en mode contextuel |
-u or --unified |
Différences de sortie en mode unifié (plus concis) |
-i or --ignore-case |
Effectuer une comparaison insensible à la casse |
–ignore-all-space | Ignorer les espaces blancs lors de la comparaison des lignes |
–brief | La sortie se limite à indiquer si les fichiers sont différents, sans plus de détails. |
–recursive | Comparaison récursive de répertoires |
-y or --side-by-side |
Afficher les résultats dans un format côte à côte |
Comparer les fichiers avec la commande diff
Pour comprendre comment utiliser la commande diff, j’ai créé deux fichiers avec une liste de fruits.
Pour comparer les deux fichiers :
diff fichier1.txt fichier2.txt
La sortie :
1c1 < Pomme --- > Pastèque 4d3 < Pastèque 5a5 > Pomme
1,3d0, 4a2,3 et 5a5 sont des ordres de modification. Chaque commande de modification contient les éléments suivants, de gauche à droite :
- Le numéro de ligne ou la plage de lignes du premier fichier
- Un caractère de changement spécial
- Le numéro de ligne ou la plage de lignes du deuxième fichier
Le caractère de modification peut être l’un des suivants :
- a – Ajouter les lignes
- c – Modifier les lignes
- d – Supprimer les lignes
- Les lignes précédées d’un < sont des lignes du premier fichier
- Les lignes précédées de > sont des lignes du deuxième fichier
La commande de modification est suivie des lignes complètes qui sont supprimées (<) et ajoutées au fichier (>).
Expliquons la sortie :
- 1c1 – Remplacer (modifier) la ligne 1 du premier fichier par la ligne 1 du deuxième fichier.
- < Pomme – La ligne du premier fichier à remplacer
- > Pastèque – Par quoi vous devez remplacer
- 4d3 – La quatrième ligne (4) du premier fichier doit être supprimée (d). Si ce n’est pas le cas, elle apparaîtrait à la ligne 3 du deuxième fichier
- < Pastèque – Les contenu à supprimer (désigné par d3)
- 5a5 – A la ligne 5 du premier fichier, vous devez ajouter (a) les lignes 5 du second fichier.
- > Orange – Le contenu à ajouter
Comment utiliser la commande Linux diff avec des exemples
Format contextuel avec l’option -c
Lorsque le format de sortie contextuel est utilisé, la commande diff affiche plusieurs lignes de contexte autour des lignes qui diffèrent entre les fichiers.
L’option -c indique à diff de produire une sortie au format contextuel :
diff -c fichier1.txt fichier2.txt
La sortie :
*** fichier1.txt 2024-02-09 10:06:21.028281860 +0100 --- fichier2.txt 2024-02-10 09:47:00.080707442 +0100 *************** *** 1,5 **** ! Pomme Orange Banane - Pastèque Poire --- 1,5 ---- ! Pastèque Orange Banane Poire + Pomme
La sortie commence par les noms et les horodatages des fichiers comparés, et une ou plusieurs sections décrivant les différences. Chaque section se présente comme suit :
***************
*** numéros-lignes-à-partir--fichier ****
lignes-a-partir-fichier...
--- numéros-ligne-fichier-destination ----
lignes-fichier-destination...
- numéros-lignes-à-partir–fichier et numéros-ligne-fichier-destination – Les numéros de ligne ou la plage de lignes séparées par des virgules dans le premier et le second fichier, respectivement
- A-partir-ligne-fichier et Aux-lignes-fichier-destination – Les lignes qui diffèrent et les lignes de contexte :
- Les lignes commençant par deux espaces sont des lignes de contexte, c’est-à-dire les lignes qui sont les mêmes dans les deux fichiers
- Les lignes commençant par le symbole moins (-) sont les lignes qui ne correspondent à rien dans le second fichier. Lignes manquantes dans le second fichier
- Les lignes commençant par le symbole plus (+) sont les lignes qui ne correspondent à rien dans le premier fichier. Lignes manquantes dans le premier fichier
- Les lignes commençant par le point d’exclamation (!) sont les lignes qui sont modifiées entre deux fichiers. Chaque groupe de lignes commençant par ! dans le premier fichier a une correspondance dans le second fichier
Expliquons les parties les plus importantes du résultat :
- Dans cet exemple, nous n’avons qu’une seule section décrivant les différences
- *** 1,5 **** et — 1,5 —- indique l’étendue des lignes du premier et du second fichier qui sont incluses dans cette section
- Les lignes Orange, Banane, Poire sont les mêmes dans les deux fichiers. Ces lignes commencent par un double espace
- La ligne – Pastèque du premier fichier ne correspond à rien dans le second fichier. Bien que cette ligne existe également dans le second fichier, les positions sont différentes
- La + Pomme du second fichier ne correspond à rien dans le premier fichier
- Ligne ! Pomme du premier fichier est modifiée entre les fichiers
Format unifié avec l’option -u
Le format de sortie unifié est une version améliorée du format contextuel et produit une sortie plus petite.
Utilisez l’option -u pour demander à diff d’imprimer la sortie dans le format unifié :
diff -u fichier1.txt fichier2.txt
La sortie :
--- fichier1.txt 2024-02-09 10:06:21.028281860 +0100 +++ fichier2.txt 2024-02-10 09:47:00.080707442 +0100 @@ -1,5 +1,5 @@ -Pomme +Pastèque Orange Banane -Pastèque Poire +Pomme
La sortie commence par les noms et les horodatages des fichiers et une ou plusieurs sections qui décrivent les différences. Chaque section se présente sous la forme suivante :
- @@ from-file-line-numbers to-file-line-numbers @@ – Le numéro de ligne ou l’intervalle des lignes du premier et du deuxième fichier inclus dans cette section.
- line-files – Les lignes qui diffèrent et les lignes de contexte :
- Les lignes commençant par deux espaces sont des lignes de contexte, c’est-à-dire les lignes qui sont les mêmes dans les deux fichiers.
- Les lignes commençant par le symbole moins (-) sont les lignes qui sont supprimées du premier fichier.
- Les lignes commençant par le symbole plus (+) sont les lignes qui sont ajoutées au premier fichier.
Ignorer la casse avec l’option -i
Comme toutes commandes Linux, l’utilitaire diff est sensible à la casse.
Utilisez l’option -i pour ignorer la casse :
diff -ui fichier1.txt fichier2.txt
Liens
- 12 exemples pour utiliser la commande cat sur Linux
- 6 exemples pour utiliser la commande tail sur Linux
- Comment utiliser la commande less sur Linux avec des exemples
- La commande cut de Linux : utilisation et exemples
- Comment utiliser la commande AWK avec des exemples
- Commande sed : utilisation et exemples
- 12 exemples de commandes grep sur Linux
- La commande TR : utilisations et exemples
- La commande echo : utilisations et exemples
- La commande sort Linux : utilisations et exemples
- La commande join Linux : utilisations et exemples
L’article Commande diff sur Linux : utilisation avec des exemples est apparu en premier sur malekal.com.
0 Commentaires