Aperçu
diff compare les modifications entre deux fichiers ou répertoires et montre quelles lignes ont été ajoutées/supprimées/modifiées. Le format de sortie peut être choisi (unifié, contexte, côte à côte, etc.), et la sensibilité de la comparaison peut être ajustée pour ignorer les espaces ou la casse.
Caractéristiques principales
- Comparaison ligne par ligne et format lisible par l'homme
- Comparaison récursive entre répertoires possible (-r)
- Diverses règles d'ignorance (espaces/casse/lignes vides, etc.)
- Prise en charge du format unifié (-u) adapté à la génération de correctifs (.patch)
- Options d'optimisation des performances pour la comparaison de fichiers volumineux
Exemples de scénarios d'utilisation
- Revue de code : Extraction des fichiers modifiés sous forme de correctif
- Suivi des modifications de fichiers de configuration : Comparaison des configurations avant et après le déploiement
- Comparaison de sauvegardes/instantanés : Vérification des différences entre des points temporels spécifiques
- Détection de modifications involontaires lors de la phase de pré-traitement de documents/données
- Audit de sécurité : Vérification des modifications suspectes dans les binaires/scripts déployés de l'extérieur
Formats de sortie de diff
Le format de sortie de diff indique les instructions pour transformer le premier fichier en le second.
- `a` (add): Une ligne qui n'existait pas dans le premier fichier a été **ajoutée** au second. (ex: `1a2`)
- `c` (change): La ligne correspondante a été **modifiée** dans les deux fichiers. (ex: `1c2`)
- `d` (delete): Une ligne qui existait dans le premier fichier a été **supprimée** du second. (ex: `1d2`)
Options principales
Options fréquemment utilisées, regroupées par objectif.
1) Comportement de base et formats de sortie
2) Spécification de la portée/cible de comparaison
3) Contrôle de la sortie / Règles d'ignorance
4) Aide/Version
Commande générée :
Essayez de combiner les commandes.
Description:
`diff` Exécute la commande.
Essayez d'exécuter virtuellement les commandes avec l'IA en combinant les options ci-dessus.
Exemples d'utilisation
Scénarios de comparaison fréquemment utilisés, présentés sous forme d'exemples.
Créer un correctif au format unifié
diff -u old.conf new.conf > change.patch
Comparer des répertoires de manière récursive
diff -ruN ./v1 ./v2
Comparer en ignorant les différences d'espaces
diff -uw src_old.c src_new.c
Affichage côte à côte + masquage des lignes communes
diff -y --suppress-common-lines a.txt b.txt
Codes de sortie
Référez-vous à cela pour la gestion des branches dans les scripts.
Code | Signification |
---|---|
0 | Les deux entités sont identiques |
1 | Il y a des différences |
2 | Erreur (erreur d'utilisation/accès au fichier impossible, etc.) |
Installation
Généralement inclus par défaut dans la plupart des distributions, sinon installez le paquet diffutils.
Debian/Ubuntu
sudo apt update && sudo apt install -y diffutils
RHEL/CentOS/Fedora
sudo dnf install -y diffutils
Arch Linux
sudo pacman -S --needed diffutils
openSUSE
sudo zypper install -y diffutils
Astuces & Précautions
Points souvent négligés sur le terrain.
- Le format de correctif utilise généralement -u comme standard. Git utilise également un format unifié similaire en interne.
- L'abus des options de gestion des espaces (-w, -b, -B) peut masquer des changements réellement significatifs.
- La normalisation des différences de fin de ligne entre Windows et Linux avec --strip-trailing-cr facilite la comparaison.
- Lors de la comparaison de répertoires, utilisez -r avec -x/-X (règles d'exclusion) pour filtrer les fichiers inutiles.
- Pour vérifier très rapidement l'existence de différences, utilisez l'option -q. Elle n'affiche pas les détails.