Visualisation des différences de fichiers Linux

LinuxBeginner
Pratiquer maintenant

Introduction

La capacité à comparer des fichiers est une compétence essentielle pour les développeurs, les administrateurs systèmes et toute personne travaillant avec des fichiers de configuration ou du code. Lors de la gestion de plusieurs versions de fichiers, l'identification des différences entre eux peut aider à déboguer, à suivre les modifications et à fusionner le contenu efficacement.

Dans ce lab (atelier), vous apprendrez à utiliser des outils de comparaison de fichiers sous Linux pour identifier les différences entre des fichiers texte. Vous commencerez par une comparaison de base de fichiers en utilisant la commande diff, puis vous explorerez l'outil plus puissant vimdiff, qui offre une interface visuelle pour comparer et éditer des fichiers côte à côte.

Ces compétences sont essentielles pour le contrôle de version, les revues de code et la résolution de problèmes de configuration dans les environnements Linux.

Création de fichiers d'exemple pour la comparaison

Dans cette étape, vous allez créer deux fichiers texte similaires que nous comparerons plus tard à l'aide de différents outils. La création de fichiers d'exemple avec de petites différences vous aidera à comprendre comment les outils de comparaison mettent en évidence ces différences.

Tout d'abord, créons un répertoire de projet et naviguons jusqu'à celui-ci :

mkdir -p ~/project
cd ~/project

Cette commande crée un répertoire nommé project dans votre répertoire personnel (s'il n'existe pas déjà) et change votre répertoire de travail actuel pour celui-ci.

Maintenant, créons deux fichiers texte d'exemple nommés file1.txt et file2.txt avec un contenu légèrement différent :

echo "The quick brown fox jumps over the lazy dog" > file1.txt
echo "The quick brown lynx jumps over the lazy dog" > file2.txt

Ces commandes utilisent la commande echo pour écrire du texte dans des fichiers. Le symbole > redirige la sortie vers le fichier spécifié.

Vérifions le contenu de chaque fichier :

cat file1.txt

Vous devriez voir la sortie suivante :

The quick brown fox jumps over the lazy dog

Vérifions maintenant le deuxième fichier :

cat file2.txt

Vous devriez voir la sortie suivante :

The quick brown lynx jumps over the lazy dog

Notez que les deux fichiers sont identiques sauf pour un mot : file1.txt contient "fox" tandis que file2.txt contient "lynx". Cette petite différence sera facilement identifiable lorsque nous utiliserons les outils de comparaison.

Comparaison de fichiers de base avec diff

Avant de plonger dans vimdiff, commençons par la commande de base diff. La commande diff est une utilité standard Linux pour comparer des fichiers ligne par ligne.

Exécutez la commande suivante pour comparer les deux fichiers que nous avons créés :

diff file1.txt file2.txt

Vous devriez voir une sortie similaire à :

1c1
< The quick brown fox jumps over the lazy dog
---
> The quick brown lynx jumps over the lazy dog

Comprenons ce que signifie cette sortie :

  • 1c1 indique que la ligne 1 du premier fichier doit être modifiée (c) pour correspondre à la ligne 1 du deuxième fichier
  • La ligne préfixée de < montre le contenu du premier fichier
  • Les trois tirets --- séparent le contenu des deux fichiers
  • La ligne préfixée de > montre le contenu du deuxième fichier

La commande diff a plusieurs options utiles. Par exemple, pour voir les différences côte à côte :

diff -y file1.txt file2.txt

Vous devriez voir une sortie comme :

The quick brown fox jumps over the lazy dog      |    The quick brown lynx jumps over the lazy dog

Pour une vue plus unifiée et consciente du contexte :

diff -u file1.txt file2.txt

Cela produit une sortie dans un format couramment utilisé dans les patches et les systèmes de contrôle de version.

Bien que diff soit utile pour des comparaisons rapides, il a des limitations pour le travail interactif. C'est là que vimdiff entre en jeu, que nous explorerons dans l'étape suivante.

Utilisation de vimdiff pour une comparaison visuelle

Maintenant, explorons une méthode plus visuelle pour comparer des fichiers en utilisant vimdiff. La commande vimdiff ouvre Vim avec plusieurs fichiers, les affichant côte à côte avec les différences mises en évidence.

Exécutez la commande suivante pour comparer nos deux fichiers avec vimdiff :

vimdiff file1.txt file2.txt

Vous devriez voir les deux fichiers ouverts dans Vim, affichés côte à côte. Les différences entre les fichiers sont mises en évidence, ce qui permet de repérer facilement le changement de "fox" à "lynx".

