바이트를 반환하는 xxd의 대안은 무엇입니까?

바이트를 반환하는 xxd의 대안은 무엇입니까?

xxd저는 Mac OS X 10.8.2를 사용하고 있으며 v1.10 의 컴파일된 복사본을 실행하고 있습니다 (소스 코드) 및 해당 사본이 xxdOS X에 사전 설치되어 제공됩니다.

터미널에서 파이프된 명령 체인을 통해 Base64로 인코딩된 SHA1 서명을 생성하려고 합니다.

일반적으로 나는 다음과 같은 작업을 수행합니다.

$ echo "foo" | openssl sha1 | xxd -p -r | base64 - > foo_sha1_signature

파일에는 foo_sha1_signature일반적으로 문자열의 Base64로 인코딩된 SHA1 해시가 포함되어 있습니다 foo.

문제는 xxd -p -r데이터를 반환하지 않아 파일이 foo_sha1_signature비어 있다는 것입니다.

의 출력을 보기 위해 명령을 분할하면 xxd -r결과가 표시됩니다(아래 인쇄됨).

$ echo "foo" | openssl sha1 | xxd -p | xxd -r
7b36c94bcdf32bee$

그러나 표준 출력을 파일로 파이프하면 파일이 비어 있습니다.

$ echo "foo" | openssl sha1 | xxd -p | xxd -r > foo_sha1_bytes
$ ls -al foo_sha1_bytes 
-rw-r--r--  1 alexpreynolds  staff  0 Jan  2 23:02 foo_sha1_bytes

표준 오류 파이핑을 시도하면 표준 출력에 바이트가 표시되고 파일은 여전히 ​​비어 있습니다.

$ echo "foo" | openssl sha1 | xxd -p | xxd -r 2> foo_sha1_bytes
7b36c94bcdf32bee$

마지막으로, 이 모든 작업을 Linux에서 수행하면 xxd예상대로 작동합니다(파일에 서명을 얻습니다). 따라서 이것은 xxdOS X 10.8.2에서 작동하는 방식의 버그인 것 같습니다 .

xxdMac OS X에서 작동하고 표준 입력의 바이트 표현을 표준 출력으로 보내는 오픈 소스 대안이 있습니까 ?

답변1

당신은 시도해야

xxd -b <file>

파일을 바이너리 모드로 표시합니다.

관련 정보