Описание тега dogs
Ext4 может использовать 1кб, 2кб или 4кб как размер блока; насколько я знаю по умолчанию в Ubuntu-это 4кб. Обратите внимание, что здесь блок размером с кусок файла, который является постоянным для данной файловой системы. Файл, который вы описываете, имеет два блока, которые не являются нулями: с привет
(окруженная кучей нулей — 3616 474 до и после), и содержащий тут
(предшествует куча нулей, и содержащие только 3148 байт, после чего конец файла). Всего два блока в 4 КБ.
В ЛС
вывода, блоки произвольной единицы, выбранные Общ
командной и умолчанию до 1кб. Есть 2 блока по 4 КБ каждое, выделенную для файла данных, поэтому выделяем размер файла-8кб.
Ваше недоумение может быть вызвано двумя вещами. Во-первых, фигура 2048 байт на блок можно, но это не значение по умолчанию в Убунту (или большинство современных дистрибутивов), и это, видимо, не значение на вашей системе. Вы можете проверить размер блока, запустив tune2fs -л /Дев/sdz42
(использовать фактический путь к файловой системе устройства).
Во-вторых, разреженные файлы состоят из не хранения блоков, которые полностью состоят из нулей. Если блок (который имеет необходимость выровнено по границе квартала размер, по крайней мере, для большинства файловых систем, включая системы ext4) содержит нули и другие вещи, то полный блок, хранящийся на диске. Таким образом, в этой 40012-байтный файл (как вы 40013, кстати), есть 4 Все-ноль не хранятся блоки, затем сохраненный блок, содержащий Здравствуйте
, окруженный нулями, то 4 больше всех-ноль не хранятся блоки, и заключительный частичный блок, содержащий нули и есть
.
Обратите внимание, что ваша программа может быть написана с точки зрения стандартных команд оболочки:
Н=20000
в то время как ИФ= читайте -Р линии; делать
ДД БС=1 искать=$Н </dev/нуль
Эхо "$строка"
сделано >вопросами и ответами