วิธีสร้างไฟล์. txt แบบสุ่ม (ข้อความที่มนุษย์สามารถอ่านได้เช่น ascii) ใน linux


43

ฉันต้องสร้างไฟล์ข้อความซึ่งควรมีข้อมูลข้อความแบบสุ่มที่มนุษย์สามารถอ่านได้ ฉันรู้ว่าเราสามารถใช้/dev/urandomและ/dev/randomรับข้อมูลแบบสุ่ม แต่มนุษย์ไม่สามารถอ่านได้ ฉันต้องการสร้างไฟล์ที่มีรูปแบบข้อความแบบสุ่ม มีวิธีใดที่จะทำเช่นนั้น?


1
"มนุษย์สามารถอ่านได้" ในการทำความรู้สึกที่แท้จริง? ประโยคแบบเต็ม? หรือเพียงแค่บางคำพจนานุกรม?
slhck

ทั้งนี้ขึ้นอยู่กับคำจำกัดความของ "การสุ่ม" และสิ่งที่คุณกำลังพยายามทำให้สำเร็จมีเครื่องกำเนิดไฟฟ้า Lorem Ipsum จำนวนหนึ่งที่มีอยู่ในหรือสามารถเข้าถึงได้จาก Linux ซึ่งมักจะดาวน์โหลดได้จากที่เก็บของ distro ของคุณ ดูมีบางอย่างเช่น lorem ipsum generator หรือไม่? , เครื่องกำเนิดไฟฟ้าlorem ipsum ออฟไลน์ , aur.archlinux.org/packages/lorem-ipsum-generatorฯลฯ
fixer1234

คำตอบ:


93

เราสามารถทำได้โดยทำตามคำสั่ง

base64 /dev/urandom | head -c 10000000 > file.txt

มันสร้างไฟล์ด้วยชื่อ file.txt ขนาด 10 MB


1
สุดยอดนี้มันยังเพิ่มบรรทัดใหม่ทุกๆ 76 ตัวละครด้วย
wisbucky

15

รับผลลัพธ์ของ:

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' ...
wisbucky

4

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


3

หากคุณไม่มี / dev / urandom (เพราะบางทีคุณใช้คอนโซล GitBash) คุณสามารถใช้:

openssl rand 33000 -base64 -out dump.txt

3

หากคุณต้องการยึดติดกับคำในพจนานุกรมจริงให้ใช้เคล็ดลับนั้น:

cat /usr/share/dict/words | sort -R | head -1024 > file.txt

โปรดทราบว่าคุณไม่ได้ระบุรูปทรงเรขาคณิต (จำนวนคำต่อบรรทัด, กี่บรรทัด?)

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.