Introduzione
La diff di Linux Il comando viene utilizzato per confrontare due file riga per riga e visualizzare la differenza tra di loro. Questa utilità della riga di comando elenca le modifiche che devi applicare per rendere i file identici.
Continua a leggere per saperne di più sul diff comando e le sue opzioni con esempi facili da seguire.
Sintassi diff
La sintassi per l'utilizzo di diff il comando è:
diff [option] file1 file2 Sintassi di output
Quando si lavora con diff , è fondamentale sapere come interpretare l'output, che consiste in:
- Output che inizia con
<fa riferimento al contenuto nel primo file. - Output che inizia con
>fa riferimento al contenuto nel secondo file. - Numeri di riga corrispondenti al primo file.
- Un simbolo speciale. Simboli speciali indicano come il primo file deve essere modificato in modo che corrisponda al secondo file. L'output può visualizzare:
a(aggiungi)c(modifica)d(elimina)
- Numeri di riga corrispondenti al secondo file.
Esempio diff
Per mostrare come il diff comando funziona, abbiamo creato due file di esempio e confrontato il loro contenuto.
Crea due file di esempio
1. Innanzitutto, utilizzando il terminale, crea un file Linux denominato example1.txt . Usiamo l'editor di testo Nano, ma puoi usare un editor di testo a tua scelta.
sudo nano example1.txt 2. Una volta che l'editor di testo ha creato e aperto il file, aggiungi le seguenti righe:
Apple
Orange
Banana
Watermelon
Chery 3. Salva ed esci dal file:tieni premuto Ctrl + X e conferma premendo Y .
4. Quindi, crea un example2.txt file eseguendo:
sudo nano example2.txt 5. Aggiungi il seguente contenuto al file:
Orange
Peach
Apple
Banana
Melon
Cherry 6. Salva le modifiche ed esci.
Confronta i file con il comando diff
1. Con i due file di esempio in posizione, utilizzare il diff comando per vedere come differiscono e come renderli identici:
diff example1.txt example2.txt L'output elenca le istruzioni su come modificare il primo file in modo che abbia lo stesso contenuto di example2.txt . Diamo un'occhiata all'output per i file di esempio e decodifichiamo le istruzioni.

1d0– La prima riga (1) dal primo file dovrebbe essere eliminato (d). In caso contrario, apparirà nella riga0nel secondo file.< Apple–Il contenuto che devi eliminare (come indicato con1d0).2a2,3– Nella riga2del primo file, dovresti aggiungere (a) righe2e3(2,3) dal secondo file.> Peach,> Apple– Il contenuto che devi aggiungere (come indicato con2a2,3).4c5– La quarta riga (4) dal primo file dovrebbe essere modificato (c) alla quinta riga (5) dal secondo file.< Watermelon– Il contenuto che devi modificare.> Melon– In cosa devi cambiarlo.
Opzioni differenziali
Senza opzioni aggiuntive, diff visualizza l'output nel formato predefinito. Esistono modi per modificare questo output per renderlo più comprensibile o applicabile al tuo caso d'uso. Continua a leggere per saperne di più su diff opzioni di comando.
-c Opzione
Il formato del contesto è un diff opzione di utilità della riga di comando che genera diverse righe di contesto attorno alle righe che differiscono.
Per visualizzare la differenza tra i file in forma contestuale, utilizzare il comando:
diff -c file1 file2 Dai un'occhiata all'output per i file di esempio nel modulo contestuale nell'immagine sottostante.
Le righe che mostrano informazioni sul primo file iniziano con *** , mentre le righe che indicano il secondo file iniziano con --- .
Le prime due righe mostrano il nome e il timestamp di entrambi i file:
*** example1.txt 2021-12-27 10:53:30.700640904 +0100
--- example2.txt 2021-12-27 10:54:41.304939358 +0100
**************** - viene utilizzato solo come separatore.
Prima di elencare le righe di ciascun file, l'output inizia con l'intervallo di righe dei file:
*** 1,5 ****
--- 1,6 ---- Il resto delle righe elenca il contenuto dei file. L'inizio di ogni riga indica come modificare example1.txt per renderlo uguale a example2.txt . Se la riga inizia con:
- (meno) – deve essere cancellato dal primo file.
+ (più) – deve essere aggiunto al primo file.
! (punto esclamativo) – deve essere modificato nella riga corrispondente del secondo file.
Se non è presente alcun simbolo, la linea rimane la stessa.
Pertanto, nell'esempio sopra, dovresti eliminare Apple dalla prima riga, sostituisci Watermelon con Melon nella riga quattro e aggiungi Peach e Apple alle righe due e tre.
-Opzione u
Il formato unificato è un'opzione che puoi aggiungere per visualizzare l'output senza righe di contesto ridondanti. Per farlo, usa il comando:
diff -u file1 file2 Ora, esaminiamo l'output per i file di esempio nel formato unificato:
Le righe che mostrano informazioni sul primo file iniziano con --- , mentre le righe che indicano il secondo file iniziano con +++ .
Le prime due righe mostrano il nome e il timestamp di entrambi i file:
*** example1.txt 2021-12-27 10:53:30.700640904 +0100
--- example2.txt 2021-12-27 10:54:41.304939358 +0100
@@ -1,5 +1,6 @@ - mostra l'intervallo di righe per entrambi i file.
Le righe seguenti mostrano il contenuto dei file e come modificare example1.txt per renderlo identico a example2.txt . Quando la riga inizia con:
- (meno) – deve essere cancellato dal primo file.
+ (più) – deve essere aggiunto al primo file.
Se non è presente alcun simbolo, la linea rimane la stessa.
Nell'esempio sopra, l'output indica che Apple e Watermelon dovrebbe essere rimosso, mentre Peach , Apple e Melon dovrebbe essere aggiunto.
-i Opzione
Per impostazione predefinita, diff fa distinzione tra maiuscole e minuscole. Se vuoi che ignori le maiuscole, aggiungi il -i opzione al comando:
diff -i file1 file2 Ad esempio, se creiamo un file con le seguenti righe:
Apple
Orange
Banana
Watermelon
Cherry E un altro file con il contenuto:
Apple
orange
Banana
watermelon
Cherry L'output senza opzioni aggiuntive mostra che ci sono differenze tra i file e fornisce istruzioni su come modificarli.
Tuttavia, se aggiungi il -i opzione, non c'è output in quanto il comando non rileva alcuna differenza.
--opzione versione
Per verificare la versione di diff in esecuzione sul tuo sistema, esegui il comando:
diff --version
--opzione di aiuto
Per generare un riepilogo di diff utilizzo eseguito:
diff --help Altre opzioni differenziali
Altre opzioni che diff i supporti includono:
-a / --text | Visualizza i file come testo e confrontali riga per riga. |
-b / --ignore-space-change | Ignora gli spazi bianchi durante il confronto dei file. |
-B / --ignore-blank-lines<code> | Ignora le righe vuote durante il confronto dei file. |
--binary | Confronta e scrivi dati in modalità binaria. |
-d --minimal | Modifica l'algoritmo (ad esempio, per trovare un insieme di modifiche più piccolo). |
-e / --ed | Rendi l'output un ed valido copione. |
-E / --ignore-tab-expansion | Ignora l'estensione della scheda durante il confronto dei file. |
-l / --paginate | Esegui l'output tramite pr per impaginarlo. |
-N / --new-file | Tratta un file mancante come presente ma vuoto. |
-q / --brief | Indica se i file differiscono senza specificare i dettagli. |
-s / --report-identical-files | Uscita quando i file sono identici. |
-w / --ignore-all-space | Ignora lo spazio bianco durante il confronto dei file. |