DIFF(1) Manuel de l'utilisateur Linux DIFF(1)
NOM
diff - Trouver les différences entre des fichiers.
SYNOPSIS
diff [options] source cible
DESCRIPTION
Dans le cas le plus simple, diff compare le contenu du
fichier source et celui du fichier cible. Un nom de
fichier remplacé par un tiret - correspond à la lecture
depuis l'entrée standard. Un cas particulier est
représenté par "diff --" qui compare une copie de
l'entrée standard avec elle-même.
Si la source est un répertoire, et pas la cible, alors
diff compare le fichier cible avec le fichier placé dans
le répertoire source et dont le nom soit identique à la
cible. La situation réciproque est également possible.
Le fichier indiqué (pas le répertoire) ne doit pas être -.
En effet l'entrée standard n'a pas de nom et la correspon
dance ``nom à nom'' ne pourrait pas s'appliquer.
Si les deux fichiers source et cible sont des répertoires,
diff compare les fichiers correspondant dans les deux
répertoires, dans l'ordre alphabétique. Cette comparaison
n'est pas récursive, à moins d'employer l'option -r ou
--recursive. diff ne compare jamais le contenu ``réel''
d'un répertoire en le considérant comme un fichier.
Les options de diff commencent par un tiret -, ainsi les
fichiers source et cible ne devraient pas commencer par un
tiret -. Toutefois, le double tiret -- est un argument
spécial signifiant ``fin des options'', ainsi des noms de
fichiers commençant par un tiret peuvent être mentionnés à
sa suite.
Options
Voici une liste de l'ensemble des options que le diff GNU
accepte. La plupart des options ont deux noms équivalents,
l'un constitué d'une seule lettre précédée par -, et
l'autre composé d'un nom long plus explicite, précédé par
--.
Plusieurs options avec lettre unique (sauf si elle pren
nent un argument) peuvent être combinées en un seul mot de
la ligne de commande ; ainsi : -ac est equivalent à -a -c.
Les options avec un nom long peuvent être abbréviées s'il
n'y a pas d'ambiguïté.
Les crochets ([ et ]) indiquent qu'une option prend
éventuellement un argument.
FSF 15 Décembre 1998 1
DIFF(1) Manuel de l'utilisateur Linux DIFF(1)
-nb (nb est un nombre entier) Afficher nb lignes de
contexte. Cette option ne précise pas le format de
sortie par elle-même, elle n'a pas d'effet si elle
n'est pas combinée avec -c ou -u. Cette option est
obsolète. Pour fonctionner correctement, patch
nécessite typiquement deux lignes de contexte.
-a Traiter tous les fichiers comme du texte, et les
comparer ligne-à-ligne, même s'ils semblent con
tenir des données binaires.
-b Ne pas tenir compte des différences concernant des
espaces blancs.
-B Ne pas tenir compte des différences qui concernent
des lignes blanches.
--brief
Indiquer seulement si les fichiers différent, pas
les différences elles-mêmes.
-c Utiliser le format de sortie contextuel.
-C nb
--context[=nb]
(nb est un nombre entier) Utiliser le format de
sortie contextuel en affichant nb lignes de texte.
Par défaut nb vaut 3. Pour fonctionner correcte
ment, patch nécessite typiquement au moins deux
lignes de contexte.
--changed-group-format=format
Utiliser le format pour afficher un groupe de
lignes contenant des différences entre les deux
fichiers. L'affichage est du type si-alors-sinon
(voir option -D)
-d Modifier l'algorithme pour trouver éventuellement
des ensembles de changements plus petits. Ceci
rend diff plus lent (parfois beaucoup plus lent).
-D nom Sortir les deux textes originaux regroupés. La
différenciation se fait par des directives de
préprocesseur ifdef-then-else concernant l'exis
tence, ou non, de la macro ayant le nom indiqué.
Par exemple on utilisera `diff -D Nouvelle_version
ancien_fichier.c nouveau_fichier.c' pour obtenir un
fichier pouvant être compilé au choix avec la con
stante symbolique Nouvelle_version.
-e
--ed Sortir un script valide pour ed.
FSF 15 Décembre 1998 2
DIFF(1) Manuel de l'utilisateur Linux DIFF(1)
--exclude=motif
Lors de la comparaison de répertoires, ignorer les
fichiers et les sous-répertoires dont le nom corre
spond au motif.
--exclude-from=fichier
Lors de la comparaison de répertoires, ignorer les
fichiers et les sous-répertoires dont le nom corre
spond à n'importe quel motif indiqué dans le
fichier.
--expand-tabs
Développer les tabulations en espaces en sortie,
afin de préserver l'alignement des tabulations des
fichiers d'entrée.
-f S'arranger pour que la sortie ressemble vaguement à
un script ed, mais en préservant l'ordre des modi
fications du fichier.
-F regexp
Dans les formats contextuel et unifiés, pour chaque
bloc de différences, afficher quelques lignes
précédentes correspondant à l'expression régulière
regexp.
--forward-ed
S'arranger pour que la sortie ressemble vaguement à
un script ed mais en préservant l'ordre des modifi
cations du fichier.
-h Cette option n'a aucun effet, il s'agit simplement
de préserver la compatibilité Unix.
-H Utiliser une heuristique accélérant le traitement
des gros fichiers ayant de nombreux petits change
ments dispersés.
--horizon-lines=nb
Ne pas éliminer les nb dernières lignes du préfixe
commun, ni les nb premières lignes du suffixe com
mun.
-i Ignore les différences entre majuscules et minus
cules.
-I regexp
Ignorer les changements consistant seulement en
insertion ou suppression de lignes correspondant à
l'expression régulière regexp.
--ifdef=nom
Sortir les deux textes originaux regroupés. La
différenciation se fait par des directives de
FSF 15 Décembre 1998 3
DIFF(1) Manuel de l'utilisateur Linux DIFF(1)
préprocesseur ifdef-then-else concernant l'exis
tence, ou non, de la macro ayant le nom indiqué.
--ignore-all-space
Ignorer les espaces lors des comparaisons de lignes
--ignore-blank-lines
Ignorer les changements consistant uniquement en
insertion ou suppression de lignes blanches.
--ignore-case
Ignorer les différences entre majuscules et minus
cules.
--ignore-matching-lines=regexp
Ignorer les changements consistant seulement en
insertion ou suppression de lignes correspondant à
l'expression régulière regexp.
--ignore-space-change
Ignorer les changements concernant le nombre
d'espaces blancs.
--initial-tab
Sortir une tabulation plutôt qu'un espace avant le
texte dans le format normal ou contextuel. Ceci
améliore la présentation des alignements.
-l Envoyer la sortie à pr pour la paginer.
-L étiquette
--label=étiquette
Utiliser l'étiquette à la place du nom de fichier
dans les en-tête des formats contextuels ou
unifiés.
--left-column
N'afficher que la colone de gauche des lignes com
munes dans le format side-by-side.
--line-format=format
Utiliser le format pour afficher toutes les lignes
d'entrée dans le format if-then-else.
--minimal
Modifier l'algorithme pour trouver éventuellement
des ensembles de changements plus petits. Ceci
rend diff plus lent (parfois beaucous plus lent).
-n Sortir les différences au format RCS. Comme -f sauf
que chaque commande précise le nombre de lignes
affectées.
-N
FSF 15 Décembre 1998 4
DIFF(1) Manuel de l'utilisateur Linux DIFF(1)
--new-file
Dans les comparaisons de répertoires, si un fichier
ne se trouve que dans un seul répertoire, con
sidérer qu'il est présent, mais vide dans l'autre
répertoire.
--new-group-format=format
Utiliser le format pour sortir un groupe de lignes
ne se trouvant que dans le second fichier, dans le
format if-then-else.
--new-line-format=format
Utiliser le format pour sortir une ligne ne se
trouvant que dans le second fichier, dans le format
if-then-else.
--old-group-format=format
Utiliser le format pour sortir un groupe de lignes
ne se trouvant que dans le premier fichier, dans le
format if-then-else.
--old-line-format=format
Utiliser le format pour sortir une ligne ne se
trouvant que dans le premier fichier, dans le for
mat if-then-else.
-p Indiquer dans quelle fonction C se trouve chaque
changement.
-P Dans les comparaisons de répertoires, si un fichier
ne se trouve que dans le second répertoire, con
sidérer qu'il est présent, mais vide dans l'autre
répertoire.
--paginate
Envoyer la sortie à pr pour la paginer.
-q Indiquer seulement si les fichiers différent, pas
les différences elles-mêmes.
-r Lorsque l'on compare des répertoires, comparer
également tous les sous-répertoires récursivement.
--rcs Sortir les différences au format RCS. Comme -f sauf
que chaque commande précise le nombre de lignes
affectées.
--recursive
Lorsque l'on compare des répertoires, comparer
également tous les sous-répertoires récursivement.
--report-identical-files
-s Indiquer lorsque deux fichiers sont identiques.
FSF 15 Décembre 1998 5
DIFF(1) Manuel de l'utilisateur Linux DIFF(1)
-S fichier
Lorsque l'on compare des répertoires, commencer par
le fichierindiqué. Ceci permet une reprise après
une comparaison interrompue.
--sdiff-merge-assist
Afficher des informations supplémentaires pour
aider sdiff. Celui-ci utilise cette option
lorsqu'il invoque diff. L'utilisateur n'a aucune
raison d'appeler cette option.
--show-c-function
Indiquer dans quelle fonction C se trouve chaque
changement.
--show-function-line=regexp
Dans les formats contextuel et unifiés, pour chaque
bloc de différences, afficher quelques lignes
précédentes correspondant à l'expression régulière
regexp.
--side-by-side
Utiliser le format de sortie côte-à-côté.
--speed-large-files
Utiliser une heuristique accélérant le traitement
des gros fichiers ayant de nombreux petits change
ments dispersés.
--starting-file=fichier
Lorsque l'on compare des répertoires, commencer par
le fichierindiqué. Ceci permet une reprise après
une comparaison interrompue.
--suppress-common-lines
Ne pas afficher les lignes communes dans le format
side-by-side.
-t Développer les tabulations en espaces en sortie,
afin de préserver l'alignement des tabulations des
fichiers d'entrée.
-T Sortir une tabulation plutôt qu'un espace avant le
texte dans le format normal ou contextuel. Ceci
améliore la présentation des alignements.
--text Traiter tous les fichiers comme du texte, et les
comparer ligne-à-ligne, même s'ils semblent con
tenir des données binaires.
-u Utiliser le format de sortie unifié.
--unchanged-group-format=format
Utiliser le format pour sortir un groupe de lignes
FSF 15 Décembre 1998 6
DIFF(1) Manuel de l'utilisateur Linux DIFF(1)
communes aux deux fichiers, dans le format if-then-
else.
--unchanged-line-format=format
Utiliser le format pour sortir une ligne commune
aux deux fichiers, dans le format if-then-else.
--unidirectional-new-file
Dans les comparaisons de répertoires, si un fichier
ne se trouve que dans le second répertoire, con
sidérer qu'il est présent, mais vide dans l'autre
répertoire.
-U nb
--unified[=nb]
Utiliser le format unifié, en montrant nb lignes de
contexte, ou 3 lignes si nb n'est pas précisé. Pour
fonctionner correctement, patch nécessite typique
ment deux lignes de contexte
-v
--version
Afficher le numéro de version de diff.
-w Ignorer les espaces blancs lors de la comparaison
de lignes.
-W nb
--width=nb
Utiliser une sortie ayant nb colonnes de texte dans
le format side-by-side.
-x motif
Lors de la comparaison de répertoires, ignorer les
fichiers et les sous-répertoires dont le nom corre
spond au motif.
-X file
Lors de la comparaison de répertoires, ignorer les
fichiers et les sous-répertoires dont le nom corre
spond à n'importe quel motif indiqué dans le
fichier.
-y Utiliser l'affichage côte-à-côte (side-by-side).
VOIR AUSSI
cmp(1), comm(1), diff3(1), ed(1), patch(1), pr(1),
sdiff(1).
DIAGNOSTIQUE
Un code de retour valant 0 signifie qu'aucune différence
n'a été trouvée, 1 signifie que des différences sont
apparues, 2 indique une erreur.
FSF 15 Décembre 1998 7
DIFF(1) Manuel de l'utilisateur Linux DIFF(1)
TRADUCTION
Christophe Blaess, 1999.
FSF 15 Décembre 1998 8