GNU/Linux >> Tutoriels Linux >  >> Linux

Comment utiliser la commande Linux diff

Présentation

Le diff de Linux La commande est utilisée pour comparer deux fichiers ligne par ligne et afficher la différence entre eux. Cet utilitaire de ligne de commande répertorie les modifications que vous devez appliquer pour rendre les fichiers identiques.

Lisez la suite pour en savoir plus sur le diff commande et ses options avec des exemples faciles à suivre.

Syntaxe diff

La syntaxe pour utiliser le diff la commande est :

diff [option] file1 file2

Syntaxe de sortie

Lorsque vous travaillez avec diff , il est crucial de savoir comment interpréter la sortie, qui consiste en :

  • Sortie commençant par < fait référence au contenu du premier fichier.
  • Sortie commençant par > fait référence au contenu du second fichier.
  • Numéros de ligne correspondant au premier fichier.
  • Un symbole spécial. Des symboles spéciaux indiquent comment le premier fichier doit être modifié pour correspondre au second fichier. La sortie peut afficher :
    • a (ajouter)
    • c (modifier)
    • d (supprimer)
  • Numéros de ligne correspondant au deuxième fichier.

Exemple de comparaison

Pour montrer comment le diff commande fonctionne, nous avons créé deux exemples de fichiers et comparé leur contenu.

Créer deux exemples de fichiers

1. Tout d'abord, à l'aide du terminal, créez un fichier Linux nommé example1.txt . Nous utilisons l'éditeur de texte Nano, mais vous pouvez utiliser un éditeur de texte de votre choix.

sudo nano example1.txt

2. Une fois que l'éditeur de texte a créé et ouvert le fichier, ajoutez-y les lignes suivantes :

Apple
Orange
Banana
Watermelon
Chery

3. Enregistrez et quittez le fichier - maintenez Ctrl + X et confirmez en appuyant sur Y .

4. Ensuite, créez un example2.txt fichier en exécutant :

sudo nano example2.txt

5. Ajoutez le contenu suivant au fichier :

Orange
Peach
Apple
Banana
Melon
Cherry

6. Enregistrez les modifications et quittez.

Comparer les fichiers avec la commande diff

1. Avec les deux exemples de fichiers en place, utilisez le diff commande pour voir en quoi ils diffèrent et comment les rendre identiques :

diff example1.txt example2.txt 

La sortie répertorie les instructions sur la façon de modifier le premier fichier pour qu'il ait le même contenu que dans example2.txt . Examinons la sortie des exemples de fichiers et décodons les instructions.

  • 1d0 – La première ligne (1 ) du premier fichier doit être supprimé (d ). Sinon, il apparaîtrait à la ligne 0 dans le deuxième fichier.
  • < Apple –Le contenu que vous devez supprimer (comme indiqué par 1d0 ).
  • 2a2,3 – En ligne 2 du premier fichier, vous devez ajouter (a ) lignes 2 et 3 (2,3 ) du deuxième fichier.
  • > Peach , > Apple – Le contenu que vous devez ajouter (comme indiqué par 2a2,3 ).
  • 4c5 – La quatrième ligne (4 ) du premier fichier doit être modifié (c ) à la cinquième ligne (5 ) du deuxième fichier.
  • < Watermelon – Le contenu que vous devez modifier.
  • > Melon – En quoi vous devez le changer.

Options de comparaison

Sans options supplémentaires, diff affiche la sortie dans le format par défaut. Il existe des moyens de modifier cette sortie pour la rendre plus compréhensible ou applicable à votre cas d'utilisation. Lisez la suite pour en savoir plus sur diff options de commande.

Option-c

Le format de contexte est un diff option d'utilitaire de ligne de commande qui génère plusieurs lignes de contexte autour des lignes qui diffèrent.

Pour afficher la différence entre les fichiers sous forme contextuelle, utilisez la commande :

diff -c file1 file2

Jetez un œil à la sortie des exemples de fichiers dans le formulaire de contexte dans l'image ci-dessous.

Les lignes affichant des informations sur le premier fichier commencent par *** , tandis que les lignes indiquant le deuxième fichier commencent par --- .

Les deux premières lignes affichent le nom et l'horodatage des deux fichiers :

*** example1.txt             2021-12-27 10:53:30.700640904 +0100
--- example2.txt             2021-12-27 10:54:41.304939358 +0100

**************** - est utilisé uniquement comme séparateur.

