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 riga0
nel secondo file.< Apple
–Il contenuto che devi eliminare (come indicato con1d0
).2a2,3
– Nella riga2
del primo file, dovresti aggiungere (a
) righe2
e3
(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. |