Zum Inhalt springen

Diff: Unterschied zwischen den Versionen

Aus Foxwiki
K Textersetzung - „wikitable“ durch „table table-striped table-hover“
 
(13 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 7: Zeile 7:


== Aufruf ==
== Aufruf ==
<syntaxhighlight lang="bash" highlight="1" line>
<syntaxhighlight lang="bash" highlight="1" line copy>
</syntaxhighlight>
</syntaxhighlight>


=== Optionen ===
=== Optionen ===
{| class="wikitable sortable options gnu"
{| class="table table-striped table-hover sortable options gnu"
|-
|-
! Unix !! GNU !! Parameter !! Beschreibung
! Unix !! GNU !! Parameter !! Beschreibung
Zeile 26: Zeile 26:


== Anwendung ==
== Anwendung ==
<syntaxhighlight lang="bash" highlight="1" line>
<syntaxhighlight lang="bash" highlight="1" line copy>
diff Datei1 Datei2
diff Datei1 Datei2
</syntaxhighlight>
</syntaxhighlight>


Will man nur wissen ob eine Datei sich inhaltlich von einer anderen Datei unterscheidet, kann der Parameter <tt>q</tt> verwendet werden:
Will man nur wissen ob eine Datei sich inhaltlich von einer anderen Datei unterscheidet, kann der Parameter <tt>q</tt> verwendet werden:
<syntaxhighlight lang="bash" highlight="1" line>
<syntaxhighlight lang="bash" highlight="1" line copy>
diff -q Datei1 Datei2
diff -q Datei1 Datei2
</syntaxhighlight>
</syntaxhighlight>
Zeile 38: Zeile 38:


Ohne den Parameter q zeigt diff die Unterschiede an, das sieht zum Beispiel so aus
Ohne den Parameter q zeigt diff die Unterschiede an, das sieht zum Beispiel so aus
<syntaxhighlight lang="bash" highlight="1" line>
<syntaxhighlight lang="bash" highlight="1" line copy>
diff beispiel2 beispiel1
diff beispiel2 beispiel1
  1,2c1,2
  1,2c1,2
Zeile 49: Zeile 49:
  < Nicht eingerückter Text.
  < Nicht eingerückter Text.
  ---
  ---
  >       Eingerückter Text.
  >   Eingerückter Text.
  8A9,10
  8A9,10
  >
  >
Zeile 55: Zeile 55:
</syntaxhighlight>
</syntaxhighlight>


{| class="wikitable sortable"
{| class="table table-striped table-hover sortable"  
|-
|-
|| Diff zeigt immer an, was man in der zweiten Datei ändern müsste, damit sie der ersten Datei entspricht.  
|| Diff zeigt immer an, was man in der zweiten Datei ändern müsste, damit sie der ersten Datei entspricht.  
Zeile 69: Zeile 69:


Die ersten beiden Zeilen geben an, welche Dateien verglichen werden, und das Inhalte aus der ersten Datei mittels Sternchen (<tt><nowiki>***</nowiki></tt>) und Inhalte aus der zweiten Zeile mittels Bindestrichen (<tt>---</tt>) gekennzeichnet werden.
Die ersten beiden Zeilen geben an, welche Dateien verglichen werden, und das Inhalte aus der ersten Datei mittels Sternchen (<tt><nowiki>***</nowiki></tt>) und Inhalte aus der zweiten Zeile mittels Bindestrichen (<tt>---</tt>) gekennzeichnet werden.
<syntaxhighlight lang="bash" highlight="1" line>
<syntaxhighlight lang="bash" highlight="1" line copy>
</syntaxhighlight>
diff -c beispiel2 beispiel1
$ '''diff -c beispiel2 beispiel1'''
  *** beispiel2 </nowiki> 2009-05-12 22:01:52.000000000 +0200
  <nowiki>*** beispiel2 </nowiki> 2009-05-12 22:01:52.000000000 +0200
  --- beispiel1 2009-05-12 20:26:48.000000000 +0200
  --- beispiel1   2009-05-12 20:26:48.000000000 +0200
  <nowiki>***************</nowiki>
  <nowiki>***************</nowiki>
  <nowiki>*** 1,8 ****</nowiki>
  <nowiki>*** 1,8 ****</nowiki>
  ! Das ist ein Beispieltext für einen Blogartikel.
  ! Das ist ein Beispieltext für einen Blogartikel.
  ! Diese Datei heisst beispiel2.
  ! Diese Datei heisst beispiel2.
    
  Lorem ipsum.
   Lorem ipsum.
 
  ! Nicht eingerückter Text.
  ! Nicht eingerückter Text.
    
  Hier geht es noch weiter.
   Hier geht es noch weiter.
  --- 1,10 ----
  --- 1,10 ----
  ! Das hier ist ein Beispieltext.
  ! Das hier ist ein Beispieltext.
  ! Diese Datei heisst beispiel1.
  ! Diese Datei heisst beispiel1.
    
  Lorem ipsum.
   Lorem ipsum.
 
  !       Eingerückter Text.
  !   Eingerückter Text.
    
  Hier geht es noch weiter.
   Hier geht es noch weiter.
  +
  +
  + Mit noch mehr Text.
  + Mit noch mehr Text.
</syntaxhighlight>


Änderungen werden durch ein Ausrufezeichen, hinzuzufügende Zeilen mit einem Plus, zu entfernende Zeilen mit einem Minus gekennzeichnet.
Änderungen werden durch ein Ausrufezeichen, hinzuzufügende Zeilen mit einem Plus, zu entfernende Zeilen mit einem Minus gekennzeichnet.


Außerdem ist es möglich die Inhalte der beiden Dateien nebeneinander anzuzeigen.
Außerdem ist es möglich die Inhalte der beiden Dateien nebeneinander anzuzeigen.
<syntaxhighlight lang="bash" highlight="1" line>
<syntaxhighlight lang="bash" highlight="1" line copy>
diff -y beispiel2 beispiel1
Das ist ein Beispieltext für einen Blogartikel.        | Das hier ist ein Beispieltext.
Diese Datei heisst beispiel2.                | Diese Datei heisst beispiel1.
Lorem ipsum.                          Lorem ipsum.
Nicht eingerückter Text.                  |    Eingerückter Text.
Hier geht es noch weiter.                    Hier geht es noch weiter.
                                >
                                > Mit noch mehr Text.
Was kann diff noch?
</syntaxhighlight>
</syntaxhighlight>
$ '''diff -y beispiel2 beispiel1'''
Das ist ein Beispieltext für einen Blogartikel.              | Das hier ist ein Beispieltext.
Diese Datei heisst beispiel2.                                | Diese Datei heisst beispiel1.
 
Lorem ipsum.                                                    Lorem ipsum.
 
Nicht eingerückter Text.                                      |        Eingerückter Text.
 
Hier geht es noch weiter.                                      Hier geht es noch weiter.
                                                              >
                                                              > Mit noch mehr Text.
Was kann diff noch?


Möchte man drei Dateien miteinander vergleichen kann man anstatt diff den Befehl diff3 verwenden.
Möchte man drei Dateien miteinander vergleichen kann man anstatt diff den Befehl diff3 verwenden.
<syntaxhighlight lang="bash" highlight="1" line>
<syntaxhighlight lang="bash" highlight="1" line copy>
</syntaxhighlight>
diff3 beispiel1 beispiel2 beispiel3
$ '''diff3 beispiel1 beispiel2 beispiel3'''
  <nowiki>====1</nowiki>
  <nowiki>====1</nowiki>
  1:1,2c
  1:1,2c
  Das hier ist ein Beispieltext.
  Das hier ist ein Beispieltext.
  Diese Datei heisst beispiel1.
  Diese Datei heisst beispiel1.
  2:1,2c
  2:1,2c
  3:1,2c
  3:1,2c
  Das ist ein Beispieltext für einen Blogartikel.
  Das ist ein Beispieltext für einen Blogartikel.
  Diese Datei heisst beispiel2.
  Diese Datei heisst beispiel2.
</syntaxhighlight>


Es ist auch möglich mit diff den Inhalt von Verzeichnissen zu vergleichen, diff zeigt dann an, welche Dateien nur in einem der beiden Verzeichnisse existieren. Der Parameter r weist diff an, auch Unterverzeichnisse zu überprüfen.
Es ist auch möglich mit diff den Inhalt von Verzeichnissen zu vergleichen, diff zeigt dann an, welche Dateien nur in einem der beiden Verzeichnisse existieren. Der Parameter r weist diff an, auch Unterverzeichnisse zu überprüfen.
<syntaxhighlight lang="bash" highlight="1" line>
<syntaxhighlight lang="bash" highlight="1" line copy>
diff -r verz1 verz2
Nur in verz1: datei3.
</syntaxhighlight>
</syntaxhighlight>
$ '''diff -r verz1 verz2'''
Nur in verz1: datei3.


Wenn man längere Texte miteinander vergleicht und die Ausgabe nicht mehr auf den Bildschirm passt kann man sie auch an ein Programm wie <tt>less</tt> übergeben:
Wenn man längere Texte miteinander vergleicht und die Ausgabe nicht mehr auf den Bildschirm passt kann man sie auch an ein Programm wie <tt>less</tt> übergeben:
<syntaxhighlight lang="bash" highlight="1" line>
<syntaxhighlight lang="bash" highlight="1" line copy>
diff datei1 datei2 | less
</syntaxhighlight>
</syntaxhighlight>
diff datei1 datei2 | less


Anschließend kann man bequem durch die Ausgabe von diff scrollen.
Anschließend kann man bequem durch die Ausgabe von diff scrollen.


=== Beispiele ===
=== Beispiele ===
<syntaxhighlight lang="bash" highlight="1" line>
<syntaxhighlight lang="bash" highlight="1" line copy>
</syntaxhighlight>
diff -q DATEI1 DATEI2
$ '''diff -q DATEI1 DATEI2'''
  Dateien DATEI1 und DATEI2 unterscheiden sich
  Dateien '''DATEI1''' und '''DATEI2''' unterscheiden sich
  diff DATEI1 DATEI2  
  diff DATEI1 DATEI2  
  4,6c4,5
  4,6c4,5
  <       Unterschied 1
  <   Unterschied 1
  <       Unterschied 2
  <   Unterschied 2
  <       Unterschied 5
  <   Unterschied 5
  ---
  ---
  >       Unterschied 3
  >   Unterschied 3
  >       Unterschied 4
  >   Unterschied 4
</syntaxhighlight>


Zuerst gibt diff an, in welcher Zeile sich die Unterschiede befinden. Zeilen mit <tt><</tt> sind in der ersten Datei vorhanden und Zeilen mit <tt>></tt> in der zweiten.
Zuerst gibt diff an, in welcher Zeile sich die Unterschiede befinden. Zeilen mit <tt><</tt> sind in der ersten Datei vorhanden und Zeilen mit <tt>></tt> in der zweiten.


Vergleichen von Ordnern:
; Vergleichen von Ordnern
<syntaxhighlight lang="bash" highlight="1" line>
<syntaxhighlight lang="bash" highlight="1" line copy>
</syntaxhighlight>
diff -s ORDNER1 ORDNER2
$ '''diff -s ORDNER1 ORDNER2'''
  Dateien ORDNER1/DATEI1 und ORDNER2/DATEI1 sind identisch
  Dateien ORDNER1/DATEI1 und ORDNER2/DATEI1 sind identisch
  Dateien ORDNER1/DATEI2 und ORDNER2/DATEI2 sind identisch
  Dateien ORDNER1/DATEI2 und ORDNER2/DATEI2 sind identisch
  Nur in ORDNER2: DATEI3
  Nur in ORDNER2: DATEI3
</syntaxhighlight>


=== Patchdatei erstellen ===
=== Patchdatei erstellen ===
Wer sich mit Programmierung, Bugs oder dem Verbessern von Programmen beschäftigt, benutzt diff um Änderungen per [http://wiki.ubuntuusers.de/Versionsverwaltung Versionsverwaltung] mitzuteilen. Um nicht alle Codedateien mit Änderungen auszutauschen, werden nur die geänderten Stellen im Diff-Format gespeichert. Der so erstellte Diff kann dann als Patch (beispielsweise mit [http://wiki.ubuntuusers.de/patch patch]) angewandt werden.
Wer sich mit Programmierung, Bugs oder dem Verbessern von Programmen beschäftigt, benutzt diff um Änderungen per [https://wiki.ubuntuusers.de/Versionsverwaltung Versionsverwaltung] mitzuteilen. Um nicht alle Codedateien mit Änderungen auszutauschen, werden nur die geänderten Stellen im Diff-Format gespeichert. Der so erstellte Diff kann dann als Patch (beispielsweise mit [https://wiki.ubuntuusers.de/patch patch]) angewandt werden.


Folgende Optionen von diff sind außerdem noch für das Erstellen einer Patchdatei interessant:
Folgende Optionen von diff sind außerdem noch für das Erstellen einer Patchdatei interessant:


{| class="wikitable sortable"
{| class="table table-striped table-hover sortable"  
|-
|-
| | <tt>'''-q '''</tt>
| | <tt>'''-q '''</tt>
| | ignoriert in diesem Fall fehlende Dateien  
| | ignoriert in diesem Fall fehlende Dateien  
|-
|-
| | <tt>'''-u '''</tt>
| | <tt>'''-u '''</tt>
| | für '''u'''nified, gibt <tt>NUM</tt> (Standard 3) der unveränderten Zeilen aus  
| | für '''u'''nified, gibt <tt>NUM</tt> (Standard 3) der unveränderten Zeilen aus  
|-
|-
| | <tt>'''-N '''</tt>
| | <tt>'''-N '''</tt>
| | für '''N'''ew, erstellt fehlende Dateien  
| | für '''N'''ew, erstellt fehlende Dateien  


|-
|-
Zeile 184: Zeile 184:


=== Beispiele ===
=== Beispiele ===
<syntaxhighlight lang="bash" highlight="1" line>
<syntaxhighlight lang="bash" highlight="1" line copy>
</syntaxhighlight>
diff -uNr ORIGINALDATEI VERBESSERTE_DATEI > DIFFDATEI.diff
$ '''diff -uNr ORIGINALDATEI VERBESSERTE_DATEI > DIFFDATEI.diff'''
 
Die Datei '''DIFFDATEI.diff''' würde dann in etwa so aussehen:


Die Datei '''DIFFDATEI.diff''' würde dann in etwa so aussehen
<syntaxhighlight lang="bash" line copy>
  --- a/ORIGINALDATEI
  --- a/ORIGINALDATEI
  +++ b/VERBESSERTE_DATEI
  +++ b/VERBESSERTE_DATEI
  @@ -1,8 +1,9 @@
  @@ -1,8 +1,9 @@
  Gleich 1
Gleich 1
  Gleich 2
Gleich 2
  Gleich 3
Gleich 3
  +       Unterschied 1
  +   Unterschied 1
  +       Unterschied 2
  +   Unterschied 2
  -       Unterschied 3
  -   Unterschied 3
  -       Unterschied 4
  -   Unterschied 4
  +       Unterschied 5
  +   Unterschied 5
        Gleich 4
    Gleich 4
        Gleich 5
    Gleich 5
        Gleich 6
    Gleich 6
</syntaxhighlight>


Nach Angabe der Dateien, in welcher Zeile man sich befindet und wie viele Zeilen es vorher und danach sind, kommen die drei gleichgebliebenen Zeilen. Die Angabe der Verzeichnisse ('''a/''' und '''b/''') dient nur als Platzhalter, falls Dateien bereits vorhanden sind. Zeilen mit <tt>+</tt> sind dazugekommen, Zeilen mit <tt>-</tt> weggenommen und Zeilen mit einem Leerzeichen "<tt> </tt>" gleichgeblieben.
Nach Angabe der Dateien, in welcher Zeile man sich befindet und wie viele Zeilen es vorher und danach sind, kommen die drei gleichgebliebenen Zeilen. Die Angabe der Verzeichnisse ('''a/''' und '''b/''') dient nur als Platzhalter, falls Dateien bereits vorhanden sind. Zeilen mit <tt>+</tt> sind dazugekommen, Zeilen mit <tt>-</tt> weggenommen und Zeilen mit einem Leerzeichen "<tt> </tt>" gleichgeblieben.
<syntaxhighlight lang="bash" highlight="1" line>
 
</syntaxhighlight>
<syntaxhighlight lang="bash" highlight="1" line copy>
diff -uNr ORDNER1 ORDNER2 > DIFFORDNER.diff  
diff -uNr ORDNER1 ORDNER2 > DIFFORDNER.diff  


Der Inhalt der Datei DIFFORDNER.diff:  
Der Inhalt der Datei DIFFORDNER.diff:  
<syntaxhighlight lang="bash" highlight="1" line>
<syntaxhighlight lang="bash" highlight="1" line copy>
</syntaxhighlight>
</syntaxhighlight>
  diff -uNr ORDNER1/DATEI3 ORDNER2/DATEI3
  diff -uNr ORDNER1/DATEI3 ORDNER2/DATEI3
Zeile 217: Zeile 217:
  +++ ORDNER2/DATEI3
  +++ ORDNER2/DATEI3
  @@ -0,0 +1,5 @@
  @@ -0,0 +1,5 @@
  +       Unterschied 1
  +   Unterschied 1
  +       Unterschied 2
  +   Unterschied 2
  +       Unterschied 3
  +   Unterschied 3
  +       Unterschied 4
  +   Unterschied 4
  +       Unterschied 5
  +   Unterschied 5
</syntaxhighlight>


Hier wurden die Ordner verglichen und in den <tt>-</tt> und <tt>+</tt>-Zeilen mit angegeben. Da '''DATEI3''' noch nicht in '''ORDNER1''' vorhanden (0,0) ist, werden die Zeilen 1-5 einfach eingefügt.  
Hier wurden die Ordner verglichen und in den <tt>-</tt> und <tt>+</tt>-Zeilen mit angegeben. Da '''DATEI3''' noch nicht in '''ORDNER1''' vorhanden (0,0) ist, werden die Zeilen 1-5 einfach eingefügt.  


Somit wird die Datei bei einem Anwenden von [http://wiki.ubuntuusers.de/patch patch] erstellt.
Somit wird die Datei bei einem Anwenden von [https://wiki.ubuntuusers.de/patch patch] erstellt.
 


=== Problembehebung ===
=== Problembehebung ===
Zeile 233: Zeile 233:


=== Dateien ===
=== Dateien ===
{| class="wikitable options"
{| class="table table-striped table-hover options"
|-
|-
! Datei !! Beschreibung
! Datei !! Beschreibung
Zeile 247: Zeile 247:
{{Special:PrefixIndex/{{BASEPAGENAME}}/}}
{{Special:PrefixIndex/{{BASEPAGENAME}}/}}


==== Dokumentation ====
=== Dokumentation ===


; Man-Page  
; Man-Page  
Zeile 253: Zeile 253:
; Info-Page
; Info-Page


==== Links ====
=== Links ===
===== Projekt =====
==== Projekt ====
# https://www.gnu.org/software/diffutils/
# https://www.gnu.org/software/diffutils/


===== Weblinks =====
==== Weblinks ====


{{DEFAULTSORT:diff}}
{{DEFAULTSORT:diff}}
Zeile 265: Zeile 265:
[[Kategorie:Linux/Befehl]]
[[Kategorie:Linux/Befehl]]
[[Kategorie:Linux/Diffutils]]
[[Kategorie:Linux/Diffutils]]
[[Kategorie:new]]


</noinclude>
</noinclude>

Aktuelle Version vom 29. Juli 2026, 10:56 Uhr

diff - Vergleicht zwei Dateien

Beschreibung

Installation

diff ist Teil des Pakets Diffutils

Aufruf

Optionen

Unix GNU Parameter Beschreibung

Parameter

Umgebungsvariablen

Exit-Status

Anwendung

diff Datei1 Datei2

Will man nur wissen ob eine Datei sich inhaltlich von einer anderen Datei unterscheidet, kann der Parameter q verwendet werden:

diff -q Datei1 Datei2

Unterscheiden sich die Dateien, gibt diff eine entsprechende Meldung aus, ansonsten erfolgt keine Ausgabe. Dateien datei1 und datei2 sind verschieden.

Ohne den Parameter q zeigt diff die Unterschiede an, das sieht zum Beispiel so aus

diff beispiel2 beispiel1
 1,2c1,2
 < Das ist ein Beispieltext für einen Blogartikel.
 < Diese Datei heisst beispiel2.
 ---
 > Das hier ist ein Beispieltext.
 > Diese Datei heisst beispiel1.
 6C6
 < Nicht eingerückter Text.
 ---
 >    Eingerückter Text.
 8A9,10
 >
 > Mit noch mehr Text.
Diff zeigt immer an, was man in der zweiten Datei ändern müsste, damit sie der ersten Datei entspricht.

Die erste Zeile (1,2c1,2) bedeutet: Zeile 1 und Zeile 2 der zweiten Datei müssen verändert (c steht für change, das englische Wort für Ändern) werden, damit sie Zeile 1 und 2 der ersten Datei entsprechen. Außerdem wird der Inhalt der Zeilen angezeigt, so sieht man gleich was man ändern müsste.

Datei:Grafik18.png

Außer c für change gibt es noch a, das steht für Anhängen (append), und d für Löschen (delete). 8a9,10 bedeutet also, das hinter Zeile 8 noch Text eingefügt werden muss, nämlich die Zeilen 9 und 10 der zweiten Datei.

Ansicht ändern

Es gibt auch noch zwei andere Ausgabeformate. Das eine ist das Kontext-Format, dabei werden zu jeder Zeile, die verändert werden muss, auch noch die vorangehenden und folgenden 3 Zeilen angezeigt.

Die ersten beiden Zeilen geben an, welche Dateien verglichen werden, und das Inhalte aus der ersten Datei mittels Sternchen (***) und Inhalte aus der zweiten Zeile mittels Bindestrichen (---) gekennzeichnet werden.

diff -c beispiel2 beispiel1
 *** beispiel2 </nowiki> 2009-05-12 22:01:52.000000000 +0200
 --- beispiel1  2009-05-12 20:26:48.000000000 +0200
 <nowiki>***************</nowiki>
 <nowiki>*** 1,8 ****</nowiki>
 ! Das ist ein Beispieltext für einen Blogartikel.
 ! Diese Datei heisst beispiel2.
 
  Lorem ipsum.
 
 ! Nicht eingerückter Text.
 
  Hier geht es noch weiter.
 --- 1,10 ----
 ! Das hier ist ein Beispieltext.
 ! Diese Datei heisst beispiel1.
 
  Lorem ipsum.
 
 !    Eingerückter Text.
 
  Hier geht es noch weiter.
 +
 + Mit noch mehr Text.

Änderungen werden durch ein Ausrufezeichen, hinzuzufügende Zeilen mit einem Plus, zu entfernende Zeilen mit einem Minus gekennzeichnet.

Außerdem ist es möglich die Inhalte der beiden Dateien nebeneinander anzuzeigen.

diff -y beispiel2 beispiel1
 Das ist ein Beispieltext für einen Blogartikel.        | Das hier ist ein Beispieltext.
 Diese Datei heisst beispiel2.                 | Diese Datei heisst beispiel1.
 
 Lorem ipsum.                          Lorem ipsum.
 
 Nicht eingerückter Text.                   |     Eingerückter Text.
 
 Hier geht es noch weiter.                    Hier geht es noch weiter.
                                >
                                > Mit noch mehr Text.
 Was kann diff noch?

Möchte man drei Dateien miteinander vergleichen kann man anstatt diff den Befehl diff3 verwenden.

diff3 beispiel1 beispiel2 beispiel3
 <nowiki>====1</nowiki>
 1:1,2c
  Das hier ist ein Beispieltext.
  Diese Datei heisst beispiel1.
 2:1,2c
 3:1,2c
  Das ist ein Beispieltext für einen Blogartikel.
  Diese Datei heisst beispiel2.

Es ist auch möglich mit diff den Inhalt von Verzeichnissen zu vergleichen, diff zeigt dann an, welche Dateien nur in einem der beiden Verzeichnisse existieren. Der Parameter r weist diff an, auch Unterverzeichnisse zu überprüfen.

diff -r verz1 verz2
 Nur in verz1: datei3.

Wenn man längere Texte miteinander vergleicht und die Ausgabe nicht mehr auf den Bildschirm passt kann man sie auch an ein Programm wie less übergeben:

diff datei1 datei2 | less

Anschließend kann man bequem durch die Ausgabe von diff scrollen.

Beispiele

diff -q DATEI1 DATEI2
 Dateien DATEI1 und DATEI2 unterscheiden sich
 diff DATEI1 DATEI2 
 4,6c4,5
 <    Unterschied 1
 <    Unterschied 2
 <    Unterschied 5
 ---
 >    Unterschied 3
 >    Unterschied 4

Zuerst gibt diff an, in welcher Zeile sich die Unterschiede befinden. Zeilen mit < sind in der ersten Datei vorhanden und Zeilen mit > in der zweiten.

Vergleichen von Ordnern
diff -s ORDNER1 ORDNER2
 Dateien ORDNER1/DATEI1 und ORDNER2/DATEI1 sind identisch
 Dateien ORDNER1/DATEI2 und ORDNER2/DATEI2 sind identisch
 Nur in ORDNER2: DATEI3

Patchdatei erstellen

Wer sich mit Programmierung, Bugs oder dem Verbessern von Programmen beschäftigt, benutzt diff um Änderungen per Versionsverwaltung mitzuteilen. Um nicht alle Codedateien mit Änderungen auszutauschen, werden nur die geänderten Stellen im Diff-Format gespeichert. Der so erstellte Diff kann dann als Patch (beispielsweise mit patch) angewandt werden.

Folgende Optionen von diff sind außerdem noch für das Erstellen einer Patchdatei interessant:

-q ignoriert in diesem Fall fehlende Dateien
-u für unified, gibt NUM (Standard 3) der unveränderten Zeilen aus
-N für New, erstellt fehlende Dateien

Beispiele

diff -uNr ORIGINALDATEI VERBESSERTE_DATEI > DIFFDATEI.diff

Die Datei '''DIFFDATEI.diff''' würde dann in etwa so aussehen
<syntaxhighlight lang="bash" line copy>
 --- a/ORIGINALDATEI
 +++ b/VERBESSERTE_DATEI
 @@ -1,8 +1,9 @@
 Gleich 1
 Gleich 2
 Gleich 3
 +    Unterschied 1
 +    Unterschied 2
 -    Unterschied 3
 -    Unterschied 4
 +    Unterschied 5
     Gleich 4
     Gleich 5
     Gleich 6

Nach Angabe der Dateien, in welcher Zeile man sich befindet und wie viele Zeilen es vorher und danach sind, kommen die drei gleichgebliebenen Zeilen. Die Angabe der Verzeichnisse (a/ und b/) dient nur als Platzhalter, falls Dateien bereits vorhanden sind. Zeilen mit + sind dazugekommen, Zeilen mit - weggenommen und Zeilen mit einem Leerzeichen " " gleichgeblieben.

diff -uNr ORDNER1 ORDNER2 > DIFFORDNER.diff 

Der Inhalt der Datei DIFFORDNER.diff: 
<syntaxhighlight lang="bash" highlight="1" line copy>
diff -uNr ORDNER1/DATEI3 ORDNER2/DATEI3
--- ORDNER1/DATEI3
+++ ORDNER2/DATEI3
@@ -0,0 +1,5 @@
+    Unterschied 1
+    Unterschied 2
+    Unterschied 3
+    Unterschied 4
+    Unterschied 5

</syntaxhighlight>

Hier wurden die Ordner verglichen und in den - und +-Zeilen mit angegeben. Da DATEI3 noch nicht in ORDNER1 vorhanden (0,0) ist, werden die Zeilen 1-5 einfach eingefügt.

Somit wird die Datei bei einem Anwenden von patch erstellt.

Problembehebung

Konfiguration

Dateien

Datei Beschreibung


Anhang

Siehe auch

Dokumentation

Man-Page
Info-Page

Projekt

  1. https://www.gnu.org/software/diffutils/