2017-03-20 1 views
0

표준 입력에서 xxd로 데이터를 수집하는 데 문제가 있습니다. 다음은 명령입니다.stdin을 사용하여 xxd에 16 진수 문자열을 입력하십시오. 어떤 출력도 생성되지 않습니다.

xxd -r -p | dd of=/home/user/test/hex.bin obs=16 

쉘에서이 명령을 실행하면 입력을 기다립니다. 나는 '0006303030304e430006303030304e43'을 입력 한 다음 Enter 키를 눌러 보았지만 xxd가 입력을받지 못했거나 dd로 파이프되지 않은 출력을 보였습니다.

는 예를 들어,이 완벽하게 작동합니다 :

내가 무엇을 달성하고자하는
echo '0006303030304e430006303030304e43' | xxd -r -p | dd of=/home/user/test/hex.bin obs=16 

: 내가, 일부 16 진수 문자열을 넣어 바이너리로 변환 한 후 16 비트 청크에 파일로 저장합니다. 스크립트는 끊임없이 stdin을 청취해야합니다.

xxd가 이런 식으로 작동합니까? 나는 16 진수 문자열 끝에 \ n 또는 \ r \ n을 넣으려고했지만 xxd 출력에는 아무 것도 나타나지 않았습니다.

도움 주셔서 감사합니다.

감사합니다.

답변

0

xxd은 여전히 ​​입력 대기 중입니다. Enter 키를 눌러 입력 파일을 닫은 후에 Control-D를 입력하십시오.

+0

문제는 내가 명령을 종료하고 싶지 않다는 것입니다. 나는 이것을 다음과 같이하고 싶다 stdin (16 진수 문자열) -> xxd (2 진수) -> dd -> myfile.bin -> stdin ... 등등. – user2311165

0

그냥은 다음과 같습니다 있도록, xxd -r -p 명령에 -를 추가 :

내가 xxd man 페이지에서 이것을 발견
echo '0006303030304e430006303030304e43' | xxd -r -p - | dd of=/home/user/test/hex.bin obs=16 

; 구체적으로는, 절 OPTIONS :가 - 문자로 지정

INFILE 경우, 표준 입력으로부터 취해진 다.

관련 문제