내 생각에는 이.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 -
자동 완성이 작동하므로 이 방법이 더 좋지만 시간이 조금 길어질 수 있고 세 단계가 더 필요합니다.
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"
파일 이름이 포함된 한 줄에 모두 표시됩니다(두 가지 솔루션).
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)