Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ diff(1) — Reliant UNIX 5.44c4

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

bdiff(1)

cmp(1)

comm(1)

diff3(1)

dircmp(1)

ed(1)

pr(1)

diff(1)                                                             diff(1)

NAME
     diff - Dateien zeilenweise vergleichen (differential)

SYNTAX
     diff [option ...] datei1 datei2

BESCHREIBUNG
     Das Kommando diff vergleicht die Inhalte von datei1 und datei2 und
     schreibt nach Standardausgabe eine Liste von Änderungen, die notwendig
     sind, um datei1 nach datei2 zu konvertieren. Diese Liste sollte mini-
     mal sein. Wenn die Dateien identisch sind, wird keine Ausgabe erzeugt.

OPTIONEN
     Keine Option angegeben:
          Wenn die verglichenen Dateien gleich sind, gibt diff nichts aus.
          Wenn die verglichenen Dateien Unterschiede aufweisen, gibt diff
          aus:

          1.  Zeile[nbereich] aus   ed-Kommando   Zeile[nbereich] aus
              datei1                              datei2

          2.  Zeilen, die nur in datei1 stehen

          3.  Zeilen, die nur in datei2 stehen

          Die Ausgabe hat folgendes Format:

                        a
          1.  n1[,n2]   d   n1[,n2]
                        c

          2. < Text einer Zeile aus datei1
                   .
                   .
                   .
                   - - -

          3. > Text einer Zeile aus datei2
                   .
                   .
                   .

          a, d und c sind ed-ähnliche Kommandos. Sie bedeuten:












Seite 1                      Reliant UNIX 5.44               Gedruckt 11/98

diff(1)                                                             diff(1)

          a   (append)   anfügen
          d   (delete)   löschen
          c   (change)   ändern

          Die Ausgabe lesen Sie folgendermaßen:

          Die ed-Kommandos a, d und c mit den davorstehenden Zeilen-
          (bereichs)angaben zeigen, wie datei1 in datei2 umzuwandeln ist.

          Wenn Sie a durch d und d durch a ersetzen und die rechts stehen-
          den Zeilen(bereichs)angaben verwenden, sehen Sie, wie datei2 in
          datei1 umzuwandeln ist. Zeilen aus datei1 sind mit < gekennzeich-
          net, aus datei2 mit >.

     -a   diff gibt alle Zeilen von datei1 und datei2 aus. Zeilen, die nur
          in datei1 vorkommen, werden mit einem Strich - gekennzeichnet.
          Zeilen, die nur in datei2 vorkommen, werden mit einem Pluszeichen
          + gekennzeichnet. Zeilen, die in beiden Dateien identisch sind,
          werden mit einem Leerzeichen <blank> gekennzeichnet.

     -b   diff berücksichtigt weder Leerzeichen und Tabulatorzeichen am
          Zeilenende, noch unterschiedlich lange Folgen von Leerzeichen
          innerhalb von Zeilen an derselben Stelle. Leerzeichen am Zeilen-
          anfang werden als Differenz ausgegeben, ebenso Leerzeilen.

     -i   Nicht mit Option -h zu verwenden.

          diff berücksichtigt Groß- und Kleinschreibung nicht, z. B. wird
          "A" nicht von "a" unterschieden.

     -t   diff expandiert Tabulatorzeichen in der Ausgabe. Bei Option -c
          oder normaler Ausgabe fügt diff gelegentlich am Zeilenanfang Zei-
          chen ein, die die Einrückung der ursprünglichen Zeilen verfäl-
          schen und dadurch die Interpretation der Ausgabe erschweren.
          Diese Option erhält die ursprüngliche Einrückung aufrecht.

     -w   diff berücksichtigt keine Leer- und Tabulatorzeichen und unter-
          scheidet nicht zwischen verschieden langen Folgen von Leer- und
          Tabulatorzeichen. Z. B. wird die Zeichenkette "if ( a = = b )"
          als identisch mit "if(a==b)" angesehen.














Seite 2                      Reliant UNIX 5.44               Gedruckt 11/98

