GNU/Linux >> Linux Esercitazione >  >> Linux

Comando Diff in Linux con esempi

Quando si tratta di confrontare i file, vengono utilizzati principalmente software basati su GUI. Se sei un utente Linux, penso che dovresti sapere come confrontare due file tramite riga di comando poiché è sicuramente un metodo rapido una volta che ci sei abituato.

In questo tutorial impareremo come utilizzare il comando diff attraverso alcuni esempi pratici.

Comando Linux diff

Comprendiamo il comando diff di Linux attraverso alcuni esempi pratici.

Supponiamo di avere questi due file (file1 e file2):

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

Puoi vedere che entrambi i file hanno alcune piccole differenze. Ora, vediamo come utilizzare il comando diff per far emergere queste differenze.

Ecco come eseguire il comando diff:

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

---

> I am fine.

Quindi puoi vedere che il comando diff è stato fornito con entrambi i nomi dei file come argomenti della riga di comando e ha prodotto le differenze nell'output. L'output non è affatto facilmente comprensibile. Il motivo è che è stato progettato per essere utilizzato dai computer e non dagli esseri umani. Tuttavia, decodifichiamo l'output pezzo per pezzo:

NOTA - I file file1 e file2 verranno indirizzati come file vecchio e nuovo file nel testo seguente.

1d0
< Hi,

Qui, la riga 1d0 significa che la prima riga del vecchio file deve essere cancellata (d) per sincronizzare entrambi i file a partire dalla riga 0. La riga da eliminare nel vecchio file è menzionata appena sotto con

2a2
> Hi,

Qui, la riga 2a2 significa che la seconda riga del nuovo file deve essere aggiunta dopo la seconda riga del vecchio file. La riga da aggiungere viene visualizzata nella riga successiva dell'output con> contrassegno.

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

---

> I am fine.

Qui, la riga 4,5c4 significa che i numeri di riga compresi tra 4 e 5 nel vecchio file sono ora modificati e devono essere sostituiti con la 4a riga del nuovo file. Le righe da aggiungere ed eliminare sono contrassegnate rispettivamente con> e <.

Quindi, per concludere,

  • Il primo argomento del comando diff viene considerato come vecchio file mentre il secondo argomento diventa nuovo file.
  • Espressioni come 1d0 2a2, 4,5c4 possono essere decodificate con la sintassi [numero riga o intervallo dal vecchio file][azione][numero riga o intervallo dal nuovo file] . Dove, 'azione' può essere aggiunta, eliminazione o modificata, quindi sostituisci.
  • Il segno rappresenta la riga da aggiungere.

Oltre ai file, il comando diff può essere utilizzato anche per confrontare due directory. Impariamo questo attraverso un esempio.

Ecco il contenuto di una directory denominata '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

e qui ci sono i contenuti di una directory chiamata '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

Ora, ecco l'output quando è stato eseguito il comando diff:

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

Quindi puoi vedere che quando il comando diff viene eseguito per confrontare queste due directory, mostra facilmente i file mancanti nelle directory.

Ecco alcune delle opzioni della riga di comando comunemente utilizzate:

1) Usa -i per ignorare le differenze tra maiuscole e minuscole

Se due file contengono lo stesso testo ma in casi diversi, il comando diff lo segnala comunque come differenza per impostazione predefinita.

Ad esempio :

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

Quindi puoi vedere che il comando diff ha riportato la differenza tra maiuscole e minuscole nell'output.

Per farla franca con questo comportamento predefinito, usa l'opzione -i.

Ecco un esempio :

$ diff -i file1 file2
$

Quindi puoi vedere che non è stato prodotto alcun output, che è il comportamento predefinito quando entrambi i file sono uguali.

2) Segnala che i file sono uguali usando l'opzione -s

Verso la fine dell'esempio 1, abbiamo visto che diff non riporta nulla se i file sono gli stessi. Sebbene questo comportamento predefinito vada bene, potrebbe comunque confondere molti, specialmente i principianti. Quindi, se vuoi che il comando diff riporti esplicitamente che i file sono gli stessi, usa l'opzione della riga di comando -s.

Ecco un esempio :

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

Quindi puoi vedere che ho aggiunto l'opzione -s nel comando che abbiamo usato nell'ultimo esempio e questa volta il comando diff ha riportato esplicitamente che entrambi i file sono identici.

3) Usa -b per ignorare gli spazi

Un altro caso d'uso comune è la quantità variabile di spazi per i quali il comando diff segnala i file come diversi.

Ecco un esempio :

$ cat file1
Hi, how are you?

$ cat file2
Hi, how are  you?

Osservare che l'unica differenza tra i file di traino è lo spazio extra tra le parole "sono" e "tu" in file2. Ora, quando il comando diff viene utilizzato per confrontare questi due file, ecco l'output:

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

---

> Hi, how are  you?

Quindi puoi vedere che il comando diff ha riportato la differenza. Ma se vuoi che diff ignori questi spazi, usa l'opzione -b:

$ diff -b file1 file2
$

Quindi puoi vedere che a causa dell'opzione -b, il comando diff ha riportato entrambi i file come uguali.

Suggerimento per i comandi :

Il comando seguente visualizzerà tutte le differenze di file tra due cartelle

diff -Naur old/ new/

Il comando diff fornisce molte più opzioni della riga di comando. Leggi la sua pagina man per l'elenco completo.


Linux
  1. Ordina il comando in Linux con esempi

  2. comando chattr in Linux con esempi

  3. Comando JQ in Linux con esempi

  4. ln Esempi di comandi in Linux

  5. file Esempi di comandi in Linux

Utilizzo di Cat Command in Linux con esempi

Comando Linux WC con esempi

Utilizzo del comando Linux mv con esempi

Comando di montaggio Linux con esempi

Comando gawk Linux con esempi

Linux make Command con esempi