読者です 読者をやめる 読者になる 読者になる

write ahead log

ロールフォワード用

cmpコマンド[POSIXコマンド]

cmpコマンドは1byte単位でファイルを比較できるコマンドです.

例として下記の様なファイルを用意します.

$ cat greeting1.txt
Hello, World.
$ cat greeting2.txt
hello,world

比較してみます.

$ cmp greeting1.txt greeting2.txt
greeting1.txt greeting2.txt 異なります: バイト 1、行 1

cmpコマンドは戻り値を返します.そしてそちらの方が使えます.

戻り値 状態
0 差分なし
1 差分あり
2 エラー

$ cmp greeting1.txt greeting2.txt 
greeting1.txt greeting2.txt 異なります: バイト 1、行 1
$ echo $?   # $?は終了ステータスを返すシェルの特殊変数
1

$ cmp greeting1.txt greeting1.txt 
$ echo $?
0

オプション

オプション 内容
-s 結果出力を抑制します
-l 違いのあるバイトのオフセット(10進数)とその値(8進数)を表示します

$ cmp -s greeting1.txt greeting2.txt 
$ 


$ cmp -l greeting1.txt greeting2.txt 
 1 110 150
 7  40 167
 8 127 157
 9 157 162
10 162 154
11 154 144
12 144  12
cmp: greeting2.txt でファイル終端 (EOF) に達しました

シェルスクリプト組むときには使えるタイプのコマンドっぽいですね.