Вимивається весь пристрій виводу, чи є його розмір кратним розміру блоку, якому ви передаєте 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