【shell脚本】如何快速生成一个固定大小且内容随机的文件?

笔者最近在项目自测试中,有个小小的需求:需要在原始文件的后面,追加一个**固定大小**的文件,组成一个更大的文件做测试,并且为了保证测试结果的准确性和随机性,这个固定大小的文件还必须是内容随机的。经过学习和整理,发现在**linux命令行**有个非常有用的命令**dd**就可以解决此问题。 ​ 为了今后也能快速使用这个功能,我把这个功能的实现,用shell脚本文件的形式编写出来,需要生成文件的时候只需要在命令行里,按照约定的命令行参数输入对应的配置信息,就可以生成所需的文件,方便、快捷,高效工作就从此刻开始。
​ 废话不说,直接上脚本内容:
########################################################################## file name: random-file.sh# author : szullc# created time: 2018年12月03日 星期一 11时28分23秒##########################################################################!/bin/bash -eout_file_name=$1file_size=$2size_unit=$3tmp_out_file_name=$out_file_name.tmpfunction check_input_param(){ if [[ a == a$out_file_name || a == a$file_size || a == a$size_unit ]]; then echo error param input ! echo type in like this: $0 [out-file-name] [file-szie] [size-unit] echo param list as follow: echo [out-file-name]: input your output file name, relative path and absolute path are ok. echo [file-size]: the file size of output file, which must be an integer. echo [size-unit]: only support k/m/g. they mean xxxkb/xxxmb/xxxgb. exit fi}function check_file_size_if_integer(){ if [ -n $file_size -a $file_size = ${file_size//[^0-9]/} ]; then echo file_size=$file_size else echo [file-size] error: the file size of output file, which must be an integer. exit fi}function check_size_unit(){ if [[ k != $size_unit && m != $size_unit && g != $size_unit ]]; then echo [size-unit] error: only support k/m/g. they mean xxxkb/xxxmb/xxxgb. exit fi}function create_random_file(){ dd if=/dev/urandom of=$tmp_out_file_name bs=1$size_unit count=$file_size conv=notrunc mv $tmp_out_file_name $out_file_name}check_input_paramcheck_file_size_if_integercheck_size_unitcreate_random_file [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-esxhihal-1661923836558)(data:image/gif;base64,r0lgodlhaqabapabap///waaach5baekaaaalaaaaaabaaeaaaicraeaow==)]
​ 脚本内容通俗易懂,稍微有点shell脚本的知识就可以看的明白;它的使用方法也非常简单,在需要在linux命令行环境下,先确保这个shell脚本文件有x可执行属性,然后输入:
./random-file.sh my-random.bin 1024 k ​ 按下回车,它就会自动在当前目录生成一个1024kb大小,名字为my-random.bin的文件,且文件的内容是随机的。类似地,输入:
./random-file.sh my-random2.bin 1234 m ​ 按下回车,它就可以自动生成一个大小为1234mb,名字为my-random2.bin的随机文件。如果你的硬盘够猛,你想完一po大的,你也可以试下:
./random-file.sh my-random.txt 12340 g ​ 按下回车,估计你要等个几十分钟,甚至几个小时,搞不好几十个小时了。。。具体多久,笔者也没有胆量去试一试,要不你来试试?
​ 【值得注意的是】,该脚本仅支持xxxkb、xxxmb、xxxgb大小的文件生成;如果你想生成更小的文件(比如xxxb),或者更大的文件(比如1024tb),那么你就需要自己修改脚本实现了;毕竟【为我所用】才是程序猿应该遵守的职业操守。
​ 因时间匆忙,笔者未来得及将生成文件的记录截图附上,望读者自行验证;若有不明白的地方,或者运行操作出错的,欢迎在评论席回复,笔者很乐意为你解答。
​ 经笔者自测试,生成文件用于测试完全没有问题;在日常工作使用脚本确实是大大提升了我们的工作效率,希望后续可以分享更多实用的、高效的脚本操作给大家,敬请关注。谢谢。


传统行业劳动密集度高 是国产机器人发展的突破点
跟随同茂线性马达走进“BEYOND”博览会
虹科干货 | 揭秘AR眼镜中的光学技术
想靠AI炒股致富,结果恐怕会让你怀疑人生
国芯思辰 |碳化硅MOSFET B1M160120HC用于车载充电的汽车功率模块
【shell脚本】如何快速生成一个固定大小且内容随机的文件?
议程抢鲜看|OpenHarmony技术峰会——OS内核及视窗分论坛
华天科技向原股东配售逾6亿股新股获证监会核准
全球十大芯片代工企业排行榜
vivo推出“vivo X21 FIFA世界杯非凡版”手机 定价3698元
评估相机性能的几个关键要素
基于FPGA的可扩展高速FFT处理器的设计与实现
LG与麦格纳联手开发汽车控制模块,预计2027年启用
大模型分布式训练并行技术(一)-概述
【世说设计】优化移动天线调谐的简易方法
再过14年后,人工智能会是什么样子?
CMOS语音芯片WTN6096在防狼报警器的应用
大功率超声波pcb线路板设计
电子芯闻早报:IBM 10亿美元收购医学公司
我们距5G正式商用只差一步之遥