を使用して 2 つのファイルを比較する場合diff
、original
ファイルは最初の引数として提供され、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