Создайте тестовый файл с большим количеством нулевых байтов

Я знаю, как создать пустой файл:

touch /var/tmp/nullbytes 

но как я могу создать файл размером 1 МБ, который содержит только nullbtes в командной строке с bash?

  • В чем разница между жесткими ссылками и скопированными файлами?
  • Удалите все файлы в папке, кроме последней (последней) 20
  • Время изменения Solaris 10
  • grep все строки в файле и запись строки в файл из точки соответствия шаблона
  • Подсчитайте, сколько каталогов имеет хотя бы один файл с определенным расширением
  • Перезаписать часть файла без модификации в немодифицированный контент
  • Измените несколько файлов в разных папках одной командой?
  • readlink -f не работает с несколькими файлами
  • 2 Solutions collect form web for “Создайте тестовый файл с большим количеством нулевых байтов”

    С truncate GNU:

     truncate -s 1M nullbytes 

    (предполагая, что nullbytes не существовало заранее) создаст разрешенный файл размером 1 мегабайт. Это файл, который заполняется нулями, но это не занимает места на диске.

    Без truncate вы можете использовать dd вместо:

     dd bs=1048576 seek=1 of=nullbytes count=0 

    (с некоторыми реализациями dd , вы можете заменить 1048576 на 1M )

    Если вы предпочтете выделить дисковое пространство, то в Linux и некоторых файловых системах вы сможете:

     fallocate -l 1M nullbytes 

    Это выделяет пространство без фактической записи данных на диск (пространство зарезервировано, но помечено как неинициализированное).

     dd < /dev/zero bs=1048576 count=1 > nullbytes 

    Фактически напишет нули на диск. Это наименее эффективно, но если вам нужно, чтобы ваши диски вращаются при доступе к этому файлу, это тот, который вы хотите использовать.

    Или способ @ mikeserv, чтобы обмануть dd в генерации байтов NUL:

     dd bs=1048576 count=1 conv=sync,noerror 0> /dev/null > nullbytes 

    Альтернатива с head GNU, которая не требует указания размера блока (1M в порядке, но 10G, например, не будет):

     head -c 1M < /dev/zero > nullbytes 

    Или получить индикатор выполнения:

     pv -Ss 1M < /dev/zero > nullbytes 
     dd if=/dev/zero of=/var/tmp/nullbytes count=1 bs=1M 
    Linux и Unix - лучшая ОС в мире.