[bash] 파일 이름없이 md5sum을 사용하여 해시 값만 가져옵니다.
md5sum을 사용하여 파일의 해시 값을 생성합니다. 그러나 파일 이름이 아닌 해시 값만 수신하면됩니다.
md5=`md5sum ${my_iso_file}`
echo ${md5}
3abb17b66815bc7946cefe727737d295 ./iso/somefile.iso
파일 이름을 ‘스트립’하고 값만 유지하려면 어떻게해야합니까?
답변
또 다른 방법 🙂
md5=`md5sum ${my_iso_file} | awk '{ print $1 }'`
답변
간단한 배열 할당이 작동합니다 … 배열의 첫 번째 요소 는 인덱스 없이 bash
만 처리 할 수 있습니다 . 즉, md5sum의 32 자만 포함합니다. name
[0]
$md5
md5=($(md5sum file))
echo $md5
# 53c8fdfcbb60cf8e1a1ee90601cc8fe2
답변
cut
공백으로 줄을 나누고 첫 번째 필드 만 반환 하는 데 사용할 수 있습니다 .
md5=$(md5sum "$my_iso_file" | cut -d ' ' -f 1)
답변
Mac OS X의 경우 :
md5 -q file
답변
md5="$(md5sum "${my_iso_file}")"
md5="${md5%% *}" # remove the first space and everything after it
echo "${md5}"
답변
일방 통행:
set -- $(md5sum $file)
md5=$1
또 다른 방법:
md5=$(md5sum $file | while read sum file; do echo $sum; done)
또 다른 방법:
md5=$(set -- $(md5sum $file); echo $1)
(백 슬래시가 너무 용감하고 훌륭하지 않으면 백틱으로 시도하지 마십시오.)
다른 솔루션에 비해이 솔루션의 장점은 단지 호출하는 것입니다 md5sum
오히려 같은 다른 프로그램보다, 쉘 awk
또는 sed
. 이것이 실제로 중요한지 여부는 별도의 질문입니다. 당신은 아마 그 차이를 알아 차리기 힘들 것입니다.
답변
다른 방법은 다음과 같습니다.
md5sum filename |cut -f 1 -d " "
잘라내 기는 각 공간으로 줄을 나누고 첫 번째 필드 만 반환합니다.