次のコマンドを入力して実行するとします。
sha256sum ubuntu-18.04.1-desktop-amd64.iso
遅延後の出力は次のようになります。
5748706937539418ee5707bd538c4f5eabae485d17aa49fb13ce2c9b70532433 ubuntu-18.04.1-desktop-amd64.iso
その後、SHA-256ハッシュが一致するかどうかをより早く評価するには、次のコマンドを入力する必要があることに気づきました。
sha256sum ubuntu-18.04.1-desktop-amd64.iso | grep 5748706937539418ee5707bd538c4f5eabae485d17aa49fb13ce2c9b70532433
チェックサムを再確認するコマンドを使用せずにsha256sum
最初の出力で作業する方法はありますか(つまり、それによって発生する遅延を防ぎます)?具体的には:
- 次のコマンドを使用してこれを行う方法を知りたいです。確かに最初の出力のチェックサムをコピーして貼り付ける必要があります(可能な場合)。
- 次のコマンドを使用してこれを行う最も簡単な方法を知りたいです。する最初の出力のチェックサムをコピーして貼り付ける必要があります。 (単に
grep
二重引用符(文字列など)でチェックサムを貼り付けようとすると機能しません。)
答え1
.bashrc
または、構成から単純な関数を生成し、.zshrc
次のように実行できます。
sha256 <expected-sha-256-sum> <name-of-the-file>
単一コマンドで予想される sha256 合計を実際の合計と比較します。
その機能は次のとおりです。
sha256() {
printf '%s %s\n' "$1" "$2" | sha256sum --check
}
お願いします詳しくはこちらをご覧ください。
答え2
Q1:(可能であれば)最初の出力のチェックサムをコピーして貼り付ける必要のないコマンドでこれを行う方法を知りたいです。
Bash
以前に実行したコマンドの出力を呼び出すメカニズムは提供されていません。後続のコマンドで操作を実行したい場合は、明示的にキャプチャする必要があります。
Q2:最初の出力のチェックサムをコピーして貼り付ける必要があるコマンドを使用して、これを行う最も簡単な方法を知りたいです。 (二重引用符(文字列など)で付けられたチェックサムをgrepしようとすると機能しません。)
したがって、ここで唯一のオプションは、前のコマンドの出力をコピーして貼り付けることです。試してみると、これがうまくいかない理由について説明します。使用すると、チェックサム文字列を変更するecho <sha1sum>
改行文字()という追加の文字が導入されるため、これは失敗する可能性があります。\n
文字列をハッシュ関数(またはmd5
)にエコーするときは、通常、文字列の末尾に追加される改行文字を無視するように指示することをお勧めしますsha256sum
。echo -n <..>
echo
次のように、これがハッシュ関数呼び出しにどのような影響を与えるかを確認できます。
$ echo "blah" | sha256sum
41af286dc0b172ed2f1ca934fd2278de4a1192302ffa07087cea2682e7d372e3 -
$ echo -n "blah" | sha256sum
8b7df143d91c716ecfa5fc1730022f6b421b05cedee8fd52b1fc65a96030ad52 -
文字列「blah」の実際のハッシュは2番目の呼び出しです。
答え3
一致するかどうかを確認しているようです。-c
(--check
)オプションの使用を検討しましたかsha256sum
?
答え4
@Sashaは正しいアプローチを持っています。SHA256SUM
左側にハッシュがあり、右側にファイルパスがあるファイルを受け取った場合は、次のことができます。
sha256sum --check SHA256SUM 2>/dev/null | grep 'OK'
それ以外の場合は、アーカイブのためにチェックサムファイルを作成/追加してから、ハッシュを計算して比較できます。
function checksums {
echo "$3 $2" | tee -a SHA256SUMS
"$1" --check SHA256SUMS 2>/dev/null | grep 'OK'
}
checksums sha256sum 'ubuntu-18.04.1-desktop-amd64.iso' '5748706937539418ee5707bd538c4f5eabae485d17aa49fb13ce2c9b70532433'
これにより、すべてのファイルとハッシュの記録が得られます。