如何在linux中创建随机.txt(人类可读的文本,如ascii)文件


39

我需要创建一个文本文件,其中应包含人类可以读取的随机文本数据。我知道我们可以使用/dev/urandom/dev/random获取随机数据。但它不是人类可读的。我需要创建一个包含随机文本格式的文件。有没有办法做到这一点?


1
“人类可读”和实际意义一样吗?完整的句子?或者只是一些字典单词?
slhck

根据“随机”的定义以及您要完成的任务,Linux中有许多Lorem Ipsum生成器可供使用,也可从Linux进行访问,通常可从您的发行版存储库下载。看是否有类似lorem ipsum发电机的东西?离线lorem ipsum发电机aur.archlinux.org/packages/ lorem-ipsum-generator
fixer1234

Answers:


87

我们可以通过以下命令来完成

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

它创建一个名为file.txt的文件,大小为10 MB。


14

获得输出:

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

4

base64似乎只输出字母数字字符加/+

我喜欢这个以获得更多“标点符号”字符,比如

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

所以使用这个:

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

并用于tr删除单引号'反引号`和反斜杠\

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

-c大小选项,head可以有一个乘法器后缀:乙512,KB 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

2

如果你想坚持真正的字典单词使用这个技巧:

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

请注意,您没有指定几何(每行有多少个单词,有多少行?)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.