ファイルを切り捨てない「dd」の代替

ファイルを切り捨てない「dd」の代替

以下を使用せずにファイルを切り捨てない「dd」に代わるものを知っている人はいますかconv=notruncconv=notruncスペースが限られているため、ビジボックス/トイボックスによる追加はサポートされていません。

たとえば、私は次のようなものが欲しい。

dd bs=4 count=3 skip=2 seek=3 if=file.in of=file.out conv=notrunc

ただし、これはddサポートされていない場所で機能しますconv=notrunc

ベストアンサー1

標準<> shリダイレクト演算子を使用して読み取り+書き込みモードでファイルを開く切り捨てなし

cat < file.in 1<> file.out

file.in先頭をコピーしてくださいfile.out

入力ファイルまたは出力ファイルを見つける必要があり、dd次のディレクティブをサポートし続けると仮定する場合:

dd bs=4 count=3 skip=2 seek=3 < file.in 1<> file.out

ddそれがまったくない場合は、head -cバージョンが終了時にファイルの正しい場所にポインタを残すと仮定して試してみることができます(IIRCより前のバージョンのbusyboxはこれを実行しませんでした)。

たとえば、上記と同等の内容は次のとおりです。

{
  head -c 8 > /dev/null        # seek input fd to offset 8
  head -c 12 <&1 > /dev/null   # seek output fd to offset 12
  head -c 12                   # copy 12 bytes
} < file.in 1<> file.out

おすすめ記事