पूरे आउटपुट डिवाइस को मिटा दिया जाता है, चाहे उसका आकार आपके द्वारा पास किए जाने वाले ब्लॉक आकार का एक बहु हो ddया नहीं।
notruncजब उत्पादन एक युक्ति फ़ाइल है, क्योंकि एक युक्ति फ़ाइल छोटा कोई प्रभाव नहीं है झंडा कोई प्रभाव नहीं है। यदि आउटपुट एक नियमित फ़ाइल थी, तो इसका प्रभाव यह होगा कि लिखने से पहले आउटपुट फ़ाइल को छोटा नहीं किया जाता है, जो कुछ फाइल सिस्टम पर होता है, जिसका अर्थ है कि पुराना डेटा ओवरराइट किया गया है (जैसा कि डेटा के नए ब्लॉक लिखने और बाकी अनासक्त छोड़ने पर, हालाँकि यह उपयोगी नहीं होगा क्योंकि यह संपत्ति सभी फाइल सिस्टम द्वारा गारंटी नहीं है और इसके अलावा कमांड न केवल फ़ाइल को अधिलेखित करेगा, बल्कि यह तब तक लिखता रहेगा जब तक कि यह आउटपुट डिस्क (या कुछ और त्रुटि) न हो।
उपयोग करने ddऔर इस बारे में चिंता करने के बजाय कि क्या आप इसे सही तरीके से उपयोग कर रहे हैं (जैसा कि ऐसा होता है, यह इस विशेष मामले में काम करता है, लेकिन यह जटिल है और कभी-कभी काम नहीं करता है ), बस उपयोग करेंcat ।
cat /dev/zero >/dev/sdX
वेब पर लोकप्रिय विश्वास के बावजूद, इसमें कोई जादू नहीं है, ddजो इसे किसी भी तरह डिस्क पर लिखने के लिए बेहतर बनाता है। मैजिक /devफाइलों में है। कोई भी उपकरण जो बाइनरी डेटा के साथ सामना कर सकता है, जैसे कि कोई भी आधुनिक catया head, वही काम कर सकता है ddजब तक आप झंडे को पास नहीं कर रहे हैं जैसे कि seekया skip।
ध्यान दें कि एक समस्या ने साझा किया है ddऔर catयह है कि सफल संचालन पर, वे "डिवाइस पर कोई जगह नहीं छोड़ते" (ENOSPC) के साथ त्रुटि करेंगे। यदि आप इसे एक स्क्रिप्ट में रखते हैं, तो आपको या तो यह जांचना होगा कि त्रुटि ENOSPC है या किसी अन्य विधि का उपयोग करें। एक अधिक विश्वसनीय विधि पहले डिवाइस के आकार (जैसे /proc/partitionsलिनक्स के तहत उपयोग करना ) का निर्धारण करना है , फिर उपकरण जैसे कि बाइट्स की सही संख्या लिखें head।
size=$(</proc/partitions awk '$4 == "sdX" {print $3}')
head -c "${size}k" /dev/zero >/dev/sdX