基本的に、1GBのコンテンツを含む割り当てファイルを作成したいと思います。次に、コマンドラインユーティリティを使用して、ファイルの一部をその場で上書きしたいと思います。たとえば、最初の4 MBだけを残して、残りのファイルの内容をそのままにしておきます。 cpとddを確認しましたが、このようなものはないようです。おそらく私は間違った場所を探しているか、いくつかのオプションの意味を理解していません。
はい、これを行うためのCプログラムを生成することはできますが、移植性に対する私の好みは、コマンドラインの状況を使用することです。
何か案は?
dd
の例:
$ cat data
insertion goes here: <...>
$ cat insert
ABC 123 XYZ
$ dd if=insert skip=4 count=3 of=data seek=22 bs=1 conv=notrunc
3+0 records in
3+0 records out
3 bytes transferred in 0.001 secs (2918 bytes/sec)
$ cat data
insertion goes here: <123>
ここで使用したdd
コマンドは、入力ファイルに4ブロックスキップしてから、3ブロックを読み取ります。ブロックは、22ブロックをシークした後、出力ファイルに書き込まれます。出力は切り捨てられません。 1ブロックは1バイトです。
これは私のために働きます:
$ echo aaaaaaaaaa > a
$ echo bbbbbbbbbb > b
$ dd if=a of=b conv=notrunc ibs=1 obs=1 seek=3 count=4
$ cat b
bbbaaaabbb