다음 명령을 입력하고 실행한다고 가정해 보겠습니다.
sha256sum ubuntu-18.04.1-desktop-amd64.iso
지연 후 출력은 다음과 같습니다.
5748706937539418ee5707bd538c4f5eabae485d17aa49fb13ce2c9b70532433 ubuntu-18.04.1-desktop-amd64.iso
그러다가 SHA-256 해시가 일치하는지 더 빨리 평가하려면 다음 명령을 입력해야 한다는 것을 깨달았습니다.
sha256sum ubuntu-18.04.1-desktop-amd64.iso | grep 5748706937539418ee5707bd538c4f5eabae485d17aa49fb13ce2c9b70532433
체크섬을 다시 확인하는 명령을 사용하지 않고 sha256sum
첫 번째 출력에서 작업할 수 있는 방법이 있습니까(즉, 이로 인해 발생하는 지연을 방지)? 구체적으로:
- 다음 명령을 사용하여 이 작업을 수행하는 방법을 알고 싶습니다.확실히첫 번째 출력의 체크섬을 복사하여 붙여넣어야 합니다(가능한 경우).
- 다음 명령을 사용하여 이 작업을 수행하는 가장 쉬운 방법을 알고 싶습니다.하다첫 번째 출력의 체크섬을 복사하여 붙여넣어야 합니다. (그냥
grep
큰따옴표(예: 문자열)로 체크섬을 붙여넣으 려고 하면 작동하지 않습니다.)
답변1
.bashrc
또는 구성에서 간단한 함수를 생성 .zshrc
하고 다음과 같이 실행할 수 있습니다.
sha256 <expected-sha-256-sum> <name-of-the-file>
단일 명령으로 예상되는 sha256 합계를 실제 합계와 비교합니다.
그 기능은 다음과 같습니다:
sha256() {
printf '%s %s\n' "$1" "$2" | sha256sum --check
}
답변2
질문 1: (가능한 경우) 첫 번째 출력의 체크섬을 복사하여 붙여 넣을 필요가 없는 명령으로 이 작업을 수행하는 방법을 알고 싶습니다.
Bash
이전에 실행한 명령의 출력을 호출하는 메커니즘은 제공되지 않습니다. 후속 명령에서 작업을 수행하려는 경우 이를 명시적으로 캡처해야 합니다.
질문 2: 첫 번째 출력의 체크섬을 복사하여 붙여넣어야 하는 명령을 사용하여 이 작업을 수행하는 가장 쉬운 방법을 알고 싶습니다. (큰따옴표(예: 문자열)로 붙여진 체크섬을 grep하려고 하면 작동하지 않습니다.)
따라서 여기서 유일한 옵션은 이전 명령의 출력을 복사하여 붙여넣는 것입니다. 시도해 볼 때 이것이 효과가 없는 이유에 대해 설명합니다. 를 사용할 때 체크섬 문자열을 변경하는 echo <sha1sum>
개행 문자( )라는 추가 문자를 도입하기 때문에 이 작업이 실패할 수 있습니다.\n
문자열을 해시 함수(예: md5
또는 ) 에 에코할 때 일반적 으로 문자열 끝에 추가되는 개행 문자를 무시하도록 지시하는 작업을 sha256sum
수행하는 것이 가장 좋습니다 .echo -n <..>
echo
다음과 같이 이것이 해시 함수 호출에 어떤 영향을 미치는지 확인할 수 있습니다.
$ echo "blah" | sha256sum
41af286dc0b172ed2f1ca934fd2278de4a1192302ffa07087cea2682e7d372e3 -
$ echo -n "blah" | sha256sum
8b7df143d91c716ecfa5fc1730022f6b421b05cedee8fd52b1fc65a96030ad52 -
문자열 "blah"의 실제 해시는 두 번째 호출입니다.
답변3
일치 여부를 확인하고 있는 것 같습니다. -c
( --check
) 옵션 사용을 고려해 보셨나요 sha256sum
?
답변4
@Sasha는 올바른 접근 방식을 가지고 있습니다. SHA256SUM
왼쪽에 해시가 있고 오른쪽에 파일 경로가 있는 파일을 받은 경우 다음을 사용할 수 있습니다.
sha256sum --check SHA256SUM 2>/dev/null | grep 'OK'
그렇지 않은 경우 기록 보관을 위해 체크섬 파일을 생성/추가한 다음 해시를 계산하여 비교할 수 있습니다.
function checksums {
echo "$3 $2" | tee -a SHA256SUMS
"$1" --check SHA256SUMS 2>/dev/null | grep 'OK'
}
checksums sha256sum 'ubuntu-18.04.1-desktop-amd64.iso' '5748706937539418ee5707bd538c4f5eabae485d17aa49fb13ce2c9b70532433'
이렇게 하면 모든 파일과 해시에 대한 기록을 갖게 됩니다.