GNU/Linux >> Tutoriels Linux >  >> Linux

Commande Diff sous Linux avec exemples

En ce qui concerne la comparaison de fichiers, les logiciels basés sur l'interface graphique sont principalement utilisés. Si vous êtes un utilisateur Linux, je pense que vous devriez savoir comment comparer deux fichiers via la ligne de commande car c'est certainement une méthode rapide une fois que vous y êtes habitué.

Dans ce tutoriel, nous allons apprendre à utiliser la commande diff à travers quelques exemples pratiques.

Commande diff Linux

Comprenons la commande Linux diff à travers quelques exemples pratiques.

Supposons que nous ayons ces deux fichiers (fichier1 et fichier2) :

$ cat file1
Hi,
Hello,
How are you?
I am fine,
Thank you.
$ cat file2
Hello,
Hi,
How are you?
I am fine.

Vous pouvez voir que les deux fichiers ont quelques différences mineures. Voyons maintenant comment la commande diff peut être utilisée pour faire ressortir ces différences.

Voici comment exécuter la commande diff :

$ diff file1 file2
1d0
< Hi, 2a2 > Hi,
4,5c4
< I am fine,
< Thank you.

---

> I am fine.

Vous pouvez donc voir que la commande diff a été fournie avec les noms de fichiers en tant qu'arguments de ligne de commande et qu'elle a produit les différences dans la sortie. La sortie n'est en aucun cas facilement compréhensible. La raison en est qu'il a été conçu pour être utilisé par des ordinateurs et non par des humains. Néanmoins, décodons la sortie morceau par morceau :

REMARQUE - Les fichiers fichier1 et fichier2 seront adressés comme ancien fichier et nouveau fichier dans le texte suivant.

1d0
< Hi,

Ici, la ligne 1d0 signifie que la 1ère ligne de l'ancien fichier doit être supprimée (d) afin de synchroniser les deux fichiers à partir de la ligne 0. La ligne à supprimer dans l'ancien fichier est mentionnée juste en dessous avec

2a2
> Hi,

Ici, la ligne 2a2 signifie que la deuxième ligne du nouveau fichier doit être ajoutée après la deuxième ligne de l'ancien fichier. La ligne à ajouter est affichée dans la ligne suivante de la sortie avec la marque>.

4,5c4
< I am fine,
< Thank you.

---

> I am fine.

Ici, la ligne 4,5c4 signifie que les numéros de ligne allant de 4 à 5 dans l'ancien fichier sont maintenant modifiés et doivent être remplacés par la 4ème ligne du nouveau fichier. Les lignes à ajouter et à supprimer sont marquées respectivement par> et <.

Donc, pour conclure,

  • Le premier argument de la commande diff est considéré comme un ancien fichier tandis que le second argument devient un nouveau fichier.
  • Les expressions telles que 1d0 2a2, 4,5c4 peuvent être décodées avec la syntaxe [numéro de ligne ou plage de l'ancien fichier][action][numéro de ligne ou plage du nouveau fichier] . Où, 'action' peut être ajouter, supprimer ou modifier-donc-remplacer.
  • La marque représente la ligne à ajouter.

En plus des fichiers, la commande diff peut également être utilisée pour comparer deux répertoires. Apprenons cela à travers un exemple.

Voici le contenu d'un répertoire nommé 'new_dir' :

$ ls new_dir/
file file2 frnd frnd1.cpp log1.txt log3.txt log5.txt
file1 file name with spaces frnd1 frnd.cpp log2.txt log4.txt

et voici le contenu d'un répertoire nommé 'old_dir' :

$ ls orig_dir/
file1 file name with spaces frnd1 frnd.cpp log2.txt log4.txt test
file2 frnd frnd1.cpp log1.txt log3.txt log5.txt

Maintenant, voici la sortie lorsque la commande diff a été exécutée :

$ diff new_dir/ orig_dir/
Only in new_dir/: file
Only in orig_dir/: test

Ainsi, vous pouvez voir que lorsque la commande diff est exécutée pour comparer ces deux répertoires, elle affiche facilement les fichiers manquants dans les répertoires.

Voici quelques-unes des options de ligne de commande couramment utilisées :

1) Utilisez -i pour ignorer les différences de casse

Si deux fichiers contiennent le même texte mais dans des cas différents, la commande diff le signale toujours comme une différence par défaut.

Par exemple :

$ cat file1
HI
$ cat file2
hi
$ diff file1 file2
1c1
< HI --- > hi

Vous pouvez donc voir que la commande diff a signalé la différence de casse dans la sortie.

Pour vous en sortir avec ce comportement par défaut, utilisez l'option -i.

Voici un exemple :

$ diff -i file1 file2
$

Ainsi, vous pouvez voir qu'aucune sortie n'a été produite, ce qui est le comportement par défaut lorsque les deux fichiers sont identiques.

2) Signaler que les fichiers sont identiques à l'aide de l'option -s

Vers la fin de l'exemple 1, nous avons vu que diff ne signale rien si les fichiers sont identiques. Bien que ce comportement par défaut soit correct, il pourrait encore en dérouter beaucoup, en particulier les débutants. Donc, si vous voulez que la commande diff signale explicitement que les fichiers sont identiques, utilisez l'option de ligne de commande -s.

Voici un exemple :

$ diff -is file1 file2
Files file1 and file2 are identical

Vous pouvez donc voir que j'ai ajouté l'option -s dans la commande que nous avons utilisée dans le dernier exemple et cette fois la commande diff a signalé explicitement que les deux fichiers sont identiques.

3) Utilisez -b pour ignorer les espaces

Un autre cas d'utilisation courant est le nombre variable d'espaces pour lesquels la commande diff signale que les fichiers sont différents.

Voici un exemple :

$ cat file1
Hi, how are you?

$ cat file2
Hi, how are  you?

Observez que la seule différence entre les fichiers de remorquage est l'espace supplémentaire entre les mots « êtes » et « vous » dans le fichier2. Maintenant, lorsque la commande diff est utilisée pour comparer ces deux fichiers, voici le résultat :

$ diff file1 file2
1c1
< Hi, how are you?

---

> Hi, how are  you?

Vous pouvez donc voir que la commande diff a signalé la différence. Mais si vous voulez que diff ignore ces espaces, utilisez l'option -b :

$ diff -b file1 file2
$

Vous pouvez donc voir qu'en raison de l'option -b, la commande diff a signalé que les deux fichiers étaient identiques.

Astuce de commande :

La commande ci-dessous affichera toutes les différences de fichiers entre deux dossiers

diff -Naur old/ new/

La commande diff fournit de nombreuses autres options de ligne de commande. Lisez sa page de manuel pour la liste complète.


Linux
  1. Commande de tri sous Linux avec des exemples

  2. commande chattr sous Linux avec des exemples

  3. Commande JQ sous Linux avec exemples

  4. ln Exemples de commandes sous Linux

  5. file Exemples de commandes sous Linux

Utilisation de la commande Cat sous Linux avec des exemples

Commande Linux WC avec exemples

Utilisation de la commande Linux mv avec des exemples

Commande de montage Linux avec exemples

Commande Linux gawk avec exemples

Linux make Commande avec des exemples