「diff orig new」と「diff new orig」

「diff orig new」と「diff new orig」

を使用して 2 つのファイルを比較する場合difforiginalファイルは最初の引数として提供され、new(変更された) は 2 番目の引数として提供されます。

diff original new

おそらく、この順序付けの背後にあるロジックは、時間の流れを左から右への規則に従って、元のものを新しいものに変換する方法を示すことでした。

このロジックに問題があります。2 つのファイルを比較する場合、直感的に逆の表記を使用します。

diff new original

変更を確認した後、新しいファイルを古いファイルに cat し、新しいバージョンに「パッチ」を適用できるようにします。

cat new > original

しかし、「my」の反転表記を使用すると、diff が+削除と-追加を表示するため、混乱を招きます。

この問題を解決するにはどうすればいいでしょうか?

答え1

--from-file=originalマニュアル ページをざっと見ると、明示的に指定したい場合は、およびオプションを使用できることがわかります--to-file=new。入力する文字数は少し増えますが、必要な柔軟性が得られ、さらに、明示的に指定できるという利点もあります。

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

必要に応じて、ファイル名のみを必要な順序で取得してこれを実行する単純なラッパー スクリプトを作成することもできます。

編集: これは GNU diff 用です...ただし、これが標準 (POSIX) オプションであるかどうかはわかりません。

答え2

簡単な解決策があります!

次のスクリプトを記述します。

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

diff $2 $1

それを PATH 上のフォルダーの 1 つ (または ) に diff2 として保存し/binます/usr/bin

これで完了です。次のように呼び出すことができます。

diff2 newfile oldfileを呼び出します。diff oldfile newfile

関連情報