md5sum 명령 바이너리 및 텍스트 모드


13

GNU md5sum명령에는 이진 모드와 텍스트 모드의 두 가지 모드가 있습니다. 차이점은 줄 바꿈 문자가 어떻게 처리되는지에 달려 있다고 생각합니까? 내가 맞아?

GNU / Linux에서 두 모드는 항상 동일한 결과를 생성하므로 , 파일 이름 앞에 사용 된 플래그 ( 또는 ) 를 표시하는 것만 -b-t옵션 만 사용 합니까?*

어떤 상황에서 모드가 다른 결과를 낼 수 있습니까? Windows / MacOS 시스템에서? (이 플랫폼의 버전이 있습니까?)

답변:


11

GNU / Linux에서 두 모드는 항상 동일한 결과를 생성합니다

그렇습니다. 보낸 사람 man md5sum:

참고 : [sic] GNU 시스템에서는 바이너리와 텍스트 모드 옵션간에 차이가 없습니다.

이것은 md5sumGNU coreutils 8.21과 함께 제공 되는 구현 에서 나온 것입니다. 이전 버전 (8.12)에는이 알림이 없지만 어쨌든 동일하다고 가정합니다.

AFAICT md5sum는 공식적으로 표준화되어 있지 않지만 (예 : POSIX) 다양한 구현에서 다양한 플랫폼에서 사용할 수 있으며, 시스템 전체에서 사용하기 쉽도록 서로 호환되도록 노력하고 있습니다.

이와 관련하여 ISO / ANSI C 표준 에는 파일 액세스를위한 고급 스트림 기능이 포함되어 있습니다. 표준의 일부로 공유 라이브러리 또는 컴파일러를 통해 ISO C를 구현하는 모든 운영 체제에서 사용할 수 있습니다. 거의 모든 운영 체제에서이 기능을 사용할 수 있으며 (가장 자주 C로 작성 됨) 잠재적으로 이식성이 높은 소프트웨어를 구현하는 데 사용되는 일종의 범용 언어입니다.

그것이 무엇을하는지 고려하면, md5sum모든 운영 체제에서 컴파일하고 작동 하는 것을 작성하는 것이 가능 합니다. GNU coreutils 버전에서는 이것이 사실이라고 주장하지는 않지만 앞에서 언급 한 고급 파일 스트림 기능 중 하나는 fopen()ISO C에 의해 b파일을 여는 데 사용되는 스위치 를 포함하여 "바이너리로 열려 있음" 파일". 그 말 또는 시스템의 필요할 수 있습니다 무엇 되지 않은 표준에 의해 규정, 그냥 (이있을 수 있습니다 곳이 시스템에서 사용할 수 있도록 존재하는 데 필요한 것 모든 그것에 대한) 이유.

linux / POSIX / * nix 스타일 운영 체제에는 그러한 이유가 없으므로 스위치는 아무것도하지 않습니다. 대한 POSIX 규격 (ISO C의 상위 집합)에서 ()는 fopen :

문자 'b'는 영향을 미치지 않지만 ISO C 표준 준수에 허용됩니다.

따라서 md5sumISO C에서 파일에 액세스하는 다른 방법이 없기 때문에 완전히 이식 가능한 구현은 ISO 고급 파일 스트림 기능을 사용할 수 있습니다 (POSIX 불만 사항을 포함한 대부분의 플랫폼에는 자체 저수준 방법도 있지만 이러한 기능을 사용하면 ISO C에 있지 않기 때문에 이식 가능 하지 않으며 파일을 읽을 때 옵션을 추가하거나 추가하지 않도록 -band -t플래그를 구현해야 합니다. 의미가없는 시스템에서는 아무런 차이가 없습니다.bfopen()

다시 말하지만, GNU의 md5sum이 완전히 이식 가능한 방식으로 작성되었거나 작동 방식에서 파생 된 방식으로 파생 된 것은 아닙니다. 아무것도하지 않는 플래그를 갖는 것은 플래그를 갖는 것과 같지 않습니다. 전자의 경우 괜찮아 지도록 지정되었지만 아무것도하지 않는 반면, 나중에 사용하는 경우 오류가 발생하거나 정의되지 않은 동작이 발생할 수 있습니다 .


1
이 옵션이 쓸모없는 경우 왜 추가됩니까?
Frozen-flame

1
이에 대해 위의 단락을 추가했습니다 (TL; DR-> md5sum 사용자가 다른 운영 체제 및 익숙한 배치 코드 등에 익숙 할 수 있음).
goldilocks
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.