1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

はじめての記事投稿
Qiita Engineer Festa20242024年7月17日まで開催中!

ターミナルにコピペ(中間ファイルなし)でハッシュサムを文字単位で比較する(shasum)

Last updated at Posted at 2024-06-16

ハッシュ値をクリップボードから確認したかった

ファイルをDLしたときに、いちいちハッシュファイルを用意するのが面倒だったのでコピペでなんとかならないかと思っていた。
調べたところ、echoからパイプで繋いでmd5sum -c -に投げる方法も見つかったが、shasumだとフォーマットが違うのかうまくチェックしてくれなかった。
普通のdiffだと行単位なのであまり意味がなく困っていたが、git diffで柔軟に比較単位を決められるとわかったのでメモ。

コマンド
#もしまだgitをインストールしていなければ先に`brew install git`する
git diff —-word-diff-regex=. -—no-index <(shasum -a 256 FILENAME) <(echo “HASHSUM”)

FILENAMEはDLしたファイル名、HASHSUMにDL元のハッシュ値をコピペする。

説明

  • --word-diff-regex=.が差分を表示する単位になる。
    正規表現を使って.を指定し1文字単位でチェック
  • --no-indexをつけることで、gitの管理下にないファイルも扱えるようになる。
  • <(hoge)で計算したハッシュ値と元サイトのハッシュ値を渡す。

実行結果

git diff --word-diff-regex=. --no-index <(shasum -a 256 HOGEHOGE.txt) <(echo "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855")
diff --git a/dev/fd/11 b/dev/fd/12
--- a/dev/fd/11
+++ b/dev/fd/12
@@ -1 +1 @@
e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855[-  HOGEHOGE.txt-]

とこんな感じで、shasumで出力された内の後半部分[- HOGEHOGE.txt-]だけが差異として表示され、前方のハッシュ値自体は同一であることがわかる。
実際にターミナル上で実行すると色がついてわかりやすいんだけど、Qiita上でのシンタックスハイライトよくわからんかったのでご自身でやってみてください

環境

masOS 13.6.7
zsh
git version 2.45.0

参考文献

↓汎用性の高い手軽な方法が数パターン記載されている

↓gitのコマンドエイリアスに登録して、より手軽に呼び出す方法もまとめられています

<(hoge)についての使い方詳細。複数の引数にそれぞれ処理した内容を渡せるので便利

↓gitの--word-diff-regexについての公式ドキュメント

1
0
2

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
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?