筆者最近在項(xiàng)目自測(cè)試中,有個(gè)小小的需求:需要在原始文件的后面,追加一個(gè)**固定大小**的文件,組成一個(gè)更大的文件做測(cè)試,并且為了保證測(cè)試結(jié)果的準(zhǔn)確性和隨機(jī)性,這個(gè)固定大小的文件還必須是內(nèi)容隨機(jī)的。經(jīng)過學(xué)習(xí)和整理,發(fā)現(xiàn)在**linux命令行**有個(gè)非常有用的命令**dd**就可以解決此問題。
? 為了今后也能快速使用這個(gè)功能,我把這個(gè)功能的實(shí)現(xiàn),用shell腳本文件的形式編寫出來,需要生成文件的時(shí)候只需要在命令行里,按照約定的命令行參數(shù)輸入對(duì)應(yīng)的配置信息,就可以生成所需的文件,方便、快捷,高效工作就從此刻開始。
? 廢話不說,直接上腳本內(nèi)容:
#########################################################################
# File Name: random-file.sh
# Author : szullc
# Created Time: 2018年12月03日 星期一 11時(shí)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
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-esXhiHal-1661923836558)(data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==)]
? 腳本內(nèi)容通俗易懂,稍微有點(diǎn)shell腳本的知識(shí)就可以看的明白;它的使用方法也非常簡(jiǎn)單,在需要在linux命令行環(huán)境下,先確保這個(gè)shell腳本文件有x可執(zhí)行屬性,然后輸入:
- ./random-file.sh my-random.bin 1024 K
? 按下回車,它就會(huì)自動(dòng)在當(dāng)前目錄生成一個(gè)1024KB大小,名字為my-random.bin的文件,且文件的內(nèi)容是隨機(jī)的。類似地,輸入:
- ./random-file.sh my-random2.bin 1234 M
? 按下回車,它就可以自動(dòng)生成一個(gè)大小為1234MB,名字為my-random2.bin的隨機(jī)文件。如果你的硬盤夠猛,你想完一po大的,你也可以試下:
- ./random-file.sh my-random.txt 12340 G
? 按下回車,估計(jì)你要等個(gè)幾十分鐘,甚至幾個(gè)小時(shí),搞不好幾十個(gè)小時(shí)了。。。具體多久,筆者也沒有膽量去試一試,要不你來試試?
? 【值得注意的是】,該腳本僅支持xxxKB、xxxMB、xxxGB大小的文件生成;如果你想生成更小的文件(比如xxxB),或者更大的文件(比如1024TB),那么你就需要自己修改腳本實(shí)現(xiàn)了;畢竟【為我所用】才是程序猿應(yīng)該遵守的職業(yè)操守。
? 因時(shí)間匆忙,筆者未來得及將生成文件的記錄截圖附上,望讀者自行驗(yàn)證;若有不明白的地方,或者運(yùn)行操作出錯(cuò)的,歡迎在評(píng)論席回復(fù),筆者很樂意為你解答。
? 經(jīng)筆者自測(cè)試,生成文件用于測(cè)試完全沒有問題;在日常工作使用腳本確實(shí)是大大提升了我們的工作效率,希望后續(xù)可以分享更多實(shí)用的、高效的腳本操作給大家,敬請(qǐng)關(guān)注。謝謝。
-
文件
+關(guān)注
關(guān)注
1文章
555瀏覽量
24638 -
Shell
+關(guān)注
關(guān)注
1文章
361瀏覽量
23234 -
腳本
+關(guān)注
關(guān)注
1文章
384瀏覽量
14793
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論