
私の考えでは、.md5 チェックサムファイルダウンロードの確認に使用されるコンテンツには、主に確認するファイルのチェックサムが含まれていますが、ファイル名は含まれていません。
使用するのはmd5sum
やや非現実的なようです。-氏このように、md5キーとスペースで区切られたファイル名を入力として求めます。
したがって、これらのファイルにはチェックサムのみが含まれているためこれを確認できる最も実用的な文章は何ですか??
この投稿方法を提案しますが、キーとファイル名を手動で入力する必要があります。
md5sum -c - <<< "b4460802b5853b7bb257fbf071ee4ae2 foo"
この投稿次のような興味深い提案がありますが、読んで入力するのは少し難しいです。
cmp foo.md5 <(md5sum foo | awk '{print $1}') && echo $?
この方法は機能しますが、ファイル名を手動で入力する必要があるため実用的ではありません(私のシステムでは自動的に入力されません)。
printf $(cat foo.md5)\\tfoo | md5sum -c -
この操作は自動的に行われますが、恥ずかしい感じです。
printf "%s %s" $(cat foo.md5) foo | md5sum -c -
オートコンプリートが機能するため、この方法は優れていますが、時間が少し長くなり、3つのステップが必要です。
md5sum foo | awk '{printf $1}' | diff foo.md5
別のアイデアがありますか?
答え1
問題は、関連付けたいサイトに標準のmd5ファイルがないことです。
Md5 ファイルには各署名のファイル名はありません。署名とファイル名を再構成する必要があります。
どうですか?
md5sum -c <<<"$b"
または:
md5sum -c <(echo $(<$a.md5) $a)
どこに$a
あり、どこに$b
ありますか?
a="jackson-annotations-2.8.4.jar"
b="$(<jackson-annotations-2.8.4.jar.md5) jackson-annotations-2.8.4.jar"
またはより簡単に:
a=jackson-annotations-2.8.4.jar; b="$(<$a.md5) $a"
ファイル名を含む1行に表示されます(2つの解決策)。
a=jackson-annotations-2.8.4.jar; b="$(<$a.md5) $a"; md5sum -c <<<"$b"
a=jackson-annotations-2.8.4.jar; md5sum -c <(echo $(<$a.md5) $a)
私が使用するスクリプト全体は次のとおりです。
#!/bin/bash
a=jackson-annotations-2.8.4.jar
site=https://repo1.maven.org/maven2/com/fasterxml/jackson/core/jackson-annotations/2.8.4
wget -N "$site/$a"
wget -N "$site/$a.md5"
b="$(<$a.md5) $a"
md5sum -c - <<<"$b"
答え2
これは、ファイルで非標準のmd5チェックサムラインを使用したときに得られる最良の結果です。次のコード行はファイルから値をコピーする必要はなく、ファイル名自体とmd5と
md5sum -c <<< $(echo $(cat jackson-annotations-2.8.4-javadoc.jar.md5) jackson-annotations-2.8.4-javadoc.jar)