Я знаю, как создать пустой файл:
touch /var/tmp/nullbytes
но как я могу создать файл размером 1 МБ, который содержит только нулевые байты в командной строке с помощью bash?
command-line
files
rubo77
источник
источник
Ответы:
С GNU
truncate
:(предполагая,
nullbytes
что не существовало заранее) создаст файл размером 1 мегабайт. Это файл, который кажется заполненным нулями, но не занимает места на диске.Без
truncate
, вы можете использоватьdd
вместо:(в некоторых
dd
реализациях вы можете заменить 1048576 на1M
)Если вы предпочитаете выделять дисковое пространство в Linux и некоторых файловых системах, вы можете сделать следующее:
Это выделяет пространство без фактической записи данных на диск (пространство зарезервировано, но помечено как неинициализированное).
Фактически запишет нули на диск. Это наименее эффективно, но если вам нужно, чтобы ваши диски вращались при доступе к этому файлу, это то, что вам нужно.
Или способ @ mikeserv для
dd
создания байтов NUL:Альтернатива с GNU
head
, которая не требует указания размера блока (1М - это нормально, но, например, 10G - нет):Или получить индикатор выполнения:
источник
truncate
для создания пустого файла, который будет использоваться в качестве тома подкачки ... это не будет работать! Используйтеdd
в этом случае вместо этого.dd
может создавать разреженные файлы, как я показал.bs=1kx1k
. Или<&1 dd bs=1kx1k conv=sync,noerror count="$rpt" | cat >file
для буквальной записи на диск вещь. Но не на 100% от того, сколько эффективности может быть потеряно при форсировании ошибки чтения.источник