充填のみを作成する必要があります11111111
。
ゼロパディングされたバイナリファイルを作成する方法だけを知っています。
dd if=/dev/zero bs=18520 count=1
Beanを埋めるためにパイプラインでどのコマンドを使用する必要があるかを教えてください1
。awk
このような場合にはどのように使用する必要がありますか?
答え1
おそらくゼロを希望の値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"
(もちろん、またはそこでも使用できます"\377"
。私は主に小さな書き込みを最小限に抑えるために繰り返し演算子を使用しています。x 1024
これを変更するとパフォーマンスに影響を与える可能性があります。)
答え2
使用しないでくださいdd bs=…
:信頼できません。ibs=1 obs=1
エラーが発生しやすいツールを使用または使用してください。ほとんどのhead
実装ではバイトを計算できます。
</dev/zero head -c 18520
ファイルをゼロ以外の単一バイトで埋めるには、バイト値の変更を使用します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
ただし、より適切な回答を提供するには、この範囲を明確にする必要があります。