web-dev-qa-db-ja.com

1つのコマンドラインを使用してチェックサムを確認する方法

次のコマンドを入力して実行するとします。

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コマンドを使用せずに最初の出力に基づいてチェックサムをもう一度確認する方法はありますか(つまり、そうすることによって発生する遅延を回避するため)?具体的には:

  1. しないのコマンドを使用してこれを行う方法を知りたいのですが、可能であれば、最初の出力のチェックサムのコピーと貼り付けが必要です。
  2. doesが最初の出力のチェックサムのコピーと貼り付けを必要とするコマンドを使用してこれを行う最も簡単な方法を知りたいです。 (二重引用符で囲まれたチェックサム(つまり文字列として)に対してgrepを使用するだけでは機能しません。)
3
Patrick Dark

Q1:(可能であれば)最初の出力のチェックサムのコピーと貼り付けを必要としないコマンドを使用してこれを行う方法を知りたいのですが。

Bashには、以前に実行したコマンドからの出力を呼び出すメカニズムはありません。後続のコマンドでアクションを実行する場合は、明示的にキャプチャする必要があります。

Q2:最初の出力のチェックサムのコピーと貼り付けを必要とするコマンドを使用してこれを行う最も簡単な方法を知りたいのですが。 (二重引用符で囲まれたチェックサム(つまり文字列として)に対してgrepを使用しようとするだけでは機能しません。)

したがって、ここでの唯一のオプションは、前のコマンドからの出力をコピー/貼り付けることです。あなたがそれを試みたときにこれがあなたにとってうまくいかなかった理由に関して。 _echo <sha1sum>_を使用すると、チェックサム文字列を変更する追加文字、改行(_\n_)が導入されたため、これは失敗した可能性があります。

_md5_や_sha256sum_などのハッシュ関数に文字列をエコーする場合、echoに文字列の末尾に改行を追加しないように指示する_echo -n <..>_を実行するのが一般的に最善です。

これがハッシュ関数の呼び出しにどのように影響するかを確認できます。

_$ echo "blah" | sha256sum
41af286dc0b172ed2f1ca934fd2278de4a1192302ffa07087cea2682e7d372e3  -

$ echo -n "blah" | sha256sum
8b7df143d91c716ecfa5fc1730022f6b421b05cedee8fd52b1fc65a96030ad52  -
_

文字列 'blah'の真のハッシュは2番目の呼び出しです。

2
slm

一致をチェックしているようです。 -c--checksha256sum)オプションを使用することを検討しましたか?

2
RudiC

.bashrcまたは.zshrc構成で単純な関数を作成し、次の方法で実行できます。

sha256 <expected-sha-256-sum> <name-of-the-file>

単一のコマンドで、期待されるsha256合計を実際の合計と比較します。

関数は次のとおりです。

sha256() {
    echo "$1 $2" | sha256sum --check
}

詳細はこちら をご覧ください。

1
Sasha Shpota