diff(1)                                                             diff(1)

     Die folgenden Optionen schließen sich gegenseitig aus:

     -c   diff erzeugt eine dreiteilige Liste, wobei das Ausgabeformat
          leicht abgeändert ist. Zuerst werden Namen und Entstehungsdatum
          von datei1 und datei2 angezeigt. Dann werden die Kontrastzeilen
          ausgegeben, wobei die Zeilen, die nicht in datei2 vorkommen, mit
          einem Minuszeichen - versehen sind, die Zeilen, die nicht in
          datei1 vorkommen, mit einem Pluszeichen + versehen sind und die
          Zeilen, die sich in datei1 und datei2 unterscheiden, mit einem
          Ausrufezeichen ! versehen sind. Zusätzlich werden die drei Zeilen
          vor und die drei Zeilen hinter den jeweiligen Kontrastzeilen aus-
          gegeben.

     -C zahl
          diff gibt im gleichen Format aus wie bei der Option -c, zeigt
          jedoch außer den sich unterscheidenden Stellen auch jeweils zahl
          Zeilen davor und zahl Zeilen dahinter an.

     -e   Nicht mit Option -h, -l oder -s zu verwenden.

          diff erzeugt ein ed-Skript und gibt es aus. Das ed-Skript enthält
          die Kommandos a, d und c, sowie die zugehörigen Textzeilen, mit
          denen der Editor ed datei1 in datei2 umwandeln kann. Hierfür muß
          das ed-Skript an den Editor ed als Eingabe übergeben werden. Vor-
          her müssen allerdings die Anweisungen w und q an das Ende des
          ed-Skripts geschrieben werden. Außerdem müssen Sie an den Anfang
          das Kommando e datei1 setzen [siehe ed(1)].

     -f   Nicht mit Option -h zu verwenden.

          diff erzeugt ein ähnliches Skript wie bei Option -e, nur in der
          umgekehrten Richtung. Dieses Skript eignet sich aber nicht als
          Eingabe für ed.

          Die unter -e und -f erstellten ed-Skripts sind möglicherweise
          nicht korrekt, wenn die verglichenen Zeilen nur aus einem einzel-
          nen Punkt . bestehen.

     Die folgenden Optionen beeinflussen die Arbeitsweise von diff:

     -h   Nicht mit Option -e, -f, -i, -c, -C, -n und -D zu verwenden.

          diff arbeitet schneller, und die Dateien können beliebig lang
          sein. Allerdings ist das Ergebnis bei Option -h nicht zuverläs-
          sig!

     -n   diff erzeugt, ähnlich wie bei der Option -e, ein Skript. Dort
          stehen die ed-Kommandos jedoch in umgekehrter Reihenfolge. Außer-
          dem steht hinter jedem Insert- oder Delete-Kommando die Anzahl
          der zu ändernden Zeilen.




Seite 3                      Reliant UNIX 5.44               Gedruckt 11/98

diff(1)                                                             diff(1)

     -D zeichenkette
          datei1 und datei2 sollten in diesem Fall C-Quellprogramme oder
          C-Quellprogrammteile enthalten. diff erzeugt ein C-Quellprogramm
          aus datei1 und datei2, in das es Angaben für den C-Präprozessor
          einfügt. Wird dieses Programm übersetzt, dann entsteht eine über-
          setzte datei1, wenn zeichenkette nicht definiert ist. Es ergibt
          sich eine übersetzte datei2, wenn zeichenkette definiert ist.

     Die folgenden Optionen werden zum Vergleich von Verzeichnissen verwen-
     det:

     -l   diff gibt im langen Format aus. Vor der Ausführung von diff wird
          jede Textdatei in Seiten zerteilt, indem sie durch eine Pipeline
          zu pr gesendet wird. Weitere Unterschiede werden gesammelt und am
          Stück ausgegeben, nachdem alle textspezifischen Unterschiede
          angezeigt sind.

     -r   diff arbeitet rekursiv alle gemeinsamen Unterverzeichnisse ab.

     -s   diff zeigt an, welche Dateien übereinstimmen. Standardmäßig
          unterbleibt dies.

     -S name
          diff bearbeitet ein Verzeichnis erst ab der Datei name.

     --   Ende der Optionenliste. Die Angabe ist nötig, wenn datei1 mit -
          beginnt.

     datei1 datei2
          Namen der Dateien, die diff vergleichen soll. Ist datei1 ein Ver-
          zeichnis, dann wird aus diesem Verzeichnis die Datei datei2 für
          den Vergleich mit datei2 herangezogen. Ist datei2 ein Verzeich-
          nis, dann wird mit datei1 aus diesem Verzeichnis verglichen.

