Android

Commande diff sous linux

Recherche sous Linux avec find sous Ubuntu

Recherche sous Linux avec find sous Ubuntu

Table des matières:

Anonim

diff est un utilitaire de ligne de commande qui vous permet de comparer deux fichiers ligne par ligne. Il peut également comparer le contenu des répertoires.

La commande diff est le plus souvent utilisée pour créer un patch contenant les différences entre un ou plusieurs fichiers qui peuvent être appliqués à l'aide de la commande patch .

Comment utiliser la commande diff

La syntaxe de la commande diff est la suivante:

diff… FILES

La commande diff peut afficher la sortie dans plusieurs formats, le format normal, contextuel et unifié étant les plus courants. La sortie comprend des informations sur les lignes des fichiers qui doivent être modifiées pour qu'elles deviennent identiques. Si les fichiers correspondent, aucune sortie n'est produite.

Pour enregistrer la sortie de la commande dans un fichier, utilisez l'opérateur de redirection:

diff file1 file2 > patch

, nous utiliserons les deux fichiers suivants pour expliquer le fonctionnement de la commande diff :

file1

Ubuntu Arch Linux Debian CentOS Fedora file2

Kubuntu Ubuntu Debian Arch Linux Centos Fedora

Format normal

Dans sa forme la plus simple, lorsque la commande diff est exécutée sur deux fichiers texte sans aucune option, elle produit une sortie au format normal:

diff file1 file2

La sortie ressemblera à ceci:

0a1 > Kubuntu 2d2 < Arch Linux 4c4, 5 < CentOS --- > Arch Linux > Centos

Le format de sortie normal se compose d'une ou plusieurs sections qui décrivent les différences. Chaque section ressemble à ceci:

change-command < from-file-line… --- > to-file-line…

0a1 , 2d2 et 4c4, 5 sont des commandes de changement. Chaque commande de modification contient les éléments suivants, de gauche à droite:

  • Numéro ou plage de lignes du premier fichier. Caractère de modification spécial. Numéro ou plage de lignes du deuxième fichier.

Le caractère de modification peut être l'un des suivants:

  • a - Ajoutez les lignes. c - Changez les lignes. d - Supprimez les lignes.

La commande de changement est suivie des lignes complètes qui sont supprimées ( < ) et ajoutées au fichier ( > ).

Expliquons la sortie:

  • 0a1 - Ajoutez la ligne 1 du deuxième fichier au début du fichier1 (après la ligne 0 ).
    • > Kubuntu - La ligne de la deuxième ligne qui est ajoutée au premier fichier comme décrit ci-dessus.
    2d2 - Supprimer la ligne 2 du premier fichier. Le 2 après le symbole d signifie que si la ligne n'est pas supprimée, elle apparaîtra sur la ligne 2 du deuxième fichier.
    • < Arch Linux - la ligne supprimée.
    4c4, 5 - Remplacez (modifiez) la ligne 5 du premier fichier par les lignes 4-5 du deuxième fichier.
    • < CentOS - La ligne du premier fichier à remplacer. --- - Séparateur. > Arch Linux et > Centos - Lignes du deuxième fichier remplaçant la ligne du premier fichier.

Format de contexte

Lorsque le format de sortie de contexte est utilisé, la commande diff affiche plusieurs lignes de contexte autour des lignes qui diffèrent entre les fichiers.

L'option -c indique à diff de produire une sortie au format contextuel:

diff -c file1 file2

*** file1 2019-11-25 21:00:26.422426523 +0100 --- file2 2019-11-25 21:00:36.342231668 +0100 *************** *** 1, 6 **** Ubuntu - Arch Linux Debian ! CentOS Fedora --- 1, 7 ---- + Kubuntu Ubuntu Debian ! Arch Linux ! Centos Fedora

La sortie commence par les noms et les horodatages si les fichiers sont comparés, et une ou plusieurs sections qui décrivent les différences. Chaque section ressemble à ceci:

