मुझे पता है कि खाली फाइल कैसे बनाई जाती है:
touch /var/tmp/nullbytes
लेकिन मैं 1MB फ़ाइल कैसे बना सकता हूं जिसमें केवल बैश के साथ कमांडलाइन पर nullbytes हैं?
मुझे पता है कि खाली फाइल कैसे बनाई जाती है:
touch /var/tmp/nullbytes
लेकिन मैं 1MB फ़ाइल कैसे बना सकता हूं जिसमें केवल बैश के साथ कमांडलाइन पर nullbytes हैं?
जवाबों:
GNU के साथ truncate
:
truncate -s 1M nullbytes
(यह मानते हुए nullbytes
कि पहले से मौजूद नहीं था) 1 mebibyte विरल फ़ाइल बनाएगा। यह एक ऐसी फाइल है जो शून्य से भरी हुई दिखाई देती है लेकिन यह डिस्क पर कोई स्थान नहीं लेती है।
इसके बिना truncate
, आप dd
इसके बजाय उपयोग कर सकते हैं :
dd bs=1048576 seek=1 of=nullbytes count=0
(कुछ dd
कार्यान्वयन के साथ , आप 1048576 को बदल सकते हैं 1M
)
यदि आप डिस्क स्थान को लिनक्स और कुछ फाइल सिस्टम पर आवंटित करते हैं, तो आप कर सकते हैं:
fallocate -l 1M nullbytes
यह वास्तव में डिस्क को डेटा लिखने के बिना अंतरिक्ष आवंटित करता है (अंतरिक्ष आरक्षित है लेकिन असिंचित के रूप में चिह्नित है)।
dd < /dev/zero bs=1048576 count=1 > nullbytes
वास्तव में डिस्क पर शून्य लिखेंगे। यह कम से कम कुशल है, लेकिन अगर आपको उस फ़ाइल को एक्सेस करने के लिए अपने ड्राइव को स्पिन करने की आवश्यकता है, तो वह वही है जिसके लिए आप जाना चाहते हैं।
या @ mikeserv की dd
NUL बाइट्स बनाने के लिए चाल के तरीके :
dd bs=1048576 count=1 conv=sync,noerror 0> /dev/null > nullbytes
जीएनयू के साथ एक विकल्प जिसमें head
ब्लॉक आकार निर्दिष्ट करना शामिल नहीं है (1M ठीक है, लेकिन उदाहरण के लिए 10G नहीं होगा):
head -c 1M < /dev/zero > nullbytes
या एक प्रगति बार पाने के लिए:
pv -Ss 1M < /dev/zero > nullbytes
truncate
स्वैप वॉल्यूम के रूप में उपयोग की जाने वाली खाली फ़ाइल बनाने के लिए उपयोग न करें ... यह काम नहीं करेगा! dd
इस मामले में इसके बजाय का उपयोग करें ।
dd
मैं के रूप में अच्छी तरह से दिखाया के रूप में विरल फ़ाइलें बना सकते हैं।
bs=1kx1k
। या <&1 dd bs=1kx1k conv=sync,noerror count="$rpt" | cat >file
शाब्दिक के लिए डिस्क बात लिखें। 100% नहीं पर कितना त्रुटि खो त्रुटि पढ़ने के लिए मजबूर कर सकते हैं, हालांकि।