मैं यादृच्छिक डेटा वाली फ़ाइल को कैसे पॉप्युलेट कर सकता हूं?


124

मैं एक नई फ़ाइल कैसे बना सकता हूं और इसे 1 गीगाबाइट यादृच्छिक डेटा के साथ भर सकता हूं? मुझे कुछ सॉफ़्टवेयर का परीक्षण करने के लिए इसकी आवश्यकता है।

मैं /dev/randomया उपयोग करना पसंद करूंगा /dev/urandom


74
के viसाथ खोलें vi -w randomfileऔर किसी ऐसे व्यक्ति से पूछें, जो viकार्यक्रम से बाहर निकलने के लिए कभी नहीं देखा है। ;)
वाइल्डकार्ड

1
बस फेसबुक पोस्ट से उपरोक्त टिप्पणी पसंद आया! facebook.com/ProgrammersCreateLife/photos/a.241809332534619/…
Parixit

जवाबों:


171

अधिकांश यूनियनों पर:

head -c 1G </dev/urandom >myfile

यदि आपका प्रत्यय headसमझ में नहीं आता है तो Gआप बाइट में आकार निर्दिष्ट कर सकते हैं:

head -c 1073741824 </dev/urandom >myfile

यदि आपका विकल्प headसमझ में नहीं आता है -c(यह आम है, लेकिन POSIX नहीं; तो संभवतः आपके पास OpenBSD है):

dd bs=1024 count=1048576 </dev/urandom >myfile

/dev/randomलिनक्स पर उपयोग न करें , उपयोग करें /dev/urandom


1
इसके लायक क्या है, मेरे सोलारिस 10 मशीन पर headसमझ में नहीं आता है -c
रहमू

2
दिलचस्प है कि headपढ़ सकते हैं /dev/urandom, लेकिन tailनहीं कर सकते।
स्टीफन लासवर्स्की

21
@StefanLasiewski tailपहले इनपुट फ़ाइल के अंत में जाने की कोशिश करता है, जो हमेशा (शाब्दिक) लेता है।
गाइल्स

आह, 'पूंछ / देव / अनंत' की तरह, अगर ऐसा कोई उपकरण होता।
स्टीफन लासवर्स्की

3
@StefanLasiewski आपके पास /dev/zeroभी है, अगर आपको विविधता पसंद नहीं है।
गाइल्स

35

यह मानते हुए कि छद्म यादृच्छिक डेटा पर्याप्त है, dd if=/dev/urandom of=target-file bs=1M count=1000वही करेगा जो आप चाहते हैं।

dd (1) एक इनपुट फ़ाइल से डेटा के ब्लॉक को पढ़ेगा और उन्हें आउटपुट फाइल पर लिखेगा। कमांड लाइन की भाषा थोड़ी विचित्र है, लेकिन यह उन मूल रूप से उपयोगी उपकरणों में से एक है जिनकी मूल बातें माहिर हैं।

इस मामले ifमें इनपुट फ़ाइल है, ofआउटपुट फ़ाइल है, bs"ब्लॉक आकार" है - और मैंने GNU एक्सटेंशन का उपयोग आकार को और अधिक आसानी से सेट करने के लिए किया है। (यदि आपके ddपास GNU एक्सटेंशन नहीं है तो आप 1048576 का भी उपयोग कर सकते हैं ।) countपढ़ने ifऔर लिखने के लिए ब्लॉक की संख्या है of

/dev/urandom/dev/randomलिनक्स पर डेस्यूज़ की तुलना में बेहतर विकल्प है , यह वास्तव में यादृच्छिक डेटा समाप्त होने पर अवरुद्ध होने के बजाय मजबूत छद्म यादृच्छिक डेटा पर वापस आ जाएगा।

आप http://www.random.org/ को एक और पथ के रूप में देखना चाह सकते हैं ताकि खुद को उत्पन्न किए बिना कुछ यादृच्छिक डेटा प्राप्त कर सकें।


3
एक नोट - जैसे यूनिट विनिर्देशन 1Mहर मानक ddसंस्करण में उपलब्ध नहीं हैं । यदि आपका संस्करण ddप्रभावित है, तो उपयोग करें bs=1048576
क्रिस डाउन

4
उदाहरण कमांड प्रत्येक 1,000,000 साइज के ब्लॉक की एक फाइल बनाएगा जिसका आकार 1 एमबी हो। यह लगभग 1 टीबी (1 एम x 1 एमबी) है, न कि 1 जीबी (जो 1 के एक्स 1 एमबी होगा)। एक तरफ के रूप में, एक बिंदु तक, ब्लॉक का आकार बढ़ाना और ब्लॉक की संख्या को कम करने से आउटपुट डेटा की एक बेहतर मात्रा के लिए बेहतर प्रवाह उत्पन्न होता है।
एक CVn

2
while true;do head /dev/urandom | tr -dc A-Za-z0-9;done | head -c 5000K | tee  5000kb

5MB यादृच्छिक चरित्र डेटा उत्पन्न करने के लिए इसका उपयोग किया। यदि आपको अलग-अलग आकार की आवश्यकता है, तो -cसिर का मूल्य बदलें, संगठन का नाम बदलें, निष्पादित करें और निष्पादित होने तक प्रतीक्षा करें।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.