Iso ファイルをダウンロードする際、ハッシュ値でダウンロードが正しく終了したか確認したいことがあります。
ハッシュをとって目視で確認してもいいんだけど、正直面倒です。
sha256sum とか md5sum なんかでできるんだけど、どうしても覚えられないのでメモ
; ハッシュ不一致のときは表示なしになる
$ sha256sum aa.iso |grep -i ハッシュ値
; このパターンだと " のなかでファイル名の補完ができないのでちょっと面倒
$ echo "ハッシュ値 aa.iso" |sha256sum
; bash, zsh などは可、sh だとできない
$ sha256sum -c <<< "<ハッシュ値> aa.iso"どれも一長一短あるけれど、自分の思考のクセでは、後 grep が1番楽に思い出せる。
ついでにスクリプトを claude に書いてもらった。
zsh で動かしているが bash にするには、 1 行目を bazh にして 13、14 行のコメントを入れ替える必要がある。
こうすると スクリプト 対象ファイル名 ハッシュ となり自分の癖では覚えやすい。
1 #!/usr/bin/zsh
2 # usage: checksha256.sh FILE HASH
3 set -euo pipefail
4
5 cmd=sha256sum
6
7 if [ $# -ne 2 ]; then
8 echo "usage: $(basename "$0") FILE HASH" >&2
9 exit 2
10 fi
11
12 file=$1
13 # expected=${2,,} # bash 小文字に統一
14 expected=${2:l} # zsh での小文字化
15
16 if [ ! -f "$file" ]; then
17 echo "error: file not found: $file" >&2
18 exit 2
19 fi
20
21 actual=$("$cmd" < "$file")
22 actual=${actual%% *}
23
24 if [ "$actual" = "$expected" ]; then
25 echo "OK: $file"
26 exit 0
27 else
28 echo "FAILED: $file" >&2
29 echo " expected: $expected" >&2
30 echo " actual: $actual" >&2
31 exit 1
32 fi
コメントを残す