"diff orig new" vs. "diff new orig"

"diff orig new" vs. "diff new orig"

Beim Vergleichen von zwei Dateien mit wird diffdie originalDatei als erstes Argument und new(geändert) als zweites Argument angegeben.

diff original new

Die Logik hinter dieser Anordnung bestand vermutlich darin, zu zeigen, wie das Original in das Neue umgewandelt werden kann, wobei für den Zeitfluss die Konvention von links nach rechts verwendet wurde.

Ich habe Probleme mit dieser Logik. Wenn ich zwei Dateien differenziere, verwende ich intuitiv die inverse Notation:

diff new original

damit ich nach Prüfung der Änderungen die neue Datei in die alte caten und so auf die neue Version „patchen“ kann.

cat new > original

Die Verwendung der invertierten Notation „meine“ ist jedoch verwirrend, da „diff“ +sowohl für Löschungen als auch -für Additionen angezeigt wird.

Wie kann ich dieses Problem lösen?

Antwort1

Ein kurzer Blick auf die Manpage zeigt, dass Sie die Optionen --from-file=originalund verwenden können --to-file=new, wenn Sie explizit sein möchten. Sie müssen zwar etwas mehr tippen, haben aber die nötige Flexibilität und können die Dinge zusätzlich explizit machen.

diff --to-file=new --from-file=original

Wenn Sie möchten, können Sie auch ein einfaches Wrapper-Skript schreiben, das nur die Dateinamen in der gewünschten Reihenfolge übernimmt und diese für Sie ausführt.

BEARBEITEN: Dies ist für GNU Diff … bin mir jedoch nicht sicher, ob dies Standardoptionen (POSIX) sind.

Antwort2

Es gibt eine einfache Lösung!

Schreiben Sie das folgende Skript:

if [ "$#" -ne 2 ]; then
    echo "USAGE: diff2 newfile oldfile"
    exit 1;
fi

diff $2 $1

Speichern Sie es in einem der Ordner auf PATH (vielleicht /binoder /usr/bin) als diff2.

Und das war's, Sie können jetzt anrufen:

diff2 newfile oldfile, das dann aufruftdiff oldfile newfile

verwandte Informationen