0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

嵌入式物联网开发 来源:嵌入式物联网开发 作者:嵌入式物联网开发 2022-08-31 13:33 次阅读
笔者最近在项目自测试中,有个小小的需求:需要在原始文件的后面,追加一个**固定大小**的文件,组成一个更大的文件做测试,并且为了保证测试结果的准确性和随机性,这个固定大小的文件还必须是内容随机的。经过学习和整理,发现在**linux命令行**有个非常有用的命令**dd**就可以解决此问题。

​ 为了今后也能快速使用这个功能,我把这个功能的实现,用shell脚本文件的形式编写出来,需要生成文件的时候只需要在命令行里,按照约定的命令行参数输入对应的配置信息,就可以生成所需的文件,方便、快捷,高效工作就从此刻开始。

​ 废话不说,直接上脚本内容:

#########################################################################
# File Name: random-file.sh
# Author : szullc
# Created Time: 2018年12月03日 星期一 11时28分23秒
#########################################################################
#!/bin/bash -e

out_file_name=$1
file_size=$2
size_unit=$3
tmp_out_file_name=$out_file_name.tmp

function 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_param
check_file_size_if_integer
check_size_unit
create_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),那么你就需要自己修改脚本实现了;毕竟【为我所用】才是程序猿应该遵守的职业操守。

​ 因时间匆忙,笔者未来得及将生成文件的记录截图附上,望读者自行验证;若有不明白的地方,或者运行操作出错的,欢迎在评论席回复,笔者很乐意为你解答。


​ 经笔者自测试,生成文件用于测试完全没有问题;在日常工作使用脚本确实是大大提升了我们的工作效率,希望后续可以分享更多实用的、高效的脚本操作给大家,敬请关注。谢谢。

审核编辑:汤梓红
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 文件
    +关注

    关注

    1

    文章

    566

    浏览量

    24737
  • Shell
    +关注

    关注

    1

    文章

    365

    浏览量

    23366
  • 脚本
    +关注

    关注

    1

    文章

    389

    浏览量

    14864
收藏 人收藏

    评论

    相关推荐

    shell脚本进阶】几个常用的shell进阶脚本

    shell脚本进阶】几个常用的shell进阶脚本
    的头像 发表于 09-19 08:59 1888次阅读
    【<b class='flag-5'>shell</b><b class='flag-5'>脚本</b>进阶】几个常用的<b class='flag-5'>shell</b>进阶<b class='flag-5'>脚本</b>

    100Linux Shell脚本总结

    不知道大家有没有发现,会编写shell脚本的运维,工资不会低,并且他的工作会很轻松!今天浩道跟大家分享每一个Linux运维应知必会的100shel
    的头像 发表于 12-05 09:28 1255次阅读

    Linux Shell系列教程之第一个Shell脚本的建立

    通过上篇教程的学习,相信大家已经能够对shell建立起大体的印象了,接下来,我们通过
    发表于 08-28 14:01

    shell脚本的相关资料分享

    此笔记由个人整理塞上苍鹰_fly课程来自:正点原子_手把手教你学Linuxshell脚本简介shell脚本类似windows的批处理
    发表于 12-23 06:17

    嵌入式和物联网的shell脚本学习指南之shell脚本入门免费下载

    本文档的主要内容详细技术的是嵌入式和物联网的shell脚本学习指南之shell脚本入门免费下载。
    发表于 09-11 17:15 20次下载
    嵌入式和物联网的<b class='flag-5'>shell</b><b class='flag-5'>脚本</b>学习指南之<b class='flag-5'>shell</b><b class='flag-5'>脚本</b>入门免费下载

    shell脚本最简明的教程

    Shell脚本,就是利用Shell的命令解释的功能,对纯文本的文件进行解析,然后执行这些功能
    的头像 发表于 10-16 11:27 4834次阅读
    <b class='flag-5'>shell</b><b class='flag-5'>脚本</b>最简明的教程

    如何创建和执行简单的Linux shell脚本

     如果您愿意要尝试更长的shell脚本,请将下面的shell脚本(并附加为PDF和ODT文件)复制到文本编辑器中,保存,使其可执行并运行。当
    的头像 发表于 11-06 17:28 1.3w次阅读

    文剖析隐藏shell脚本内容的工具shc

    从事 Linux 开发的同学,经常需要编写 shell 脚本,有时脚本中会涉及到些敏感内容,比如
    的头像 发表于 08-14 10:44 2160次阅读
    <b class='flag-5'>一</b>文剖析隐藏<b class='flag-5'>shell</b><b class='flag-5'>脚本</b><b class='flag-5'>内容</b>的工具shc

    109实用shell脚本分享

    Shell脚本,就是利用Shell的命令解释的功能,对纯文本的文件进行解析,然后执行这些功能
    的头像 发表于 03-16 08:58 2627次阅读

    100Shell脚本经典案例解析

    今天浩道跟大家分享100Linux Shell脚本经典案例,让你次撸够。
    的头像 发表于 02-10 13:51 2653次阅读

    shell脚本基础知识

    shell脚本文件,里面存放的是特定格式的指令,系统可以使用脚本解析器翻译或解析指令并执行
    的头像 发表于 04-17 15:00 1090次阅读

    如何快速入门Shell脚本呢?

    Shell 语言作为类 Unix 系统的原生脚本,有着非常实用的价值。
    的头像 发表于 05-22 11:51 600次阅读

    Linux Shell脚本经典案例分享

    ​ 作为名 Linux 运维工程师,会写好的脚本不仅能提高工作效率,还能有更多的时间做自己的事。最近在网上冲浪的时候,发现大家对Shell脚本都有“心结”,要么觉得自己写出来不好
    发表于 06-16 14:03 650次阅读
    Linux <b class='flag-5'>Shell</b><b class='flag-5'>脚本</b>经典案例分享

    分享249拿来即用的shell脚本

      由于脚本案例太多,在此仅展示部分,完整版领取方式请见文末       249拿来即用的shell脚本!   这249
    的头像 发表于 07-07 10:52 1183次阅读
    分享249<b class='flag-5'>个</b>拿来即用的<b class='flag-5'>shell</b><b class='flag-5'>脚本</b>

    BASH shell脚本篇—文件处理介绍

    在Bash Shell脚本中,可以使用多种方法来对文件进行操作,包括读取文件或写入文件
    的头像 发表于 10-23 16:51 626次阅读