Całe urządzenie wyjściowe jest czyszczone bez względu na to, czy jego rozmiar jest wielokrotnością rozmiaru bloku, który przekazujesz, ddczy nie.
notruncFlaga nie ma znaczenia, gdy wyjście jest plikiem urządzenia, bo obcinanie plik urządzenia nie ma wpływu. Jeśli dane wyjściowe były zwykłym plikiem, spowodowałoby to, że plik wyjściowy nie byłby obcinany przed zapisem, co w niektórych systemach plików oznacza, że stare dane są nadpisywane (w przeciwieństwie do zapisywania nowych bloków danych i pozostawiania nieprzyłączonych), nie byłoby to jednak użyteczne, ponieważ ta właściwość nie jest gwarantowana przez wszystkie systemy plików, a ponadto polecenie nie tylko nadpisuje plik, ale także kontynuuje zapis, dopóki nie zapełni się dysku wyjściowego (lub wystąpi inny błąd).
Zamiast używać ddi martwić się, czy używasz go poprawnie (tak się składa, działa w tym konkretnym przypadku, ale jest skomplikowany i czasami nie działa ), po prostu użyjcat .
cat /dev/zero >/dev/sdX
Pomimo powszechnego przekonania w Internecie, nie ma w tym absolutnie żadnej magii, ddco sprawia, że lepiej nadaje się do zapisu na dysku. Magia jest w /devplikach. Każde narzędzie, które może poradzić sobie z danymi binarnymi, takie jak każdy nowoczesny catlub head, może wykonać tę samą pracę, o ddile nie przekazujesz flag takich jak seeklub skip.
Należy zauważyć, że problem wspólne ddi catto, że na udanej operacji, oni się z błędu „No lewo na urządzenie przestrzeni” (ENOSPC). Jeśli umieścisz to w skrypcie, albo musisz sprawdzić, czy błąd to ENOSPC, albo użyć innej metody. Bardziej niezawodną metodą jest najpierw określenie rozmiaru urządzenia (np. Używanie /proc/partitionspod Linuksem), a następnie zapisanie dokładnie odpowiedniej liczby bajtów za pomocą narzędzia takiego jak head.
size=$(</proc/partitions awk '$4 == "sdX" {print $3}')
head -c "${size}k" /dev/zero >/dev/sdX