ฉันต้องสร้างไฟล์ข้อความซึ่งควรมีข้อมูลข้อความแบบสุ่มที่มนุษย์สามารถอ่านได้ ฉันรู้ว่าเราสามารถใช้/dev/urandomและ/dev/randomรับข้อมูลแบบสุ่ม แต่มนุษย์ไม่สามารถอ่านได้ ฉันต้องการสร้างไฟล์ที่มีรูปแบบข้อความแบบสุ่ม มีวิธีใดที่จะทำเช่นนั้น?
ฉันต้องสร้างไฟล์ข้อความซึ่งควรมีข้อมูลข้อความแบบสุ่มที่มนุษย์สามารถอ่านได้ ฉันรู้ว่าเราสามารถใช้/dev/urandomและ/dev/randomรับข้อมูลแบบสุ่ม แต่มนุษย์ไม่สามารถอ่านได้ ฉันต้องการสร้างไฟล์ที่มีรูปแบบข้อความแบบสุ่ม มีวิธีใดที่จะทำเช่นนั้น?
คำตอบ:
เราสามารถทำได้โดยทำตามคำสั่ง
base64 /dev/urandom | head -c 10000000 > file.txt
มันสร้างไฟล์ด้วยชื่อ file.txt ขนาด 10 MB
รับผลลัพธ์ของ:
tr -dc A-Za-z0-9 </dev/urandom
และไพพ์ไปที่ไฟล์
คุณสามารถใช้คำสั่งheadด้วย -c หรือ -n เพื่อ จำกัด ขนาดไฟล์
ตัวอย่างเพื่อสร้างไฟล์ 1kB a.txt:
tr -dc A-Za-z0-9 </dev/urandom | head -c 1024 > a.txt
[:alnum:] A-Za-z0-9นอกจากนี้หากคุณต้องการให้มีช่องว่างและบรรทัดใหม่โรยในคุณสามารถทำรูปแบบนี้:tr -dc '[:alnum:] \n' ...
base64ดูเหมือนว่าตัวอักษรและตัวเลขการส่งออกเพียงบวกและ/+
ฉันชอบสิ่งนี้เพื่อรับตัวอักษร "เครื่องหมายวรรคตอน" เพิ่มเติม
'[:punct:]'
Punctuation characters; in the 'C' locale and ASCII character
encoding, this is ! " # $ % & ' ( ) * + , - . / : ; < = > ? @ [ \
] ^ _ ` { | } ~
ดังนั้นใช้สิ่งนี้:
'[:graph:]'
Graphical characters: '[:alnum:]' and '[:punct:]'
และใช้trเพื่อลบเครื่องหมายคำพูดเดี่ยว 'และ backslashes \
tr -dc '[:graph:]' < /dev/urandom | tr -d \''\\'\` | head -c [size]
-cตัวเลือกขนาดที่จะheadสามารถมีคำต่อท้ายคูณ: B 512 กิโลไบต์ 1000 K 1024 MB 1000 * 1000 M 1024 * 1024 GB 1000 * 1000 * 1000 G 1024 * 1024 * 1024 และอื่น ๆ สำหรับ T, P , E, Z, Y
หากคุณไม่มี / dev / urandom (เพราะบางทีคุณใช้คอนโซล GitBash) คุณสามารถใช้:
openssl rand 33000 -base64 -out dump.txt
หากคุณต้องการยึดติดกับคำในพจนานุกรมจริงให้ใช้เคล็ดลับนั้น:
cat /usr/share/dict/words | sort -R | head -1024 > file.txt
โปรดทราบว่าคุณไม่ได้ระบุรูปทรงเรขาคณิต (จำนวนคำต่อบรรทัด, กี่บรรทัด?)