diffでスペース・タブ・改行コード・空行の違いを無視するオプション

例)diff -BwE –strip-trailing-cr old new
–strip-trailing-cr Strip trailing carriage return on input.
-B Ignore changes whose lines are all blank.
-E Ignore changes due to tab expansion.
-w Ignore all white space.

あとは-u(行番号表示)なり-qr(quickとdir再帰)なり好きなオプションを付けて試します。

Monacoinを投げる
モナゲ(tipmona)ってなに?
そもそもMonacoinってなに?

diffとpatch

これは便利いいなー。今時はcvsというツールもあるが、そっちの方はまだよく使い方が判ってないので暫くはdiffで。

まず、hello.cの中のprintf文で表示するテキストの内容を変えてみる。差分を取るためには2つファイルが必要になるのでhello.cとコピーした後編集したファイルのhello2.cを作成。

# cp hello.c hello2.c
# vi hello2.c

次にdiffコマンドを使い差分をとる、因みにオプション無しの場合はファイル情報が出力されなかったのでpatchの当て方が判らなかったので-cか-uを使用する。両者の違いは次の通り。

# diff -u hello.c hello2.c
— hello.c Fri Dec 23 17:56:29 2005
+++ hello2.c Fri Dec 23 17:58:05 2005
@@ -2,7 +2,7 @@

int main()
{
– printf(“Hello, world!n”);
+ printf(“ハローワールド!n”);
return 0;
}

# diff -c hello.c hello2.c
*** hello.c Fri Dec 23 17:56:29 2005
— hello2.c Fri Dec 23 17:58:05 2005
***************
*** 2,8 ****

int main()
{
! printf(“Hello, world!n”);
return 0;
}

— 2,8 —-

int main()
{
! printf(“ハローワールド!n”);
return 0;
}

-cだと2つのソース全てを書き出してかなり冗長している。これなら-uでいいかな。通常はこれを差分ファイルとして保存するのでコマンドは『diff -c hello.c hello2.c > hello.diff』の様にする。

そして、実際にhello.cをhello2.cの状態にするには、
# patch < hello.c
でOK。もう一度同じコマンドを使用すると確認を要求されるがpacheを当てる前に戻してくれる。

Monacoinを投げる
モナゲ(tipmona)ってなに?
そもそもMonacoinってなに?