Cara membuat file .txt (teks yang dapat dibaca manusia seperti ascii) secara acak di linux

43

Saya perlu membuat file teks yang harus berisi data teks acak yang dapat dibaca oleh manusia. Saya tahu bahwa kita dapat menggunakan /dev/urandomdan /dev/randomuntuk mendapatkan data acak. Tapi itu tidak bisa dibaca oleh manusia. Saya perlu membuat file yang berisi format teks acak. Apakah ada cara untuk melakukan itu?

Chinna
sumber
1
"Dapat dibaca oleh manusia" seperti masuk akal? Kalimat lengkap? Atau hanya beberapa kata kamus?
slhck
Bergantung pada definisi "acak" dan apa yang ingin Anda capai, ada sejumlah generator Lorem Ipsum yang tersedia di, atau dapat diakses dari, Linux, sering kali dapat diunduh dari repositori distro Anda. Lihat Apakah ada sesuatu seperti generator lorem ipsum? , Generator lorem ipsum Offline , aur.archlinux.org/packages/lorem-ipsum-generator , dll.
fixer1234

Jawaban:

93

Kita bisa melakukannya dengan mengikuti perintah

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

Itu menciptakan file dengan nama file.txt ukuran 10 MB.

Chinna
sumber
1
Ini hebat, itu juga menambahkan baris baru setiap 76 karakter juga.
wisbucky
15

dapatkan output dari:

tr -dc A-Za-z0-9 </dev/urandom 

dan pipa ke file.

Anda dapat menggunakan perintah head dengan -c atau -n untuk membatasi ukuran file

contoh untuk menghasilkan file 1kB a.txt:

tr -dc A-Za-z0-9 </dev/urandom | head -c 1024 > a.txt
pengguna1403360
sumber
Anda juga dapat menggunakan [:alnum:]bukan A-Za-z0-9. Juga, jika Anda ingin spasi dan baris baru ditaburi, Anda dapat melakukan variasi ini:tr -dc '[:alnum:] \n' ...
wisbucky
4

base64tampaknya hanya menghasilkan karakter alfanumerik plus /dan +.

Saya suka ini untuk mendapatkan lebih banyak karakter "tanda baca", seperti

'[:punct:]'
  Punctuation characters; in the 'C' locale and ASCII character
  encoding, this is ! " # $ % & ' ( ) * + , - . / : ; < = > ? @ [ \
  ] ^ _ ` { | } ~

Jadi gunakan ini:

'[:graph:]'
     Graphical characters: '[:alnum:]' and '[:punct:]'

dan gunakan truntuk menghapus tanda kutip tunggal 'backticks` dan backslash \

tr -dc '[:graph:]' < /dev/urandom | tr -d \''\\'\` | head -c [size]

yang -cukuran pilihan untuk headdapat memiliki multiplier akhiran: b 512, kB 1000, K 1024, MB 1000 * 1000, M 1024 * 1024, GB 1000 * 1000 * 1000, G 1024 * 1024 * 1024, dan seterusnya untuk T, P , E, Z, Y.

Xen2050
sumber
3

Jika Anda tidak memiliki / dev / urandom (karena mungkin Anda menggunakan konsol GitBash), Anda dapat menggunakan:

openssl rand 33000 -base64 -out dump.txt
adonan
sumber
3

Jika Anda ingin tetap menggunakan kata-kata kamus nyata gunakan trik itu:

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

Perhatikan bahwa Anda tidak menentukan geometri (berapa banyak kata per baris, berapa banyak baris?)

Sejuk
sumber