怎么在Linux系统通过命令行生成随机文件

发布时间:2021-11-08 15:47:26 作者:小新
来源:亿速云 阅读:448

这篇文章将为大家详细讲解有关怎么在Linux系统通过命令行生成随机文件,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

1.当你不需要关心随机文件的内容,只需一个固定大小的文件
2.当你不需要关心随机文件的内容,但期望测试文件能有统计的行

/dev/zero改为/dev/urandom/dev/urandom是linux下的随机数生成器

关于/dev/urandom/dev/random两者的区别就不在此详细讨论,大概就是,前者是不受系统interrupts的限制,即使没有足够的interrupt它也能通过随机数生成器产生足够的输出值;而后者如果用在dd上,它不能被ctrl+c或者kill -9中断,如果ds的值较大时,产生的随机值不足而长期占用CPU。虽然说/dev/random产生的随机数会更随机些,但与dd混用还是建议用/dev/urandom效率更高。

缺点跟/dev/zero比当然是效率会更低些了,生成个100Mb的文件需要10秒左右,而且文件并没有可读的内容,一般的情况基本上是满足了。

漏了说句,dd是linux与unix都支持的指令。

3.当你关心文件的随机内容行数,而不关心内容是否有所重复

这里的思路就是找一个参照文件(比如说2行),将文件重新定向到新的文件,再mv覆盖保存,外加一个for循环。(n为循环次数,产生的文件行为2^(n+1))

例子:假设先建立一个file.txt文件,里面含有Hello 和 World两行
for i in {1..n}; do cat file.txt file.txt > file2.txt && mv file2.txt file.txt; done

由于是阶乘,n=20左右已经是200W行,效率会下降地比较厉害

4.当你关心随机文件的内容,而不想出现重复内容行情况

这种情况下系统的指令应该是不能满足了,或者可以通过操作系统的指令写一大串脚本也可以达到,但不建议这么做,因为可读性和维护性考虑,你应该要引入Ruby或者Python类的脚本语言帮忙了
但还是要借助些系统的东西来帮忙

思路:/usr/share/dict/words里面有记录一些单词,一共235886行,每行一个单词
可以从里面挑选一些作为文件的内容
加循环达到我们想要的随机文件要求

举例:ruby -e 'a=STDIN.readlines;X.times do; b=[];Y.times do; b<<a[rand(a.size)].chomp end; puts b.join(" ")' < /usr/share/dict/words > file.txt

X为随机文件需要的行数,Y为从words中读取的单词,虽说组合成一句的命令,还是可以读懂的;从标准输入中重复读取Y个单词,写入到b列表中,然后再通过join空格连接内容写入到标准输出文件file.txt中

这样基本很少会有重复的行了,而且生成的效率与其他方法对比还是可以的,10秒生成100Mb文件。欢迎大家讨论。

关于“怎么在Linux系统通过命令行生成随机文件”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

推荐阅读:
  1. 生成10个随机文件
  2. 命令行生成vue项目框架

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

linux

上一篇:开发中常见的Oracle三大故障与调优方法是什么

下一篇:如何配置sysctl.conf文件来优化系统

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》