2017-01-30 11 views
1

새로운 빌드가 만들어 질 때 debian 저장소 (cydia 용)를 셸 스크립트로 자동으로 업데이트하려고하는데, 현재 MD5가 필요한 cydia의 최신 버전까지 항상 작동합니다 릴리스 파일에 포함될 Packages 파일의 해시.파일 끝에 md5sums 추가하기

echo -n | cat ./Packages | md5sum | awk '{print $1}' 

내가 바이트 파일의 크기를 얻을 수 있습니다 :

stat -f%z ./Packages 

을하지만, 내가 할 수있는 내가 파일의 해시를 얻을 수 있습니다, 시도 및 프로그래밍 해시를 추가하는 데 실패했습니다 't는 형태로 한 줄을 만드는 방법 운동 :

c98fd649b21ebf3cc66d9e565f75284f 404 Packages 

및 해제 파일의 해당 라인에 추가

릴리스 파일 :

Origin: Repo name 
Label: label 
Suite: stable 
Version: 0.9 
Codename: codename 
Architectures: iphoneos-arm 
Components: main 
Description: Description. 
MD5Sum: 
c98fd649b21ebf3cc66d9e565f75284f 404 Packages 
b361d77125813106377a48616c7c4a38 293 Packages.gz 
e2f125c1fa9ec8a183064d0b4fec3b3d 320 Packages.bz2 

내 질문은, 어떻게 릴리스의 각 패키지 파일의 바이트 해시와 크기를 대체 할 수있다?

답변

1

당신은 당신이 원하는 형식으로 해시와 크기를 인쇄하는 기능을 만들 수 있습니다

print_hash_and_size() { 
    printf " %s %s %s\n" $(md5sum "$1" | awk '{print $1}') $(stat -c %s "$1") "$1" 
} 

을 그리고 당신은 당신의 릴리스 파일에 추가 할 각 파일에 대한 위의 함수를 호출합니다.

{ 
    printf "%s\n" "MD5Sum"; 
    print_hash_and_size Packages; 
    print_hash_and_size Packages.gz; 
    print_hash_and_size Packages.bz2; 
} >> release_file 
다소 귀하의 예제처럼, 파일에 네 줄을 추가 할

:

MD5Sum: 
c98fd649b21ebf3cc66d9e565f75284f 404 Packages 
b361d77125813106377a48616c7c4a38 293 Packages.gz 
e2f125c1fa9ec8a183064d0b4fec3b3d 320 Packages.bz2 

을 당신이 해시 얻기 위해이 명령 시퀀스를 사용하는 참조 :

echo -n | cat ./Packages | md5sum | awk '{print $1}' 

echo -ncat이 필요한지 잘 모름 위의 함수에서 보았 듯이 파일 이름을 md5sum에 직접 인수로 전달할 수 있습니다.

0

하나 라이너해야하는 경우 :

$ find -name 'Packages*' -printf "%P\n" | 
xargs -I FILE sh -c 'echo $(md5sum -b FILE | awk '\''{print $1}'\'') $(stat -c%s FILE) $(echo "FILE") | paste - - -' | 
sed -rn 'h;n;N;G;p' 

15bfecb2b041d5387aacdd32879e4e56 324 Packages 
997a7252f202566a1e5fdc5b50c2ffdf 283 Packages.gz 
e805c26ff46c6e138e3cd198cff281ea 301 Packages.bz2