logo

Come confrontare i file riga per riga in Linux | comando diff

Nel mondo di Linux, la gestione e il confronto dei file è un compito comune sia per gli amministratori di sistema che per gli sviluppatori. La capacità di confrontare i file riga per riga è fondamentale per identificare le differenze, eseguire il debug del codice e garantire l'integrità dei dati. Uno strumento potente che facilita questo processo è ildiff>comando. In questo articolo esploreremo come utilizzare il filediff>comando per confrontare i file riga per riga in Linux.

Tabella dei contenuti



Comprensione del comando diff

diff sta per differenza .ILdiff>command è un'utilità versatile preinstallata sulla maggior parte delle distribuzioni Linux. Il suo scopo principale è confrontare il contenuto di due file e visualizzare le differenze tra loro. Il comando fornisce un modo completo per evidenziare modifiche, aggiunte ed eliminazioni in un formato chiaro e leggibile.

Questo comando viene utilizzato per visualizzare le differenze nei file confrontando i file riga per riga. A differenza dei suoi colleghi membri, cmp E com , ci dice quali righe in un file devono essere modificate per rendere i due file identici.

La cosa importante da ricordare è questa diff usa determinati simboli speciali E Istruzioni necessari per rendere due file identici. Ti dice le istruzioni su come modificare il primo file per farlo corrispondere al secondo file.



Sintassi di base del comando diff

La sintassi di base didiff>il comando è il seguente:

diff [OPTION]... FILE1 FILE2>

Ecco, ` FILE1`> e ` FILE2`> sono i due file che vuoi confrontare.

Il ` OPTION`> flag ti consente di personalizzare il comportamento del file ` diff`> comando.



Opzioni disponibili nel comando diff

Opzione

Descrizione

-c>O--context>

Differenze di output in modalità contesto

-u>O--unified>

Differenze di output in modalità unificata (più conciso)

-i>O--ignore-case>

Esegui un confronto senza distinzione tra maiuscole e minuscole

–ignora-tutto-spazio

Ignora gli spazi bianchi quando confronti le righe

-breve

Output solo se i file differiscono, nessun dettaglio

-ricorsivo

Confronta ricorsivamente le directory

-y>O--side-by-side>

elenco in Java

Visualizza l'output in un formato affiancato

Implementazione pratica di Come confrontare i file riga per riga in Linux? :

Confronto di due file

Confronta i file riga per riga in Linux.

Diciamo che abbiamo due file con nomi a.txt E b.txt contenente 5 stati indiani.

cat a.txt cat b.txt>
visualizzazione del contenuto dei file utilizzando il comando cat

visualizzazione del contenuto dei file utilizzando il comando cat

Ora, applicando il comando diff senza alcuna opzione otteniamo il seguente output:

diff a.txt b.txt>
confrontare i file riga per riga in Linux

confrontare i file riga per riga in Linux

Diamo un'occhiata a cosa significa questo output. La prima riga del diff l'output conterrà:

  • Numeri di riga corrispondenti al primo file,
  • Un simbolo speciale e
  • Numeri di riga corrispondenti al secondo file.

