Создание пустого файла заданного размера через командную строку

Иногда требуется создать пустой файл, который потом можно будет использовать в виртуальной машине (например qemu) как диск, который в последствии нужно будет зашить на флешку. Или протестировать поместится ли установленная ОС на диск определённого размера, допустим при создании какого-нибудь встраиваемого решения.

Способ с использованием /dev/zero

Например такая команда создаст файл, размером в 256 блоков, при условии что размер 1го блока равен 1024 байтам, то есть 256 kB.

dd if=/dev/zero of=disk.img bs=1000 count=256k

 А вот такая команда создаст файл размером 256 MB:

dd if=/dev/zero of=disk.img bs=1000k count=256

что равноценно:

dd if=/dev/zero of=disk.img bs=1000 count=256k

Способ с использованием /dev/null

Допустим необходимо создать файл 16Гб, для виртуальной ОС, а используя /dev/zero приходится слишком долго ждать результат, а нам хочется сгенерировать файл быстрее.

dd if=/dev/null of=disk.img bs=1G seek=16

Данная команда выполняется почти мгновенно, так как запись данных в файл не производится, в тоже время результирующий файл если смотреть через ls имеет вес, но не занимает места на диске.