ENDESTATUS
     0   Dateien sind identisch

     1   Dateien sind nicht identisch

     >1  Eingabefehler

FEHLERMELDUNGEN

     diff: two filename arguments required

     Sie haben eine falsche Anzahl Dateien angeben. Es können nur zwei
     Dateien verglichen werden.







Seite 4                      Reliant UNIX 5.44               Gedruckt 11/98

diff(1)                                                             diff(1)

     diff: No such file or directory

     Eine der angegebenen Dateien existiert nicht.

     diff: files too big, try -h

     Sie müssen die Option -h angeben, da die zu vergleichenden Dateien zu
     groß sind.

     diff: Permission denied

     Sie haben kein Leserecht für eine der angegebenen Dateien.

INTERNATIONALE UMGEBUNG
     Die Umgebungsvariable LCMESSAGES bestimmt die Sprache der Meldungs-
     texte.

     Wenn LCMESSAGES nicht oder als leere Zeichenkette definiert ist, wird
     der Wert von LANG als Standardwert herangezogen. Ist auch LANG nicht
     oder als leere Zeichenkette definiert, verhält sich das System so, als
     wäre es nicht internationalisiert.

     Die Umgebungsvariable LCALL bestimmt die gesamte internationale Umge-
     bung. LCALL hat Vorrang vor allen anderen Umgebungsvariablen im
     Bereich der Internationalisierung.

BEISPIELE
     Beispiel 1

     Die Dateien datei1 und datei2 haben folgenden Inhalt:

     datei1:         datei2:

     Amsel Drossel   Amsel und Drossel
     Fink und Star   Fink Star
     und die ganze   Vogelschar
     Vogelschar

     Mit dem Aufruf von diff können Sie genau feststellen, in welchen Zei-
     len sich die beiden Dateien unterscheiden:

     $ diff datei1 datei2
     1,3c1,2
     <Amsel Drossel
     <Fink und Star
     <und die ganze
     ---
     >Amsel und Drossel
     >Fink Star





Seite 5                      Reliant UNIX 5.44               Gedruckt 11/98

diff(1)                                                             diff(1)

     Das bedeutet: Um aus datei1 datei2 zu erzeugen, müssen die Zeilen 1
     bis 3 aus datei1 (1,3) ersetzt werden (c) durch die Zeilen 1 bis 2
     (1,2) aus datei2. Was in diesen Zeilen jeweils steht, ist an den mit <
     oder > beginnenden Ausgabezeilen zu sehen: mit < beginnen die Zeilen,
     die nur in datei1, mit > die Zeilen, die nur in datei2 stehen.

     Beispiel 2

     Dateien vergleichen und ein ed-Skript erstellen:

     Inhalt von datei1:   Inhalt von datei2:

     heute ist Montag     heute ist Dienstag
     es ist kalt          es ist Herbst
                          es ist kalt

     Nach folgendem Aufruf gibt diff die ed-Kommandos aus, mit denen ed
     datei1 in datei2 umwandeln kann. Um das Resultat dieses Aufruf als
     Eingabe für den ed benutzen zu können, müssen Sie noch die Anweisungen
     w und q anfügen [siehe ed(1)].

     $ diff -e datei1 datei2
     1c
     heute ist Dienstag
     es ist Herbst
     .
     $

SIEHE AUCH
     bdiff(1), cmp(1), comm(1), diff3(1), dircmp(1), ed(1), pr(1).
























Seite 6                      Reliant UNIX 5.44               Gedruckt 11/98

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026