alternativa para 'dd' que não trunca o arquivo

3

Alguém sabe uma alternativa para 'dd', que não trunca o arquivo, sem usar: conv=notrunc . Adicionar conv=notrunc não é suportado via busybox / toybox devido à quantidade limitada de espaço.

Por exemplo, eu gostaria do equivalente a

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

Mas isso funcionaria onde dd não suporta conv=notrunc .

    
por user3698979 07.09.2017 / 14:20

1 resposta

9

Use o operador padrão de redirecionamento <> sh , que abre o arquivo no modo de leitura + gravação sem truncamento .

cat < file.in 1<> file.out

Para copiar o conteúdo de file.in no início de file.out .

Se você precisar procurar no arquivo de entrada ou saída e supondo que seu dd ainda suporta essas diretivas:

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

Se você não tem dd , você pode tentar head -c , assumindo que sua versão cuida de deixar o ponteiro no arquivo no lugar certo ao sair (que as versões mais antigas do busybox não estavam fazendo ).

Por exemplo, o equivalente ao acima seria:

{
  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
    
por 07.09.2017 / 14:25