Perintah Anda dd if=/dev/zero of=./foo count=1 bs=1 obs=9 seek=1
membuat file dua byte daripada file 10 byte karena interaksi yang tidak terdefinisi dengan baik antara bs
dan obs
. (Sebut ini bug program jika Anda suka, tetapi mungkin lebih baik didefinisikan sebagai bug dokumentasi.) Anda seharusnya menggunakan keduanya bs
atau ibs
dan obs
.
Secara empiris terlihat bahwa bs
menimpa obs
, jadi yang dieksekusi adalah dd if=/dev/zero of=./foo count=1 bs=1 seek=1
, yang membuat file dua byte seperti yang Anda lihat.
Jika Anda telah menggunakan dd if=/dev/zero of=./foo count=1 ibs=1 obs=9 seek=1
Anda akan mendapatkan file 10 byte seperti yang diharapkan.
Sebagai alternatif, jika Anda ingin membuat file kosong yang tidak memakan ruang data apa pun pada disk, Anda dapat menggunakan truncate
yang bernama kontra-intuitif perintah:
truncate --size=10 foo
Halaman manual POSIX menyatakan:
ibs=expr
Tentukan ukuran blok masukan, dalam byte, dengan expr (standarnya adalah 512).
obs=expr
Tentukan ukuran blok keluaran, dalam byte, dengan expr (standarnya adalah 512).
bs=expr
Tetapkan masukan dan keluaran ukuran blok menjadi expr byte, supersedingibs=dan obs= . Jika tidak ada konversi selain sinkronisasi, noerror, dan notrunc yang ditentukan, setiap blok input harus disalin ke output sebagai satu blok tanpa menggabungkan blok pendek.
dd
Linux bekerja dengan cara yang sama. Jadi, gunakan ibs
sebagai gantinya:
dd if=/dev/zero of=./foo count=1 ibs=1 obs=9 seek=1