DIFF
Section : Manuel de l'utilisateur Linux (
1)
Mise à jour de la version anglaise : 22 septembre 1993
Index
Menu principal
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 est identique à la
cible.
La situation réciproque est également possible.
Le fichier indiqué (pas le répertoire) ne peut pas être
-.
En effet, l'entrée standard n'a pas de nom et la correspondance
« 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 la version GNU de
diff
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 prennent un argument) peuvent
être combinées en un seul mot de la ligne de commande ; ainsi :
-ac
est équivalent à
-a -c.
Les options avec un nom long peuvent être abrégées s'il n'y a pas d'ambiguïté.
Les crochets
([
et
])
indiquent qu'une option prend éventuellement un argument.
- -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 contenir des données binaires.
- -b
-
Ne pas tenir compte des différences concernant des espaces blanches.
- -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 correctement,
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'existence, 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 constante
symbolique Nouvelle_version.
- -e
-
- --ed
-
Sortir un script valide pour
ed.
- --exclude=motif
-
Lors de la comparaison de répertoires, ignorer les fichiers et les sous-répertoires dont
le nom correspond au
motif.
- --exclude-from=fichier
-
Lors de la comparaison de répertoires, ignorer les fichiers et les sous-répertoires dont
le nom correspond à 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 modifications du fichier.
- -F regexp
-
Dans les formats contextuel et unifiés, pour chaque bloc de différences, afficher
quelques lignes précédentes qui correspondent à l'expression rationnelle
regexp.
- --forward-ed
-
S'arranger pour que la sortie ressemble vaguement à un script
ed
mais en préservant l'ordre des modifications 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 changements 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 commun.
- -i
-
Ignorer les différences entre majuscules et minuscules.
- -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 préprocesseur ifdef-then-else concernant l'existence, 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 l'insertion
ou la suppression de lignes blanches.
- --ignore-case
-
Ignorer les différences entre majuscules et minuscules.
- --ignore-matching-lines=regexp
-
Ignorer les changements consistant seulement en l'insertion
ou la suppression de lignes correspondant à l'expression rationnelle
regexp.
- --ignore-space-change
-
Ignorer les changements concernant le nombre d'espaces blanches.
- --initial-tab
-
Sortir une tabulation plutôt qu'une 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êtes des formats contextuels ou unifiés.
- --left-column
-
N'afficher que la colone de gauche des lignes communes dans le format
côte-à-côte.
- --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 beaucoup 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
-
- --new-file
-
Dans les comparaisons de répertoires, si un fichier ne se trouve que dans un seul
répertoire, considé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 format 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, considé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.
- -S fichier
-
Lorsque l'on compare des répertoires, commencer par le
fichier
indiqué.
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 rationnelle
regexp.
- --side-by-side
-
Utiliser le format de sortie côte-à-côte.
- --speed-large-files
-
Utiliser une heuristique accélérant le traitement des gros fichiers ayant de nombreux
petits changements dispersés.
- --starting-file=fichier
-
Lorsque l'on compare des répertoires, commencer par le
fichier
indiqué.
Ceci permet une reprise après une comparaison interrompue.
- --suppress-common-lines
-
Ne pas afficher les lignes communes dans le format côte-à-côte.
- -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 contenir des données binaires.
- -u
-
Utiliser le format de sortie unifié.
- --unchanged-group-format=format
-
Utiliser le
format
pour sortir un groupe de lignes 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, considé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 typiquement deux lignes de contexte
- -v
-
- --version
-
Afficher le numéro de version de
diff.
- -w
-
Ignorer les espaces blanches lors de la comparaison de lignes.
- -W nb
-
- --width=nb
-
Utiliser une sortie ayant
nb
colonnes de texte dans le format côte-à-côte.
- -x motif
-
Lors de la comparaison de répertoires, ignorer les fichiers et les sous-répertoires dont
le nom correspond au
motif.
- -X fichier
-
Lors de la comparaison de répertoires, ignorer les fichiers et les sous-répertoires dont
le nom correspond à l'un quelconque des motifs indiqués dans le
fichier.
- -y
-
Utiliser l'affichage côte-à-côte (side-by-side).
CODE DE RETOUR
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.
VOIR AUSSI
cmp(1),
comm(1),
diff3(1),
ed(1),
patch(1),
pr(1),
sdiff(1)
TRADUCTION
Ce document est une traduction réalisée par Christophe Blaess
<http://www.blaess.fr/christophe/> le 15 décembre 1998
et révisée le 26 mai 2008.
L'équipe de traduction a fait le maximum pour réaliser une adaptation
française de qualité. La version anglaise la plus à jour de ce document est
toujours consultable via la commande : « LANG=C man 1 diff ».
N'hésitez pas à signaler à l'auteur ou au traducteur, selon le cas, toute
erreur dans cette page de manuel.
Index
- NOM
-
- SYNOPSIS
-
- DESCRIPTION
-
- OPTIONS
-
- CODE DE RETOUR
-
- VOIR AUSSI
-
- TRADUCTION
-
Dernière mise à jour : 26 mai 2008