Comandi Linux

Esempi di comandi diff in Linux

Esempi di comandi diff in Linux
Il comando diff è un'analisi o comando informativo che stampa le differenze tra i file, analizzandoli riga per riga o directory in modo ricorsivo mentre informa l'utente quali modifiche sono necessarie per rendere uguali i file, questo punto è importante per comprendere gli output diff. Questo tutorial si concentra sul comando diff.

Prima di iniziare, crea due file utilizzando un qualsiasi editor di testo (in questo tutorial viene utilizzato nano) con lo stesso contenuto:

# nano diffsample1

Pasta interna:

 LinuxHint pubblica i migliori contenuti per te 

stampa CTRL+X e Y per salvare ed uscire.

Crea un secondo file chiamato diffsample2 con lo stesso contenuto:

# nano diffsample2

Nota: attenzione a spazi e tab, i file devono essere uguali al 100%.

stampa CTRL+X e Y per salvare ed uscire.

# diff campione diff1 campione diff2

Come puoi vedere non c'è output, non c'è bisogno di fare qualcosa per rendere i file uguali perché sono già uguali.

Ora modifichiamo il file diffsample2 per apportare alcune modifiche:

# nano diffsample2

Quindi sostituiamo la parola "contenuto" con "consigli":

stampa CTRL+X e per salvare ed uscire.

Ora esegui:

# diff campione diff1 campione diff2

Vediamo l'output:

L'output sopra, "3c3" significa "La riga 3 del primo file di dovrebbe essere sostituita con la riga 3 del secondo file". La parte amichevole dell'output è che ci mostra quale testo deve essere modificato ("contenuti per te"per"consigli per te”)

Questo ci mostra che il riferimento per il comando diff non è il primo file ma il secondo, ecco perché la terza riga del primo file (il primo 3) deve essere modificata (C) come terza riga del secondo file (secondo 3).

Il comando diff può mostrare 3 caratteri:

c: questo carattere istruisce a Modificare deve essere fatto.
un: questo personaggio indica che qualcosa deve essere Aggiunto.
d: questo personaggio indica che qualcosa deve essere Eliminato.

I primi numeri prima di un carattere appartengono al primo file, mentre i numeri dopo i caratteri appartengono al secondo file.

Il simbolo < belongs to the first file and the symbol > al secondo file che viene utilizzato come riferimento.

Invertiamo l'ordine dei file, invece di correre

# diff campione diff1 campione diff2

correre:

# diff diffsample2 diffsample1

Puoi vedere come è stato invertito l'ordine e ora il file diffsample1 viene utilizzato come riferimento e ci indica di cambiare "tips for you" per "content for you", questo era l'output precedente:

Ora modifichiamo il file diffsample1 in questo modo:

Rimuovi tutte le righe, tranne la prima riga sul file diffsample1. Quindi eseguire:

# diff diffsample2 diffsample1

Come puoi vedere, poiché abbiamo usato il file diffsample1 come riferimento, per rendere il file diffsample2 esattamente uguale dobbiamo eliminare (d) righe due e tre (2,3) come nel primo file e nelle prime righe (1) sarà uguale.

Ora invertiamo l'ordine e invece di eseguire "# diff diffsample2 diffsample1” correre:

# diff campione diff1 campione diff2

Come puoi vedere, mentre l'esempio precedente ci indicava di rimuovere, questo ci indica di aggiungere (un) righe 2 e 3 dopo il primo file prima riga (1).

Ora lavoriamo sulla proprietà case sensitive di questo programma.

Modifica il file diffsample2 come:

E modifica il file diffsample1 come:

L'unica differenza sono le lettere maiuscole sul file diffsample2. Ora confrontiamolo usando di nuovo diff:

# diff campione diff1 campione diff2

Come puoi vedere le differenze riscontrate nelle lettere maiuscole, evitiamo di rilevare le lettere maiuscole, se non siamo interessati alla distinzione tra maiuscole e minuscole aggiungendo -io opzione:

# diff -i diffsample1 diffsample2

Non sono state trovate differenze, il rilevamento del caso è stato disabilitato.

Ora cambiamo il formato di output aggiungendo l'opzione -tu utilizzato per stampare output unificati:

Inoltre, per data e ora, l'output mostra con a - e + simbolo cosa dovrebbe essere rimosso e cosa dovrebbe essere aggiunto per rendere i file uguali.

All'inizio di questo articolo ho detto che gli spazi e le tabulazioni devono essere uguali in entrambi i file, poiché vengono rilevati anche dal comando diff, se vogliamo che il comando diff ignori gli spazi e le tabulazioni dobbiamo applicare il -w opzione.

Apri il file diffsample2 e aggiungi spazi e tab:

Come vedi ho aggiunto un paio di tab dopo "the best" nella seconda riga e anche spazi in tutte le righe, chiudi, salva il file ed esegui:

# diff campione diff1 campione diff2

Come puoi vedere sono state trovate differenze, oltre alle lettere maiuscole. Ora applichiamo l'opzione  -w per indicare a diff di ignorare gli spazi vuoti:

Come vedi nonostante la tabulazione diff trovi solo come differenza le lettere maiuscole.
Ora aggiungiamo di nuovo l'opzione -i:

#diff  -wi diffsample2 diffsample1

Il comando diff ha dozzine di opzioni disponibili da applicare per ignorare, modificare l'output, discriminare le colonne quando presenti, ecc. È possibile ottenere ulteriori informazioni su queste opzioni utilizzando il comando man o su http://man7.org/linux/man-pages/man1/diff.1.html. Spero che tu abbia trovato utile questo articolo con esempi di comandi diff in Linux. Continua a seguire LinuxHint per ulteriori suggerimenti e aggiornamenti su Linux e il networking.

Come installare League Of Legends su Ubuntu 14.04
Se sei un fan di League of Legends, questa è un'opportunità per testare League of Legends. Nota che LOL è supportato su PlayOnLinux se sei un utente L...
Installa l'ultimo gioco di strategia OpenRA su Ubuntu Linux
OpenRA è un motore di gioco di strategia in tempo reale gratuito/libero che ricrea i primi giochi di Westwood come il classico Command & Conquer: Red ...
Installa l'ultimo Dolphin Emulator per Gamecube e Wii su Linux
L'emulatore Dolphin ti consente di giocare ai giochi Gamecube e Wii scelti su Personal Computer Linux (PC). Essendo un emulatore di giochi liberament...