Вимивається весь пристрій виводу, чи є його розмір кратним розміру блоку, якому ви передаєте ddчи ні.
notruncПрапор не має ніякого ефекту , якщо вихідний файл пристрій, так як усічення файл пристрій не має ніякого ефекту. Якби вихід був звичайним файлом, це призвело б до того, що вихідний файл не обрізається перед записом, що в деяких файлових системах означає, що старі дані перезаписані (на відміну від запису нових блоків даних і залишення решти неприєднаними), однак це не буде корисним, оскільки ця властивість не гарантується всіма файловими системами, і, крім того, команда не тільки перезапише файл, але й продовжить писати, поки він не заповнить вихідний диск (або не виникне інша помилка).
Замість того, щоб використовувати ddі не турбуватися про те, чи правильно ви його використовуєте (як це буває, він працює в даному конкретному випадку, але це складно і іноді не працює ), просто використовуйтеcat .
cat /dev/zero >/dev/sdX
Незважаючи на поширену думку в Інтернеті, немає абсолютно ніякої магії в ddтому, що робить його якось краще придатним для запису на диск. Магія - у /devфайлах. Будь-який інструмент, який може впоратися з двійковими даними, як-от будь-який сучасний catабо head, може виконати ту саму роботу, що інакше, ddякщо ви не передаєте прапори, такі як seekабо skip.
Зверніть увагу , що загальна проблема ddі в catтому , що на успішну операцію, вони будуть помилки з «не залишилося на пристрої простору» (ENOSPC). Якщо ви помістите це в сценарій, вам потрібно буде або перевірити, чи помилка є ENOSPC, або скористатися іншим методом. Більш надійним методом є спочатку визначити розмір пристрою (наприклад, використовуючи /proc/partitionsпід Linux), а потім записати точно потрібну кількість байтів за допомогою такого інструмента, як head.
size=$(</proc/partitions awk '$4 == "sdX" {print $3}')
head -c "${size}k" /dev/zero >/dev/sdX