サイトロゴ

diff(colordiff)|シェル

著者画像
Toshihiko Arai

colordiffをインストールしよう

colordiffは、diffの出力を色分けして表示します。これにより、差分の部分(追加、削除、変更)が視覚的に分かりやすくなります。colordiffは、基本的にはdiffコマンドのラッパー(フロントエンド)です。内部でdiffを実行し、その出力に色を付けて表示しているため、機能やオプションはdiffと同じです。

macOSであれば brewcolordiff をインストールできます。

brew install colordiff

diff(colordiff)コマンドの便利なオプション

ローカルファイル同士の比較

ローカルファイル同士の比較は通常のdiffと同じコマンドを使用し、colordiffを代わりに使うだけです。

colordiff file1.txt file2.txt

最も一般的な形式で表示

-u (Unified format) オプションで差分を統合形式で表示します。

colordiff -u file1.txt file2.txt

再帰的に比較

-r (Recursive) オプションでディレクトリ間で再帰的に比較を行います。

colordiff -ur dir1 dir2

空白の違いを無視して比較

-w (Ignore whitespace) オプションで空白の違いを無視します。

colordiff -uw file1.txt file2.txt

大文字・小文字の違いを無視して比較

-i (Ignore case) オプションで大文字と小文字の違いを無視します。

colordiff -ui file1.txt file2.txt

空行の違いを無視して比較

-B (Ignore blank lines) オプションで空行の違いを無視します。

colordiff -uB file1.txt file2.txt

ディレクトリ内のファイルを再起的に比較

ディレクトリ内のファイル群を一括で比較できます。

colordiff -r ディレクトリ1 ディレクトリ2

このコマンドは、ディレクトリ1ディレクトリ2 内のファイルを再帰的に比較し、差分を表示します。diff はファイル名が一致するファイル同士を比較し、異なる部分を表示します。

左右に分割して差分表示

diff コマンドの --side-by-side オプションを利用することで左右分割表示が可能です。

colordiff --side-by-side file1 file2

{{git-first-step.html#特定のファイルをコミット間で差分表示}}

リモートファイルとの比較

リモートファイルとローカルファイルを比較するには、sshを使ってリモートファイルを取得し、diffまたはcolordiffで比較します。

以下の方法が一般的です。

方法1: scpを使用する

リモートファイルを一時的にローカルにコピーしてから比較する方法です。

scp user@remote_host:/path/to/remote_file.txt /tmp/remote_file.txt
colordiff /tmp/remote_file.txt local_file.txt

方法2: sshを使って直接比較

sshを使用してリモートファイルの内容を取得し、diffで比較することもできます。

diff <(ssh user@remote_host 'cat /path/to/remote_file.txt') local_file.txt | colordiff

この方法であれば、リモートファイルを一時的にローカルに保存せずに直接比較できます。

内容が重複しているファイルを見つけるfdupesも便利です。

関連記事