Avant de lister les lignes de chaque fichier, la sortie commence par la plage de lignes des fichiers :

***  1,5 ****
---  1,6 ----

Le reste des lignes liste le contenu des fichiers. Le début de chaque ligne indique comment modifier example1.txt pour le rendre identique à example2.txt . Si la ligne commence par :

- (moins) - il doit être supprimé du premier fichier.
+ (plus) – il doit être ajouté au premier fichier.
! (point d'exclamation) - il doit être remplacé par la ligne correspondante du deuxième fichier.

S'il n'y a pas de symbole, la ligne reste la même.

Par conséquent, dans l'exemple ci-dessus, vous devez supprimer Apple à partir de la première ligne, remplacez Watermelon avec Melon à la ligne quatre, et ajoutez Peach et Apple aux lignes deux et trois.

Option -u

Le format unifié est une option que vous pouvez ajouter pour afficher la sortie sans lignes de contexte redondantes. Pour cela, utilisez la commande :

diff -u file1 file2

Examinons maintenant la sortie des exemples de fichiers au format unifié :

Les lignes affichant des informations sur le premier fichier commencent par --- , tandis que les lignes indiquant le deuxième fichier commencent par +++ .

Les deux premières lignes affichent le nom et l'horodatage des deux fichiers :

*** example1.txt             2021-12-27 10:53:30.700640904 +0100
--- example2.txt             2021-12-27 10:54:41.304939358 +0100

@@ -1,5 +1,6 @@ - affiche la plage de lignes pour les deux fichiers.

Les lignes ci-dessous affichent le contenu des fichiers et comment modifier example1.txt pour le rendre identique à example2.txt . Lorsque la ligne commence par :

- (moins) - il doit être supprimé du premier fichier.
+ (plus) - il doit être ajouté au premier fichier.

S'il n'y a pas de symbole, la ligne reste la même.

Dans l'exemple ci-dessus, la sortie indique que Apple et Watermelon doit être supprimé, alors que Peach , Apple , et Melon doit être ajouté.

option -i

Par défaut, diff est sensible à la casse. Si vous voulez qu'il ignore la casse, ajoutez le -i option à la commande :

diff -i file1 file2

Par exemple, si nous créons un fichier avec les lignes suivantes :

Apple
Orange
Banana
Watermelon
Cherry

Et un autre fichier avec le contenu :

Apple
orange
Banana
watermelon
Cherry

La sortie sans options supplémentaires montre qu'il existe des différences entre les fichiers et donne des instructions pour les modifier.

Cependant, si vous ajoutez le -i option, il n'y a pas de sortie car la commande ne détecte aucune différence.

--option de version

Pour vérifier la version de diff en cours d'exécution sur votre système, exécutez la commande :

diff --version

--option d'aide

Pour générer un résumé de diff cycle d'utilisation :

diff --help

Autres options de comparaison

Autres options qui diff les supports incluent :

-a / --text Affichez les fichiers sous forme de texte et comparez-les ligne par ligne.
-b / --ignore-space-change Ignorer les espaces blancs lors de la comparaison de fichiers.
-B / --ignore-blank-lines<code> Ignorer les lignes vides lors de la comparaison de fichiers.
--binary Comparer et écrire des données en mode binaire.
-d --minimal Modifier l'algorithme (par exemple, pour trouver un plus petit ensemble de modifications).
-e / --ed Faire en sorte que la sortie soit un ed valide script.
-E / --ignore-tab-expansion Ignorer l'extension de tabulation lors de la comparaison de fichiers.
-l / --paginate Exécuter la sortie via pr pour le paginer.
-N / --new-file Traiter un fichier manquant comme présent mais vide.
-q / --brief Afficher si les fichiers diffèrent sans spécifier de détails.
-s / --report-identical-files Sortie lorsque les fichiers sont identiques.
-w / --ignore-all-space Ignorer les espaces blancs lors de la comparaison de fichiers.

Linux
  1. Comment utiliser la commande Linux grep

  2. Comment utiliser la commande history sous Linux

  3. Comment utiliser la commande Linux history

  4. Comment utiliser la commande Tar sous Linux

  5. Comment utiliser la commande id sous Linux

Comment utiliser une commande de fichier sous Linux

Comment utiliser la commande fd sur le système Linux

Comment utiliser la commande wget sous Linux ?

Comment utiliser la commande xargs sous Linux ?

Comment utiliser la commande Gzip sous Linux ?

Comment utiliser la commande lsof sous Linux