Seu comando dd if=/dev/zero of=./foo count=1 bs=1 obs=9 seek=1
cria um arquivo de dois bytes em vez de um de 10 bytes devido à interação mal definida entre bs
e obs
. (Chame isso de um bug do programa, se quiser, mas provavelmente é melhor definido como um bug de documentação.) Você deve usar bs
ou ibs
e obs
.
Empiricamente, parece que bs
substitui obs
, então o que é executado é dd if=/dev/zero of=./foo count=1 bs=1 seek=1
, que cria um arquivo de dois bytes como você viu.
Se você tivesse usado dd if=/dev/zero of=./foo count=1 ibs=1 obs=9 seek=1
, teria um arquivo de 10 bytes como esperado.
Como alternativa, se você deseja criar um arquivo vazio que não ocupa nenhum espaço de dados no disco, pode usar o comando% intuitivo truncate
:
truncate --size=10 foo