ฉันจะสร้างไฟล์ใหม่และเติมด้วยข้อมูลแบบสุ่มมูลค่า 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
คือจำนวนของบล็อกที่จะอ่านจากและเขียนไปยังif
of
/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
เพื่อออกจากโปรแกรม ;)