채우기만 만들어야 합니다 11111111
.
제로 패딩된 바이너리 파일을 만드는 방법만 알고 있습니다.
dd if=/dev/zero bs=18520 count=1
빈을 채우기 위해 파이프라인에서 어떤 명령을 사용해야 하는지 알려주실 수 있나요 1
? awk
이런 경우에는 어떻게 사용해야 하나요?
답변1
아마도 0을 원하는 값 tr
으로 변환한 다음 또는 등을 사용하여 길이를 자르는 것이 가장 쉬운 방법일 것입니다./dev/zero
dd
head
이는 18520바이트를 쓰고 모든 비트는 1이므로 값은 0xff, 255 또는 8진수로 377입니다. 입력은 다음과 같아야 하기 때문입니다.
< /dev/zero tr '\000' '\377' | head -c 18520 > test.bin
(16진수나 10진수를 8진수로 변환하려면 등을 사용할 수 있습니다 printf "%o\n" 0xff
.)
1바이트 문자열보다 긴 스트림을 생성하려면 Perl을 사용합니다.
perl -e '$a = "abcde" x 1024; print $a while 1' | head ...
"\xff"
(물론 or 거기도 사용할 수 있습니다 "\377"
. 저는 주로 작은 쓰기를 최소화하기 위해 반복 연산자를 사용하고 있습니다 x 1024
. 이를 변경하면 성능에 영향을 미칠 수도 있고 그렇지 않을 수도 있습니다.)
답변2
사용하지 마세요 dd bs=…
: 신뢰할 수 없습니다. ibs=1 obs=1
오류가 발생하기 쉬운 도구를 사용 하거나 사용하십시오. 대부분의 head
구현에서는 바이트를 계산할 수 있습니다.
</dev/zero head -c 18520
파일을 0이 아닌 단일 바이트로 채우려면 바이트 값 변경을 사용하십시오 tr
. 모든 사람에게:
</dev/zero head -c 18520 | tr '\0' '\377'
답변3
귀하의 질문에 구체적으로 대답하기 위해 dd를 사용하면 파이프에서 tr과 잘 작동합니다.
dd if=/dev/zero bs=18520 count=1 | tr '\000' '1' > test.bin
그러나 보다 적절한 답변을 제공하려면 이 범위를 명확히 해야 합니다.