한 줄에 체크섬을 생성/확인하시겠습니까?

한 줄에 체크섬을 생성/확인하시겠습니까?

파일에 대한 체크섬을 생성할 때 올바른 형식을 지정하기 위해 몇 가지 추가 작업을 수행해야 합니다.

CHECKSUM="$(shasum "$file" | cut -b 1-40)"
echo -n "$CHECKSUM" > "$file.sha"

이는 파일에 체크섬 자체만 있고(따라서 cut) 파일 끝에 개행 문자가 없도록(따라서 echo -n) 보장하기 위한 것입니다.

체크섬을 확인하려면 몇 가지 추가 작업이 필요합니다.

CHECKSUM="$(shasum "$file" | cut -b 1-40)"
echo -n "$CHECKSUM" | diff - "$file.sha"

경로를 저장하지 않고 체크섬을 생성하고 확인하는 더 간단하고 간단한 방법이 있습니까? 내 의견으로는 파일의 이식성이 떨어지기 때문에 체크섬에 파일과 함께 경로를 저장하는 것을 좋아하지 않습니다.

답변1

분명 작은 개선

CHECKSUM="$(shasum "$file" | cut -b 1-40)"
echo -n "$CHECKSUM" > "$file.sha"

예:

shasum "$file" | cut -b 1-40 >"$file.sha"

cut후행 개행을 방지하려면 `awk를 사용할 수 있습니다.

shasum "$file" | awk -v ORS="" '{print $1}'

더 단순한 형태

CHECKSUM="$(shasum "$file" | cut -b 1-40)"
echo -n "$CHECKSUM" | diff - "$file.sha"

예:

if [ "$(shasum "$file" | cut -b 1-40)" = "$(<"$file.sha")" ]; then ...

관련 정보