Come nel nostro caso, 0a1 che significa Dopo righe 0 (all'inizio del file) che devi aggiungere Tamil Nadu per far corrispondere il numero di riga 1 del secondo file. Quindi ci dice quali sono quelle righe in ciascun file precedute dal simbolo:

  • Righe precedute da a < sono righe del primo file.
  • Righe precedute da > sono righe dal secondo file.
  • La riga successiva contiene 2,3c3 il che significa che è necessario modificare la riga 2 alla riga 3 nel primo file in modo che corrisponda alla riga numero 3 nel secondo file. Poi ci dice quelle linee con i simboli sopra.
  • I tre trattini (—) basta separare le righe del file 1 e del file 2.

Come riepilogo per rendere identici entrambi i file, aggiungi prima Tamil Nadu nel primo file all'inizio corrisponde alla riga 1 del secondo file, dopodiché modifica le righe 2 e 3 del primo file, ad es. Uttar Pradesh E Calcutta con la riga 3 del secondo file, ad es. Andhra Pradesh . Dopodiché modifica la riga 5 del primo file, ad es. Jammu e Kashmir con la riga 5 del secondo file, ad es. Uttar Pradesh .

Eliminazione di una riga nei file utilizzando il comando diff

Considera lo scenario in cuidiff>indica la necessità di eliminare una riga. Dati due file,a.txt>Eb.txt>:

visualizzazione del contenuto dei file utilizzando il comando cat

visualizzazione del contenuto dei file utilizzando il comando cat

diff a.txt b.txt>
Eliminazione di una riga nel file

Eliminazione di una riga nel file

Qui sopra l'output 3d2 significa eliminare la terza riga del primo file, ad es. Telangana in modo che entrambi i file sincronizzare alla riga 2.

Visualizzazione delle differenze in modalità contesto

Per visualizzare le differenze in modalità contesto, utilizzare il file -C opzione. Proviamo a capirlo con un esempio, abbiamo due file file1.txt E file2.txt :

visualizzazione del contenuto dei file utilizzando il comando cat

visualizzazione del contenuto dei file utilizzando il comando cat

diff -c file1.txt file2.txt>
Differenza di visualizzazione in modalità contesto

Differenza di visualizzazione in modalità contesto

Nell'output sopra:

  • Il primo file è indicato con ` ***`> , e il secondo file è indicato con ` ---`> .
  • La riga con ` ***************`> funge da separatore.
  • Le prime due righe forniscono informazioni sul file 1 e sul file 2, visualizzando il nome del file, la data di modifica e l'ora di modifica.
  • Successivamente, tre asterischi ` ***`> sono seguiti da un intervallo di righe dal primo file (righe da 1 a 4). Quattro asterischi ` ****`> vieni dopo. Il contenuto del primo file viene quindi visualizzato con indicatori specifici:
    • Se una riga è invariata, è preceduta da due spazi.
    • Se è necessario modificare una riga, è preceduta da un simbolo e da uno spazio. I simboli indicano:
      • `+`> : Una riga nel secondo file da aggiungere al primo file per risultati identici.
      • `-`> : Una riga nel primo file da eliminare per risultati identici.
  • Tre trattini ` ---`> sono seguiti da un intervallo di righe dal secondo file (righe da 1 a 4), separato da una virgola. Quattro trattini ` ----`> seguire e verrà visualizzato il contenuto del secondo file.

Visualizzazione delle differenze in modalità unificata

Per visualizzare le differenze in modalità unificata, utilizzare il file -In opzione. È simile alla modalità contesto ma non visualizza alcuna informazione ridondante oppure mostra le informazioni in forma concisa.

visualizzazione del contenuto dei file utilizzando il comando cat

visualizzazione del contenuto dei file utilizzando il comando cat

diff -u file1.txt file2.txt>
Differenza di visualizzazione in modalità Unificata

Differenza di visualizzazione in modalità Unificata

Nell'output sopra:

  • Il primo file è indicato da ` ---`> , e il secondo file è indicato da ` +++`> .
  • Le prime due righe forniscono informazioni sul file 1 e sul file 2, inclusa la data e l'ora della modifica.
  • Dopodiché, ` @@ -1> `,`> 4 +1`> ,`> 4 @@`> denota l'intervallo di righe per entrambi i file. In questo caso, rappresenta le righe da 1 a 4 in entrambi i file.
  • Le righe successive rappresentano il contenuto dei file con indicatori specifici:
    • Le righe non modificate vengono visualizzate senza prefisso.
    • Le righe nel primo file da eliminare hanno il prefisso->.
    • Le righe nel secondo file da aggiungere hanno il prefisso+>.

In questo esempio, l'output indica che per rendere identici entrambi i file, le righe contenenti mv e comm devono essere eliminate dal primo file (file1.txt>) e le righe contenenti diff e comm devono essere aggiunte ad esso.

Confronto senza distinzione tra maiuscole e minuscole tra file

Per impostazione predefinita, ` diff`> fa distinzione tra maiuscole e minuscole. Per eseguire un confronto senza distinzione tra maiuscole e minuscole, utilizzare il comando ` -i`> opzione:

visualizzazione del contenuto dei file utilizzando il comando cat

visualizzazione del contenuto dei file utilizzando il comando cat

ILdiff>il comando viene quindi utilizzato per confrontare questi file con il file-i>opzione, che rende il confronto senza distinzione tra maiuscole e minuscole.

diff -i file1.txt file2.txt>
Confronto senza distinzione tra maiuscole e minuscole

Confronto senza distinzione tra maiuscole e minuscole

  • 2d1>: Ciò indica una modifica nella riga 2 del primo file (file1.txt>). ILd>sta per delete e dice di eliminare la riga 2 dal primo file.
    • >: Questa riga indica il contenuto della riga da eliminare. In questo caso è mv.
  • 3a3>: Ciò indica un'aggiunta nella riga 3 del primo file (file1.txt>). ILa>sta per aggiungi e dice di aggiungere una riga alla posizione 3.
    • >diff>: questa riga rappresenta il contenuto da aggiungere. In questo caso è diff.

In sintesi, l'output ci dice che per rendere entrambi i file identici (ignorando maiuscole e minuscole), dobbiamo eliminare la riga contenente mv dal primo file (file1.txt>) e aggiungi la linea diff nella stessa posizione. ILdiff>comando, con il-i>opzione, consente un confronto senza distinzione tra maiuscole e minuscole, facendo sì che consideri mv e MV come uguali durante l'analisi.

Visualizzazionediff>Versione

Per verificare la versione di ` diff`> installato sul tuo sistema, usa il file ` --version`> opzione:

diff --version>
Visualizzazione della versione del comando diff

Visualizzazione della versione del comando diff

Questo comando fornisce informazioni sulla versione, sulla licenza e sugli autori del file ` diff`> utilità.

Domande frequenti sul comando diff – Domande frequenti

Come utilizzo ildiff>comando per confrontare due file riga per riga in Linux?

Per confrontare due file riga per riga utilizzare il filediff>comando, è sufficiente utilizzare la seguente sintassi:

diff file1.txt file2.txt>

Questo comando mostrerà le differenze tra i due file, evidenziando aggiunte, eliminazioni e modifiche.

Posso ignorare le differenze degli spazi bianchi durante il confronto dei file con il filediff>comando?

Sì, ildiff>il comando fornisce il file-w>O--ignore-all-space>opzione per ignorare le differenze degli spazi bianchi. Per esempio:

diff -w file1.txt file2.txt>

Ciò è particolarmente utile quando si confrontano file di codice in cui le modifiche al rientro o alla spaziatura non sono significative.

Come posso creare un file patch utilizzando il filediff>comando?

Per creare un file patch che rappresenti le differenze tra due file, utilizzare il file-u>opzione e reindirizzare l'output su un file:

diff -u file1.txt file2.txt>miapatch.patch>

Il file patch generato può essere applicato successivamente per sincronizzare un altro file con le modifiche.

Qual è il formato unificato indiff>output e in cosa differisce dal formato del contesto?

Il formato unificato (` -u`> opzione) in ` diff`> l'output fornisce una rappresentazione più concisa e leggibile delle differenze rispetto al formato del contesto (` -c`> opzione). Visualizza le modifiche in una forma più compatta, facilitando la comprensione delle modifiche tra i file.

Come posso confrontare ricorsivamente due directory in Linux usando il filediff>comando?

Per confrontare ricorsivamente due directory e il loro contenuto, utilizzare il metodo ` -r`> o ' --recursive`> opzione con ildiff>comando:

diff -r directory1/ directory2/>

Questo comando confronta tutti i file nelle directory specificate e fornisce informazioni dettagliate sulle differenze.

Conclusione

Nel mondo Linux, confrontare i file è un compito comune per gli amministratori di sistema e gli sviluppatori. Il ` diff> Il comando è uno strumento utile che aiuta in questo processo. Questo articolo esplora come utilizzare ` diff`> per confrontare i file riga per riga in Linux. Copre la sintassi di base, opzioni importanti come la modalità contesto e la modalità unificata e applicazioni pratiche come la creazione di file patch e il confronto ricorsivo delle directory. Che tu stia eseguendo il debug del codice o garantendo l'integrità dei file, comprendendo e padroneggiando il file ` diff`> Il comando è essenziale per una gestione efficiente dei file in Linux.