![한 줄에 체크섬을 생성/확인하시겠습니까?](https://linux55.com/image/53749/%ED%95%9C%20%EC%A4%84%EC%97%90%20%EC%B2%B4%ED%81%AC%EC%84%AC%EC%9D%84%20%EC%83%9D%EC%84%B1%2F%ED%99%95%EC%9D%B8%ED%95%98%EC%8B%9C%EA%B2%A0%EC%8A%B5%EB%8B%88%EA%B9%8C%3F.png)
파일에 대한 체크섬을 생성할 때 올바른 형식을 지정하기 위해 몇 가지 추가 작업을 수행해야 합니다.
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 ...