Diff & Diff over SSH

Utilisation de Diff avec 2 fichiers

diff permet de trouver les différences entre des fichiers.

Le résultat de la commande diff affiche la syntaxe suivante :

  • a = add
  • d = delete
  • c = change
  • < = correspond au premier fichier appelé sur le ligne de commande
  • > = correspond au deuxième fichier appelé sur le ligne de commande

Nous allons voir quelques cas pratiques qui permettent de comprendre le résultat affiché par diff.

Exemple 1

user@pc:~/$ cat test1
1
2
c
user@pc:~/$ cat test2
1
2
3
user@pc:~/$ diff test1 test2
3c3
< c
---
> 3

  • 3c3 ” signale un changement à la ligne 3.
  • < c ” et ” > 3 ” signifient quel est le changement à la ligne 3.

Exemple 2

user@pc:~/$ cat test1
1
b
c
user@pc:~/$ cat test2
1
2
3
user@pc:~/$ diff test1 test2
2,3c2,3
< b
< c
---
> 2
> 3

  • 2,3c2,3 ” signale un changement à la ligne 2 et 3.

Exemple 3

user@pc:~/$ cat test1
1
b
user@pc:~/$ cat test2
1
2
3
user@pc:~/$ diff test1 test2
2c2,3
< b
---
> 2
> 3

  • 2c2,3 ” signale un changement à partir de la ligne 2 pour test2 concernant les lignes 2 et 3. (l'intervalle 2,3 est placé après la lettre c –> )

Exemple 4

user@pc:~/$ cat test1
1
2
user@pc:~/$ cat test2
1
2
3
4
user@pc:~/$ diff test1 test2
2a3,4
> 3
> 4
user@pc:~/$ diff test2 test1
3,4d2
< 3
< 4

  • 2a3,4 ” signale un ajout à la ligne 3 et 4 du fichier test2 après la ligne 2. (l'intervalle 3,4 est placé après la lettre a –> )
  • 3,4d2 ” signale une suppression des lignes 3 et 4 du fichier test1 après la ligne 2. (l'intervalle 3,4 est placé avant la lettre d –> )

Exemple 5

user@pc:~/$ cat test1
1
2


5
6
user@pc:~/$ cat test2
1
2
3
4
5
6
7
8
9
10
user@pc:~/$ diff test1 test2
3,4c3,4
< 
< 
---
> 3
> 4
6a7,10
> 7
> 8
> 9
> 10
user@pc:~/$ diff -u test2 test1
--- test2	2011-08-31 17:46:29.000000000 +0200
+++ test1	2011-08-31 17:46:50.000000000 +0200
@@ -1,10 +1,6 @@
 1
 2
-3
-4
+
+
 5
 6
-7
-8
-9
-10

  • L'option -u permet d'utiliser un autre type d'affichage plus facile à lire ! Il s'agit du format unifié (voir la doc de ” diff ” pour plus d'info).

Utilisation de Diff avec 2 répertoires

Diff ” ne sait pas établir les différences entre les contenus (fichier et dossier) de deux répertoires. Pour cela il faut utiliser la substitution de processus du shell bash.

La substitution de processus utilise la syntaxe ” >(command_list) ” et ” <(command_list)

La syntaxe ” <(command) ” crée un pipe attaché au STDOUT de la commande. Si le pipe est lu alors nous pourrons lire la sortie de la commande.

user@pc:~/$ diff <(/etc/apache) <(/usr/etc/apache)

Utilisation de Diff avec SSH

Il peut être utile de comparer deux fichiers de configuration sur deux serveurs distants.
Dans mon cas, je l'utilise pour vérifier les fichiers de configuration de mes deux serveurs Nagios qui doivent posséder une configuration identique.
On utilise la substitution de processus du shell et ssh pour effecteur cette opération.

Diff entre un fichier local et distant

 diff test1 <(ssh support@myserver1 'cat test2')

Diff entre deux fichiers distants

diff <(ssh support@myserver1 'cat test1') <(ssh support@myserver2 'cat test2')

Références

 
asr/sys/diff_diff_over_ssh.txt · Dernière modification: 2016/03/29 23:33 (édition externe)
 
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki