accueil > Traitement et recherche de texte > diff

diff: Guide de comparaison de différences entre fichiers/répertoires

Compare les différences entre deux entités ligne par ligne et les affiche dans un format lisible (unifié/contexte/côte à côte). Largement utilisé pour la création de correctifs, la révision de code et la comparaison de changements de configuration.

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.

Codes d'état de sortie de diff
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.

commandes associées

Des commandes fonctionnellement similaires ou souvent utilisées ensemble.


Commandes de la même catégorie