ฉันจะสร้างไฟล์ใหม่และเติมด้วยข้อมูลแบบสุ่มมูลค่า 1 กิกะไบต์ได้อย่างไร ฉันต้องการสิ่งนี้เพื่อทดสอบซอฟต์แวร์
ฉันชอบที่จะใช้หรือ/dev/random/dev/urandom
ฉันจะสร้างไฟล์ใหม่และเติมด้วยข้อมูลแบบสุ่มมูลค่า 1 กิกะไบต์ได้อย่างไร ฉันต้องการสิ่งนี้เพื่อทดสอบซอฟต์แวร์
ฉันชอบที่จะใช้หรือ/dev/random/dev/urandom
คำตอบ:
โดยส่วนใหญ่:
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
headไม่เข้าใจ-cในเครื่อง Solaris 10 ของฉัน
headสามารถอ่าน/dev/urandomได้ แต่tailทำไม่ได้
tailพยายามครั้งแรกที่จะไปที่จุดสิ้นสุดของไฟล์อินพุตซึ่งจะใช้เวลาตลอดไป (ตัวอักษร)
/dev/zeroดีถ้าคุณไม่ชอบความหลากหลาย
สมมติว่าข้อมูลแบบหลอกหลอกเพียงพอแล้วdd if=/dev/urandom of=target-file bs=1M count=1000จะทำสิ่งที่คุณต้องการ
dd (1)จะอ่านบล็อกของข้อมูลจากไฟล์อินพุตและเขียนลงในไฟล์เอาต์พุต ภาษาของบรรทัดคำสั่งเป็นสิ่งที่แปลก แต่ก็เป็นหนึ่งในเครื่องมือที่มีประโยชน์จริง ๆ ที่ควรค่าแก่การเรียนรู้พื้นฐานของ
ในกรณีนี้ifคือไฟล์อินพุตคือไฟล์ofเอาต์พุตbsคือ "ขนาดบล็อก" - และฉันใช้ส่วนขยาย GNU เพื่อกำหนดขนาดให้สะดวกยิ่งขึ้น (คุณยังสามารถใช้ 1048576 ถ้าคุณddไม่ได้มีนามสกุล GNU.) countคือจำนวนของบล็อกที่จะอ่านจากและเขียนไปยังifof
/dev/urandomเป็นทางเลือกที่ดีกว่า/dev/randomเพราะบน Linux มันจะถอยกลับไปยังข้อมูลแบบหลอกเทียมที่แข็งแกร่งแทนที่จะปิดกั้นเมื่อข้อมูลแบบสุ่มอย่างแท้จริงหมดลง
คุณอาจต้องการดูhttp://www.random.org/เป็นอีกเส้นทางหนึ่งในการรับข้อมูลแบบสุ่มโดยไม่ต้องสร้างเอง
1Mไม่มีในddตัวแปรมาตรฐานทุกรุ่น ถ้ารุ่นของคุณเป็นได้รับผลกระทบการใช้งานdd bs=1048576
while true;do head /dev/urandom | tr -dc A-Za-z0-9;done | head -c 5000K | tee 5000kb
ใช้สิ่งนี้เพื่อสร้างข้อมูลตัวอักษรแบบสุ่ม 5MB หากคุณต้องการขนาดแตกต่างกันให้เปลี่ยน-cค่าส่วนหัวเปลี่ยนชื่อ outfile ดำเนินการและรอจนกว่าการดำเนินการจะเสร็จสิ้น
viด้วยvi -w randomfileและถามคนที่ไม่เคยเห็นviเพื่อออกจากโปรแกรม ;)