obsとeekを持つddが原因でファイルサイズが予期しなくなります。

obsとeekを持つddが原因でファイルサイズが予期しなくなります。

dd私はその主張に実験的に取り組むことによってそれを使用する方法を学びます。 10バイトのファイルを作成したいです。私は次のことがうまくいくと思います。

dd if=/dev/zero of=./foo count=1 bs=1 obs=9 seek=1

...マンページに次の説明があるからです。

   obs=BYTES
          write BYTES bytes at a time (default: 512)
   seek=N skip N obs-sized blocks at start of output

...しかしそうではありません。 2バイトファイルを生成します。

>ls -l foo
-rw-rw-r-- 1 user user 2 Mar 28 16:05 foo

私の解決策は次のとおりです

dd if=/dev/zero of=./foo count=1 bs=1 obs=1 seek=9

しかし、私の研究では、最初のバージョンが機能しない理由を理解したいと思います。ありがとうございます。

ベストアンサー1

間の相互作用がうまく定義されていないdd if=/dev/zero of=./foo count=1 bs=1 obs=9 seek=1ため、コマンドは10バイトファイルの代わりに2バイトファイルを生成します。 (必要に応じてこれをプログラムエラーと呼ぶことができますが、ドキュメントエラーとして定義する方が良いです。)bsobs誰でも bs または ibsそしてobs

経験的bsに上書きすると、obs見てdd if=/dev/zero of=./foo count=1 bs=1 seek=1再び2バイトファイルが生成されるようです。

これにより、dd if=/dev/zero of=./foo count=1 ibs=1 obs=9 seek=1予想される10バイトのファイルが得られます。

あるいは、ディスク上のデータ空間を全く占有しない空のファイルを生成するために、直感的ではない命名truncateコマンドを使用することができる。

truncate --size=10 foo

おすすめ記事