Il s'agit de la commande diffposix qui peut être exécutée dans le fournisseur d'hébergement gratuit OnWorks en utilisant l'un de nos multiples postes de travail en ligne gratuits tels que Ubuntu Online, Fedora Online, l'émulateur en ligne Windows ou l'émulateur en ligne MAC OS
PROGRAMME:
Nom
diff — comparer deux fichiers
SYNOPSIS
diff [−c|−e|−f|−u|−C n|−U n] [−br] file1 file2
DESCRIPTION
Le manuel de formation diff l'utilitaire doit comparer le contenu de file1 et file2 et écrire à la norme
afficher une liste des modifications nécessaires pour convertir file1 développement file2. Cette liste doit être
minimal. Aucune sortie ne sera produite si les fichiers sont identiques.
OPTIONS
Le manuel de formation diff l'utilitaire doit être conforme au volume Base Definitions de POSIX.1‐2008, Blog
12.2, Services Publics Syntaxe Conseils et recommandations.
Les options suivantes doivent être prises en charge :
-b Faire en sorte que toute quantité d'espace blanc à la fin d'une ligne soit traitée comme un seul
(c'est-à-dire les espaces blancs précédant le sommes
ignoré) et d'autres chaînes de caractères d'espacement, à l'exclusion
caractères, pour comparer égaux.
-c Produisez une sortie sous une forme qui fournit trois lignes de contexte copié.
-C n Produire une sortie sous une forme qui fournit n lignes de contexte copié (où n doit
être interprété comme un entier décimal positif).
-e Produire une sortie sous une forme appropriée comme entrée pour le ed utilitaire, qui peut alors être
utilisé pour convertir file1 développement file2.
−f Produire une sortie sous une forme alternative, de format similaire à -e, mais pas prévu
convenir comme entrée pour le ed utilitaire, et dans l'ordre inverse.
-r Appliquer diff récursivement aux fichiers et répertoires du même nom lorsque file1 et
file2 sont les deux répertoires.
Le manuel de formation diff le service public doit détecter les boucles infinies ; c'est-à-dire entrer un
répertoire visité qui est un ancêtre du dernier fichier rencontré. Quand cela
détecte une boucle infinie, diff doit écrire un message de diagnostic au standard
erreur et doit soit récupérer sa position dans la hiérarchie, soit se terminer.
-u Produisez une sortie sous une forme qui fournit trois lignes de contexte unifié.
−U n Produire une sortie sous une forme qui fournit n lignes de contexte unifié (où n doit
être interprété comme un entier décimal non négatif).
OPÉRANDES
Les opérandes suivants doivent être pris en charge :
file1, file2
Un chemin d'accès d'un fichier à comparer. Si soit le file1 or file2 l'opérande est
'−', l'entrée standard doit être utilisée à sa place.
Si les deux file1 et file2 sont des répertoires, diff ne doit pas comparer les fichiers spéciaux de bloc,
des fichiers spéciaux de caractères ou des fichiers spéciaux FIFO à des fichiers et ne doivent pas comparer régulièrement
fichiers dans des répertoires. De plus amples détails sont spécifiés dans Diff Annuaire Comparaison
Format. Le comportement de diff sur d'autres types de fichiers est défini par l'implémentation lorsqu'il est trouvé dans
répertoires.
Si un seul des file1 et file2 est un directeur, diff s'appliquera au non-répertoire
fichier et le fichier contenu dans le répertoire file avec un nom de fichier qui est le même que le
dernier composant du fichier non-répertoire.
STDIN
L'entrée standard ne doit être utilisée que si l'un des file1 or file2 références d'opérandes
entrée standard. Voir la section FICHIERS D'ENTRÉE.
CONTRIBUTION DES DOSSIERS
Les fichiers d'entrée peuvent être de tout type.
ENVIRONNEMENT VARIABLES
Les variables d'environnement suivantes doivent affecter l'exécution de diff:
LANGUE Fournissez une valeur par défaut pour les variables d'internationalisation qui ne sont pas définies ou
nul. (Voir le volume Définitions de base de POSIX.1‐2008, Blog 8.2,
Internationalisation Variables pour la priorité de l'internationalisation
variables utilisées pour déterminer les valeurs des catégories de paramètres régionaux.)
LC_TOUS S'il est défini sur une valeur de chaîne non vide, remplace les valeurs de tous les autres
variables d'internationalisation.
LC_CTYPE Déterminer la localisation pour l'interprétation des séquences d'octets de données de texte
sous forme de caractères (par exemple, des caractères à un octet par opposition aux caractères à plusieurs octets dans
arguments et fichiers d'entrée).
LC_MESSAGES
Déterminez les paramètres régionaux qui doivent être utilisés pour affecter le format et le contenu de
messages de diagnostic écrits sur erreur standard et messages informatifs écrits
à la sortie standard.
LC_TIME Déterminer les paramètres régionaux pour affecter le format des horodatages de fichiers écrits avec
le -C et -c options.
NLSPATH Déterminer l'emplacement des catalogues de messages pour le traitement des LC_MESSAGES.
TZ Déterminez le fuseau horaire utilisé pour calculer les horodatages des fichiers écrits avec un
format de contexte. Si TZ est non défini ou nul, un fuseau horaire par défaut non spécifié doit être
utilisé.
ASYNCHRONE ÉVÈNEMENTS
Par défaut.
SORTIE STD
Diff Annuaire Comparaison Format
Si les deux file1 et file2 sont des répertoires, les formats de sortie suivants doivent être utilisés.
Dans la locale POSIX, chaque fichier présent dans un seul répertoire doit être signalé
en utilisant le format suivant:
"Seulement in % s: %s\n", <annuaire chemin d'accès>, <nom de fichier>
Dans la locale POSIX, les sous-répertoires communs aux deux répertoires peuvent être signalés
avec le format suivant :
"Commun sous-répertoires : %s et %s\n", <annuaire1 chemin d'accès>,
<annuaire2 chemin d'accès>
Pour chaque fichier commun aux deux répertoires, si les deux fichiers ne sont pas à comparer : si
les deux fichiers ont le même ID d'appareil et le même numéro de série de fichier, ou sont tous les deux spéciaux pour les blocs
fichiers qui font référence au même périphérique, ou sont à la fois des fichiers spéciaux de caractères qui font référence au
même périphérique, dans la locale POSIX, le format de sortie n'est pas spécifié. Sinon, dans le
locale POSIX un format non spécifié doit être utilisé qui contient les noms de chemin des deux
fichiers.
Pour chaque fichier commun aux deux répertoires, si les fichiers sont comparés et identiques,
aucune sortie ne doit être écrite. Si les deux fichiers diffèrent, le format suivant est écrit :
"diff %s %s %s\n", <options_diff>,nom de fichier1>,nom de fichier2>
oùoptions_diff> sont les options spécifiées sur la ligne de commande.
Tous les chemins de répertoire répertoriés dans cette section doivent être relatifs à la commande d'origine
arguments de ligne. Tous les autres noms de fichiers répertoriés dans cette section doivent être des noms de fichiers
(composants du chemin d'accès).
Diff binaire Sortie Format
Dans la locale POSIX, si un ou les deux fichiers comparés ne sont pas des fichiers texte, il est
mise en œuvre définie si diff utilise le format de sortie de fichier binaire ou l'autre
formats comme spécifié ci-dessous. Le format de sortie du fichier binaire doit contenir les chemins d'accès des
deux fichiers en cours de comparaison et la chaîne "différer".
Si les deux fichiers comparés sont des fichiers texte, selon les options spécifiées, l'un des
les formats suivants doivent être utilisés pour écrire les différences.
Diff Réglage par défaut Sortie Format
La valeur par défaut (sans -e, −f, -c, -C, -u, ou −U options) diff la sortie du service public doit contenir
lignes de ces formes :
"%da%d\n", <nombre1>,nombre2>
"%da%d,%d\n",nombre1>,nombre2>,nombre3>
"%dd%d\n",nombre1>,nombre2>
"%d,%dd%d\n",nombre1>,nombre2>,nombre3>
"%dc%d\n",nombre1>,nombre2>
"%d,%dc%d\n",nombre1>,nombre2>,nombre3>
"%dc%d,%d\n",nombre1>,nombre2>,nombre3>
"%d,%dc%d,%d\n",nombre1>,nombre2>,nombre3>,nombre4>
Ces lignes ressemblent ed sous-commandes à convertir file1 développement file2. Les numéros de ligne avant
les lettres d'action porteront sur file1; ceux qui suivent se rapporteront à file2. Ainsi, par
échanger a pour d et en lisant la ligne dans l'ordre inverse, on peut aussi déterminer comment
convertir file2 développement file1. Un péché ed, paires identiques (où nombre1= nombre2) sont abrégés en
un seul numéro.
En suivant chacune de ces lignes, diff doit écrire sur la sortie standard toutes les lignes affectées dans
le premier fichier utilisant le format :
"< %s", <en ligne>
et toutes les lignes affectées dans le deuxième fichier en utilisant le format :
"> %s", <en ligne>
S'il y a des lignes affectées dans les deux file1 et file2 (comme avec le c sous-commande), le
les modifications sont séparées par une ligne composée de trois personnages:
"−−−\n"
Diff -e Sortie Format
Avec la collection -e option, un script doit être produit qui, lorsqu'il est fourni en entrée à ed,
avec en annexe w (écrire) commande, convertir file1 développement file2. Seulement le a (ajouter),
c (monnaie), d (effacer), i (insérer), et s (substituer) les commandes de ed doit être utilisé dans
ce scénario. Lignes de texte, à l'exception de celles constituées d'un seul caractère ('.'),
doivent être affichés tels qu'ils apparaissent dans le fichier.
Diff −f Sortie Format
Avec la collection −f option, un autre format de script doit être produit. C'est similaire à
celui produit par -e, avec les différences suivantes :
1. Il est exprimé dans l'ordre inverse ; la sortie de -e les commandes changent à partir de la fin de
le fichier au début ; les −f Du début à la fin.
2. Le formulaire de commandelignes>lettre de commande> utilisé par -e est inversé. Par exemple, 10c
avec -e serait c10 avec −f.
3. La forme utilisée pour les plages de numéros de ligne est -séparés, plutôt que
-séparé.
Diff -c or -C Sortie Format
Avec la collection -c or -C option, le format de sortie doit se composer des lignes affectées avec
lignes de contexte environnantes. Les lignes concernées doivent indiquer celles qui doivent être supprimées
ou changé en file1, et ceux ajoutés à partir de file2. Avec le -c option, trois lignes de
le contexte, s'il est disponible, doit être écrit avant et après les lignes affectées. Avec le -C
option, l'utilisateur peut spécifier combien de lignes de contexte sont écrites. Le format exact
suit.
Le nom et l'heure de la dernière modification de chaque fichier doivent être affichés au format suivant :
"*** %s %s\n", file1,file1 horodatage>
"−−− %s %s\n", file2,file2 horodatage>
Chaquefilet> champ doit être le chemin d'accès du fichier correspondant en cours de comparaison. Les
le chemin écrit pour l'entrée standard n'est pas spécifié.
Dans la locale POSIX, chaquehorodatage> le champ doit être équivalent à la sortie du
commande suivante :
données "+%a %b %e %T %Y"
sans traînée , exécuté lors de la dernière modification du
fichier correspondant (ou l'heure actuelle, si le fichier est une entrée standard).
Ensuite, les formats de sortie suivants doivent être appliqués pour chaque ensemble de modifications.
Tout d'abord, une ligne doit être écrite dans le format suivant :
"****************\n"
Ensuite, la gamme de lignes dans file1 doit être écrit dans le format suivant si la plage
contient deux ou plusieurs lignes :
"*** %d,%d ****\n", <début en ligne nombre>,fin en ligne nombre>
et le format suivant sinon :
"*** %d ****\n", <fin en ligne nombre>
Le numéro de ligne de fin d'une plage vide doit être le numéro de la ligne précédente, ou 0
si la plage est au début du fichier.
Ensuite, les lignes affectées ainsi que les lignes de contexte (lignes non affectées) doivent être écrites.
Les lignes non affectées doivent être écrites dans le format suivant :
" %s", <ligne_non affectée>
Les lignes supprimées doivent être écrites comme suit :
"- %s", <ligne_supprimée>
Les lignes modifiées doivent être écrites comme suit :
"! %s", <ligne_modifiée>
Ensuite, la gamme de lignes dans file2 doit être écrit dans le format suivant si la plage
contient deux ou plusieurs lignes :
"−−− %d,%d −−−−\n", <début en ligne nombre>,fin en ligne nombre>
et le format suivant sinon :
"−−− %d −−−−\n", <fin en ligne nombre>
Ensuite, les lignes de contexte et les lignes modifiées doivent être écrites comme décrit dans le précédent
formatage. Lignes ajoutées à partir de file2 doit être rédigé sous le format suivant :
"+ %s", <ligne_ajoutée>
Diff -u or −U Sortie Format
Le manuel de formation -u or −U les options se comportent comme -c or -C options, sauf que les lignes de contexte sont
non répété; à la place, le contexte, les lignes supprimées et ajoutées sont affichés ensemble,
entrelacé. Le format exact suit.
Le nom et l'heure de la dernière modification de chaque fichier doivent être affichés au format suivant :
"--- %s%s%s %s0, fichier1, <fichier1 horodatage>, <fichier1 fract>, <fichier1 zone>
"+++ %s%s%s %s0, fichier2, <fichier2 horodatage>, <fichier2 fract>, <fichier2 zone>
Chaquefilet> doit être le chemin d'accès du fichier correspondant en cours de comparaison, ou le
caractère unique '−' si l'entrée standard est comparée. Cependant, si le chemin
contient un ou un , ou s'il n'est pas entièrement constitué de caractères pris
à partir du jeu de caractères portable, le comportement est défini par l'implémentation.
Chaquehorodatage> le champ doit être équivalent à la sortie de la commande suivante :
données '+%Y-%m-%d %H:%M:%S'
sans traînée , exécuté lors de la dernière modification du
fichier correspondant (ou l'heure actuelle, si le fichier est une entrée standard).
Chaquemanteau> le champ doit être soit vide, soit un point décimal suivi d'au moins un
chiffre décimal, indiquant la fraction de seconde (le cas échéant) de l'horodatage du fichier. Les
nombre de chiffres fractionnaires doit être au moins le nombre nécessaire pour représenter le fichier
horodatage sans perte d'informations.
ChaqueZone> le champ doit être de la forme "chut", Où "chut" est un nombre décimal signé à deux chiffres
nombre compris entre -24 et +25, et "mm" est un nombre décimal à deux chiffres non signé dans
la plage 00 à 59. Il représente le fuseau horaire de l'horodatage comme le nombre de
heures (hh) et minutes (mm) à l'est (+) ou à l'ouest (−) de UTC pour l'horodatage. Si les heures
et les minutes sont toutes deux à zéro, le signe doit être '+'. Cependant, si le fuseau horaire n'est pas un
nombre entier de minutes loin de l'UTC, leZone> le champ est défini par l'implémentation.
Ensuite, les formats de sortie suivants doivent être appliqués pour chaque ensemble de modifications.
Premièrement, la plage de lignes dans chaque fichier doit être écrite dans le format suivant :
"@@ -%s +%s @@", <fichier1 gamme>, <fichier2 gamme>
Chaquegamme> le champ doit être de la forme :
"%1d", <beginning en ligne nombre>
si la plage contient exactement une ligne, et :
"%1d,%1d", <beginning en ligne nombre>, <numéro of lignes>
autrement. Si une plage est vide, son numéro de ligne de début doit être le numéro de la ligne
juste avant la plage, ou 0 si la plage vide démarre le fichier.
Ensuite, les lignes affectées ainsi que les lignes de contexte doivent être écrites. Chaque non vide
la ligne non affectée doit être écrite dans le format suivant :
" %s",
où le contenu de la ligne non affectée doit être tiré de file1.
défini par l'implémentation si une ligne vide non affectée est écrite comme une ligne vide ou un
ligne contenant un seul personnage. Cette ligne représente également la même ligne de
file2, même si file2La ligne de peut contenir des contenus différents en raison de la -b. Supprimé
les lignes s'écriront :
"-%s",
Les lignes ajoutées doivent être écrites comme :
"+%s",
L'ordre des lignes écrites doit être le même que celui du fichier correspondant. Un supprimé
La ligne ne doit jamais être écrite immédiatement après une ligne ajoutée.
If −U n est spécifié, la sortie ne doit pas contenir plus de n consécutifs non affectés
lignes; et si la sortie contient une ligne affectée et que cette ligne est adjacente à jusqu'à n
lignes consécutives non affectées dans le fichier correspondant, la sortie doit contenir ces
lignes non affectées. -u agira comme −U3.
STDERR
L'erreur standard ne doit être utilisée que pour les messages de diagnostic.
SORTIE DES DOSSIERS
Aucun.
ÉLARGI DESCRIPTION
Aucun.
EXIT STATUT
Les valeurs de sortie suivantes doivent être renvoyées :
0 Aucune différence n'a été trouvée.
1 Des différences ont été trouvées.
>1 Une erreur s'est produite.
CONSÉQUENCES OF LES ERREURS
Par défaut.
Le manuel de formation Abonnement les sections sommes-nous informatif.
INSCRIPTION UTILISATION
Si les lignes à la fin d'un fichier sont modifiées et que d'autres lignes sont ajoutées, diff la sortie peut afficher
ceci sous forme de suppression et d'ajout, de modification ou de modification et d'ajout ; diff n'est pas censé
savoir ce qui s'est passé et les utilisateurs ne devraient pas se soucier de la différence de sortie tant qu'elle
montre clairement les différences entre les fichiers.
EXEMPLES
If Dir1 est un répertoire contenant un répertoire nommé x, Dir2 est un répertoire contenant un
répertoire nommé x, rép1/x et rép2/x les deux contiennent des fichiers nommés date de sortieet rép2/x
contient un fichier nommé y, la commande:
diff -r Dir1 Dir2
pourrait produire une sortie similaire à :
Commun sous-répertoires : rép1/x et rép2/x
Plus que in dir2/x : y
diff -r rép1/x/date.out rép2/x/date.out
1c1
< Lun juillet 2 13:12:16 GMT 1990
−−−
> Mar juin 19 21:41:39 GMT 1990
RAISONNEMENT
Le manuel de formation -h option a été omise car elle n'a pas été suffisamment spécifiée et n'ajoute rien à
portabilité des applications.
Les implémentations historiques utilisent des algorithmes qui ne produisent pas toujours une liste minimale de
différences; le langage courant sur tout effort est le meilleur ce volume de
POSIX.1‐2008 peut faire, car il n'y a pas de métrique qui pourrait être utilisée pour juger de la qualité de
implémentations contre tout contenu de fichier. La déclaration ``Cette liste doit être
minimal'' implique clairement que les implémentations ne sont pas censées fournir les éléments suivants
sortie lors de la comparaison de deux fichiers de 100 lignes qui diffèrent par un seul caractère sur un seul
en ligne:
1,100c1,100
tous 100 lignes grâce au file1 précédé avec "< "
−−−
tous 100 lignes grâce au file2 précédé avec "> "
Les messages ``Uniquement dans'' requis lorsque le -r l'option est spécifiée ne sont pas utilisés par la plupart
implémentations historiques si le -e option est également spécifiée. Il est nécessaire ici car
il fournit des informations utiles qui doivent être fournies pour mettre à jour un répertoire cible
hiérarchie pour correspondre à une hiérarchie source. Les messages ``Sous-répertoires communs'' sont écrits
par System V et 4.3 BSD lorsque le -r option est spécifiée. Ils sont autorisés ici mais ne le sont pas
requis parce qu'ils rapportent quelque chose qui est le même, ne rapportent pas un
différence et ne sont pas nécessaires pour mettre à jour une hiérarchie cible.
Le manuel de formation -c L'option, qui écrit la sortie dans un format utilisant des lignes de contexte, a été incluse.
Le format est utile pour diverses raisons, parmi lesquelles une lisibilité nettement améliorée
et la capacité de comprendre les changements de différence lorsque le fichier cible a des numéros de ligne
qui diffèrent d'un autre exemplaire similaire, mais légèrement différent. Les pièce l'utilité est la plus
utile lorsque vous travaillez avec des listes de différences à l'aide d'un format de contexte. La version BSD de
-c prend un argument facultatif spécifiant la quantité de contexte. Plutôt que de surcharger -c
et briser les directives de syntaxe utilitaire pour diff, les développeurs standard ont décidé de
ajouter une option distincte pour spécifier un diff de contexte avec une quantité spécifiée de contexte
(-C). De plus, le format du contexte diffs a été légèrement étendu dans 4.3 BSD pour permettre
plusieurs changements qui se trouvent dans des lignes de contexte les uns des autres à fusionner. Les
le format de sortie contient quatre caractères après la plage de
lignes affectées dans le premier nom de fichier. Il s'agissait de fournir un indicateur pour les anciens programmes (comme
anciennes versions de pièce) qui ne comprennent que l'ancien format de contexte. La version du contexte
décrit ici n'exige pas que plusieurs changements dans les lignes de contexte soient fusionnés, mais
il ne l'interdit pas non plus. L'extension est compatible vers le haut, de sorte que tous les fournisseurs qui
souhaite conserver l'ancienne version de diff peut le faire en ajoutant les quatre
caractères (c'est-à-dire les utilitaires qui utilisent actuellement diff et comprendre la nouvelle fusion
format comprendra également l'ancien format non fusionné, mais pas vice vice versa).
Le manuel de formation -u et −U options de GNU diff ont été inclus. Leur format de sortie, conçu par
Wayne Davison, prend moins de place que -c et -C format, et dans de nombreux cas est plus facile à
lire. Les horodatages du format ne varient pas selon les paramètres régionaux, donc LC_TIME ne l'affecte pas. Les
les numéros de ligne du format sont rendus avec le %1j formater, non %d, car le format de fichier
les règles de notation permettraient caractères à apparaître autour des chiffres.
La commande de substitution a été ajoutée comme format supplémentaire pour le -e option. Cela a été ajouté
fournir aux implémentations un moyen de corriger le bogue classique ``point seul sur une ligne''
présent dans de nombreuses versions de diff. Étant donné que de nombreuses implémentations ont corrigé ce bogue, le
les développeurs standard ont décidé de ne pas standardiser les comportements défectueux, mais plutôt de fournir les
outil nécessaire pour corriger le bogue. Une façon de corriger ce bogue consiste à afficher deux périodes
chaque fois qu'un point isolé est nécessaire, terminez la commande append avec un point, et
puis utilisez la commande de substitution pour convertir les deux périodes en une seule période.
Le dérivé de BSD -r option a été ajoutée pour fournir un mécanisme d'utilisation diff comparer deux
arborescence du système de fichiers. Ce comportement est utile, est une pratique standard sur tous les dérivés BSD
systèmes, et n'est pas facilement reproductible avec le trouver utilitaire.
L'exigence que diff ne pas comparer les fichiers dans certaines circonstances, même s'ils ont
du même nom, est basé sur la sortie réelle des implémentations historiques. Le spécifié
comportement empêche les problèmes résultant de l'exécution dans FIFOs et d'autres fichiers qui
causer diff se bloquer en attente d'une entrée sans indiquer à l'utilisateur que diff a été pendu. Un
version antérieure de cette norme spécifiait le format de sortie plus précisément, mais dans
pratique, cette exigence était largement ignorée et l'avantage de la normalisation semblait
petit, donc il est maintenant non spécifié. Dans l'utilisation la plus courante, diff -r doit indiquer les différences
dans les hiérarchies de fichiers, pas la différence de contenu des périphériques pointés par le
hiérarchies.
De nombreuses premières implémentations de diff nécessitent des fichiers consultables. Étant donné que les interfaces système
volume de POSIX.1‐2008 prend en charge les canaux nommés, les développeurs standard ont décidé qu'un tel
restriction était déraisonnable. Notez également que le nom de fichier autorisé - fait presque toujours référence
à un tuyau.
Aucun ordre de recherche de répertoire n'est spécifié pour diff. L'ordre historique n'est en fait pas
optimal, en ce qu'il imprime toutes les différences au niveau actuel, y compris le
des instructions sur tous les sous-répertoires communs avant de revenir dans ces sous-répertoires.
Le message:
"diff %s %s %s\n", <options_diff>, <nom de fichier1>, <nom de fichier2>
ne varie pas selon les paramètres régionaux car il s'agit de la représentation d'une commande, pas d'un anglais
phrase.
FUTUR DIRECTIONS
Aucun.
Utiliser diffposix en ligne à l'aide des services onworks.net