LoginSignup
5
6

More than 5 years have passed since last update.

本当に比較して一致したのか不安な人向けdiff

Posted at

diffコマンドはファイルの比較結果が一致していると何も表示せずに終わるタイプのコマンドです。その結果何が起こるかというと、自動テストコードのファイル比較処理で実行ログ上何も記録が残らず、

  • 比較処理自体を書き忘れてはいないか
  • 比較元も比較先も生成に失敗した結果両方0バイトなのを成功として通してしまっていないか

などといった不安感の漂う成果物となったりするわけです。

こんなvdiff(Verbose DIFF)コマンドを用意してみてはいかがでしょう。

#!/usr/bin/env bash

diff\
  <(tee <$1 >(echo 左側:`wc -l`行>&2)) \
  <(tee <$2 >(echo 右側:`wc -l`行>&2)) &&\
echo 一致しました>&2
  • 一致ならリザルトは0、それ以外なら>0
  • 一致なら標準出力は汚さない

といったdiffコマンドの基本仕様はそのまま、左右ファイルの行数と、成功した場合は「一致しました」のメッセージを標準エラー出力に出してくれます。

process substitutionという記法を用いているのでshでは動きません。bashかzshで使ってください。

5
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
6