Il comando diff
dal pacchetto diffutils
confronta i file riga per riga. È molto utile quando si desidera verificare se sono state apportate modifiche recenti a un file dall'ultimo backup e quali sono. Uno stato di uscita di 0
significa che non sono state trovate differenze, 1
significa che sono state rilevate alcune differenze e 2
significa guai. E ovviamente, se ci sono modifiche, diff
te li mostrerò. Ma diamo un'occhiata ad alcuni esempi.
Esempio 1:entrambi i file hanno lo stesso contenuto
Alice e Bob stanno facendo un barbecue e hanno pubblicato i loro menu. Per decidere quale menu mi piacerebbe di più, potrei confrontare i menu come segue:
$ diff menu1 menu2
$ echo $?
0
$ cat menu{1,2}
# The menu
* Spare Ribs
* Brisket
* Pulled Pork
# The menu
* Spare Ribs
* Brisket
* Pulled Pork
Vedi, entrambi servono costine, petto e maiale stirato. Non c'è differenza tra i due file. Forse Alice e Bob dovrebbero unire le forze per organizzare un barbecue davvero enorme.
Quando Eve ha sentito che Alice e Bob stavano organizzando feste, è diventata gelosa e ha deciso di organizzare anche un barbecue. Il suo menu viene fornito con il file menu3
. Bene, vediamo quali le differenze nel suo menu sono confrontate con quelle di Alice e di Bob.
Esempio 2:ora ci sono bevande coinvolte
$ diff menu1 menu3
4a5,8
>
> # Drinks
> * Soda
> * Beer
$ echo $?
1
$
Ci sono differenze ora. E, con l'output nella prima riga, diff
ci dice cosa deve essere aggiunto (a) a menu1
in modo che abbia lo stesso contenuto di menu3
. Quindi, 4a5,8
significa che devi aggiungere alcune righe dopo la riga 4 in menu1
in modo che assomigli alle righe 5-8 in menu3
.
Quando si cambia la posizione dei file, l'output ha un aspetto diverso:
$ diff menu3 menu1
5,8d4
<
< # Drinks
< * Soda
< * Beer
Ora, diff
ci dice che le righe 5-8 in menu3
devono essere eliminati (d) per rendere il file identico a menu1
.
Esempio 3:Quando c'è qualcosa da cambiare
Ho modificato menu1
e menu2
di nuovo per assomigliare a questo:
# The menu
* Spare Ribs
* Brisket
* Pulled Pork
# The menu
* Spare Ribs
* Pulled Pork
* Pulled Pork
Questa volta, diff
ci mostrerà quale riga deve essere modificata (c) per far sembrare entrambi i file uguali:
$ diff menu1 menu2
3c3
< * Brisket
---
> * Pulled Pork
Concludendo
Il diff
command è uno strumento facile e flessibile da usare per confrontare i file riga per riga. Dai un'occhiata a diff(1)
per capire cos'altro si può fare con diff
.
[ Vuoi testare le tue capacità di amministratore di sistema? Fai una valutazione delle abilità oggi. ]