GNU/Linux >> Linux Esercitazione >  >> Linux

Come usare il comando diff di Linux

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 riga 0 nel secondo file.
  • < Apple –Il contenuto che devi eliminare (come indicato con 1d0 ).
  • 2a2,3 – Nella riga 2 del primo file, dovresti aggiungere (a ) righe 2 e 3 (2,3 ) dal secondo file.
  • > Peach , > Apple – Il contenuto che devi aggiungere (come indicato con 2a2,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.

Linux
  1. Come usare il comando Linux grep

  2. Come usare il comando cronologia in Linux

  3. Come utilizzare il comando cronologia di Linux

  4. Come utilizzare il comando Tar in Linux

  5. Come utilizzare il comando id in Linux

Come utilizzare un comando file in Linux

Come utilizzare il comando fd sul sistema Linux

Come utilizzare il comando wget in Linux?

Come usare il comando xargs in Linux?

Come utilizzare il comando Gzip in Linux?

Come usare il comando lsof in Linux