vimdiff est particulièrement utile car :

  1. Il fournit une représentation visuelle des différences
  2. Il vous permet d'éditer les fichiers tout en les comparant
  3. Il propose des outils de navigation pour sauter entre les différences

Si vous êtes nouveau dans Vim, voici quelques éléments de base à connaître :

  • Vim a différents modes (normal, insertion, visuel)
  • Lorsque vous ouvrez Vim pour la première fois, vous êtes en mode normal
  • Pour quitter Vim sans enregistrer les modifications, tapez :q! puis appuyez sur Entrée
  • Pour enregistrer et quitter, tapez :wq puis appuyez sur Entrée

Pour l'instant, prenez un moment pour observer comment les différences sont mises en évidence dans vimdiff. Lorsque vous êtes prêt à quitter, tapez :q! puis appuyez sur Entrée. Si vous êtes invité à confirmer la fermeture de tous les fichiers, tapez :qa! puis appuyez sur Entrée.

:qa!

Cette commande demande à Vim de quitter tous les fichiers ouverts sans enregistrer les modifications.

Maintenant que vous avez vu comment vimdiff affiche les différences entre les fichiers, apprenons à naviguer entre les différences et à effectuer des modifications.

Ouvrez à nouveau les fichiers avec vimdiff :

vimdiff file1.txt file2.txt

Dans vimdiff, vous pouvez utiliser les commandes suivantes pour vous déplacer entre les différences :

  • ]c - Sauter à la prochaine différence
  • [c - Sauter à la différence précédente

Essayez de naviguer jusqu'à la différence dans nos fichiers en tapant ]c en mode normal (appuyez d'abord sur Échap si vous n'êtes pas en mode normal).

Copie de texte entre les fichiers

L'une des fonctionnalités puissantes de vimdiff est la capacité de copier du texte d'un fichier à un autre. Vous pouvez le faire avec les commandes suivantes :

  • do (diff obtain) - Récupérer le changement de l'autre fichier dans le fichier actuel
  • dp (diff put) - Transférer le changement du fichier actuel vers l'autre fichier

Essayez de positionner votre curseur sur la différence dans le fichier de gauche et tapez do pour récupérer le texte du fichier de droite. Ensuite, essayez de positionner votre curseur sur le fichier de droite et tapez dp pour transférer le texte du fichier de droite vers le fichier de gauche.

Effectuer des modifications directes

Vous pouvez également éditer directement les fichiers dans vimdiff comme vous le feriez dans Vim classique :

  1. Appuyez sur i pour entrer en mode insertion
  2. Effectuez vos modifications
  3. Appuyez sur Échap pour revenir en mode normal
  4. Tapez :w pour enregistrer les modifications

Quitter vimdiff

Lorsque vous avez terminé d'explorer vimdiff, quittez sans enregistrer les modifications :

:qa!

Si vous souhaitez enregistrer les modifications avant de quitter, utilisez :

:wq

pour chaque fichier, ou utilisez :

:wqa

pour enregistrer et quitter tous les fichiers d'un coup.

vimdiff est un outil puissant qui combine les capacités de Vim avec des fonctionnalités de comparaison de fichiers, ce qui en fait un excellent outil pour les revues de code, la résolution de problèmes et la fusion de modifications.

Résumé

Dans ce laboratoire, vous avez appris à comparer des fichiers dans un environnement Linux en utilisant deux outils différents :

  1. diff - Un utilitaire en ligne de commande pour la comparaison de base de fichiers qui affiche les différences ligne par ligne. Cet outil est excellent pour les comparaisons rapides et peut afficher les différences dans différents formats.

  2. vimdiff - Un outil de comparaison visuelle plus avancé basé sur l'éditeur de texte Vim. Il offre une comparaison côte à côte avec les différences mises en évidence et permet l'édition interactive et la fusion de fichiers.

Ces compétences en comparaison de fichiers sont essentielles pour de nombreuses tâches dans le développement logiciel et l'administration système, notamment :

  • Le débogage des modifications de code
  • L'examen des différences entre les fichiers de configuration
  • La gestion des conflits de contrôle de version
  • La comparaison des journaux de sortie ou des résultats

En maîtrisant ces outils, vous pouvez identifier et résoudre plus efficacement les différences entre les fichiers, économisant ainsi du temps et réduisant les erreurs dans votre travail.

Pour vous entraîner davantage, essayez de comparer des fichiers plus volumineux ou de créer des différences plus complexes entre les fichiers pour voir comment ces outils gèrent diverses situations.