*************** *** from-file-line-numbers **** from-file-line… --- to-file-line-numbers ---- to-file-line…

  • from-file-line-numbers et to-file-line-numbers - Les numéros de ligne ou la plage de lignes séparées par des virgules dans le premier et le deuxième fichier, respectivement. from-file-line et to-file-line - Les lignes qui diffèrent et les lignes de contexte:
    • Les lignes commençant par deux espaces sont des lignes de contexte, les lignes qui sont les mêmes dans les deux fichiers. Les lignes commençant par le symbole moins ( - ) sont les lignes qui ne correspondent à rien dans le deuxième fichier. Lignes manquantes dans le deuxième fichier. Les lignes commençant par le signe plus ( + ) sont les lignes qui ne correspondent à rien dans le premier fichier. Lignes manquantes dans le premier fichier. Les lignes commençant par le point d'exclamation ( ! ) Sont les lignes qui sont modifiées entre deux fichiers. Chaque groupe de lignes commençant par ! du premier fichier a une correspondance correspondante dans le deuxième fichier.

Expliquons les parties les plus importantes de la sortie:

  • Dans cet exemple, nous n'avons qu'une seule section décrivant les différences. *** 1, 6 **** et --- 1, 7 ---- nous indiquent l'étendue des lignes des premier et deuxième fichiers inclus dans cette section. Lignes Ubuntu , Debian , Fedora et la dernière ligne vide est la même dans les deux fichiers. Ces lignes commencent par un double espace - Arch Linux Ligne - Arch Linux du premier fichier ne correspond à rien dans le second fichier. Bien que cette ligne existe également dans le deuxième fichier, les positions sont différentes.Line + Kubuntu du deuxième fichier ne correspond à rien dans le premier fichier.Line ! CentOS ! CentOS dès le premier fichier et les premières lignes ! Arch Linux ! Arch Linux et ! CentOS ! CentOS du deuxième fichier est changé entre les fichiers.

Par défaut, le nombre de lignes de contexte est par défaut de trois. Pour spécifier un autre nombre, utilisez l'option -C ( --contexts ):

diff -C 1 file1 file2

*** file1 2019-11-25 21:00:26.422426523 +0100 --- file2 2019-11-25 21:00:36.342231668 +0100 *************** *** 1, 5 **** Ubuntu - Arch Linux Debian ! CentOS Fedora --- 1, 6 ---- + Kubuntu Ubuntu Debian ! Arch Linux ! Centos Fedora

Format unifié

Le format de sortie unifié est une version améliorée du format de contexte et produit une sortie plus petite.

Utilisez l'option -u pour indiquer à diff d'imprimer la sortie au format unifié:

diff -u file1 file2

--- file1 2019-11-25 21:00:26.422426523 +0100 +++ file2 2019-11-25 21:00:36.342231668 +0100 @@ -1, 6 +1, 7 @@ +Kubuntu Ubuntu -Arch Linux Debian -CentOS +Arch Linux +Centos Fedora

La sortie commence par les noms et les horodatages des fichiers et une ou plusieurs sections qui décrivent les différences. Chaque section prend la forme suivante:

*************** @@ from-file-line-numbers to-file-line-numbers @@ line-from-files…

  • @@ from-file-line-numbers to-file-line-numbers @@ - Numéro ou plage de lignes des premier et deuxième fichiers inclus dans cette section. line-from-files - Les lignes qui diffèrent et les lignes de contexte:
    • Les lignes commençant par deux espaces sont des lignes de contexte, les lignes qui sont identiques dans les deux fichiers.Les lignes commençant par le symbole moins ( - ) sont les lignes qui sont supprimées du premier fichier.Les lignes commençant par le symbole plus ( + ) sont les lignes ajoutées à partir du premier fichier.

Ignorer la casse

Comme vous pouvez le remarquer dans les exemples ci-dessus, la commande diff est sensible à la casse par défaut.

Utilisez l'option -i pour dire à diff d'ignorer la casse:

diff -ui file1 file2

--- file1 2019-11-25 21:00:26.422426523 +0100 +++ file2 2019-11-25 21:00:36.342231668 +0100 @@ -1, 6 +1, 7 @@ +Kubuntu Ubuntu -Arch Linux Debian +Arch Linux CentOS Fedora

Conclusion

La comparaison des fichiers texte pour les différences est l'une des tâches les plus courantes pour les administrateurs de systèmes Linux.

La commande diff compare les fichiers ligne par ligne. Pour plus d'informations, saisissez man diff dans votre terminal.

terminal diff