dd com obs e seek faz arquivo de tamanho inesperado

1

Estou aprendendo a usar dd brincando experimentalmente com seus argumentos. Eu gostaria de criar um arquivo de 10 bytes. Eu pensei que o seguinte funcionaria:

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

... por causa desses comentários da página do manual:

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

... mas isso não acontece; cria um arquivo de 2 bytes:

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

Minha solução alternativa foi:

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

Mas, para meu aprendizado, gostaria de entender por que a primeira versão não funciona. Obrigado.

    
por StoneThrow 29.03.2017 / 01:21

1 resposta

3

O uso simultâneo de bs= 1 e obs=9 conflict, já que o parâmetro bs especifica os tamanhos dos blocos de entrada e saída.
Aparentemente, o bs= substitui a especificação obs= .

Tente usar o mais específico ibs=1 em vez do bs=1 .

    
por 29.03.2017 / 03:52

Tags