@Адио могли бы вы, пожалуйста, отметьте это как ответ, что проблема-то? Спасибо. @bmike подачи сообщения об ошибке с Apple, когда вы не разработчик, похоже, пустая трата времени в целом, и особенно, когда вы используете функцию как `спящий 25`, что явно "не поддерживается". Использование `судо` - это, конечно, зависит от записей в файле /etc/файлами sudoers... "пользователей = все (все) все" на самом деле означает, что *пользователей* может выполнять все команды, как и все пользователи (в том числе *корень*) на все машины. Записи "имя машины = (run_as_user) команды". Так что если ваш пользователь (или root) не разрешено выполнять команды, как и любой другой пользователь, это не сработает. Если вы впервые стали *корень* однако, вы все еще можете использовать `Су пользователя к любому другому пользователю без ввода пароля. Вы просто не можете сделать это только с `судо` в один присест... И, как всегда - задайте вопрос на [мета] если вы не уверены, почему модератор что-то или хотите иметь другой результат, чем нынешняя ситуация. Больше глаза на поток, часто помогает всем - включая меня. Спасибо за отзыв.

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/нуль
 Эхо "$строка"
сделано >вопросами и ответами