结果展示
这是一次较为惨痛的事件,相信大家都知道rm -rf这个命令吧,这是笔者错误执行了某些代码后的结果(桌面十分的干净,删除了包括而不限于我的大英作业、大物仿真作业、科中名词解释作业以及第二天要用到的科中期末大会总结ppt)。
事件分析
起因是这样的,笔者打算在虚拟机上安装科学上网工具,在虚拟机中通过sh脚本安装软件,但是笔者发现他的脚本中安装的软件是从外网上面安装的,导致笔者的电脑一直显示安装超时,于是笔者决定先从自己的电脑下载好他要下载的东西,然后修改sh脚本。最终改成了下面的代码(源代码懒得去找了):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62
| #!/bin/sh
\# Set ARG PLATFORM\=$1 TAG\=$2 if \[ \-z "$PLATFORM" \]; then ARCH\="64" else case "$PLATFORM" in linux/386) ARCH\="32" ;; linux/amd64) ARCH\="64" ;; linux/arm/v6) ARCH\="arm32-v6" ;; linux/arm/v7) ARCH\="arm32-v7a" ;; linux/arm64linux/arm64/v8) ARCH\="arm64-v8a" ;; \*) ARCH\="" ;; esac fi \[ \-z "${ARCH}" \] && echo "Error: Not supported OS Architecture" && exit 1
\# Download files V2RAY\_FILE\="v2ray-linux-${ARCH}.zip" DGST\_FILE\="v2ray-linux-${ARCH}.zip.dgst"
if \[ $? \-ne 0 \]; then echo "Error: Failed to download binary file: ${V2RAY\_FILE} ${DGST\_FILE}" && exit 1 fi echo "Download binary file: ${V2RAY\_FILE} ${DGST\_FILE} completed"
\# Check SHA512 LOCAL\=$(openssl dgst -sha512 v2ray.zip sed 's/(\[^)\]\*)//g') STR\=$(cat v2ray.zip.dgst grep 'SHA512' head -n1)
if \[ "${LOCAL}" \= "${STR}" \]; then echo " Check passed" && rm \-fv v2ray.zip.dgst else echo " Check have not passed yet " && exit 1 fi
\# Prepare echo "Prepare to use" unzip v2ray.zip && chmod +x v2ray v2ctl mv v2ray v2ctl /usr/bin/ mv geosite.dat geoip.dat /usr/local/share/v2ray/ mv config.json /etc/v2ray/config.json
\# Clean rm \-rf ${PWD}/\* echo "Done"
|
笔者直接从主机上下载它要下载的东西,所以需要将代码中对应下载那一行的代码删除,要不还是会出现下载超时的现象,最终改成了这个代码,比较凑巧的是笔者在主机上安装过git bash,于是主机上直接就可以运行这个sh脚本,然后就先在主机上面试了试,结果如上图,桌面变的特别干净。。。
大家应该已经看出这代码有些不对劲了吧,对,rm -rf ${PWD}就这玩意。
想必大家应该清楚怎么回事了吧……
原本作者是想把当前工作目录的安装包什么的清了,但是我当时把给pwd赋值的那行也删了,因为刚开始的工作环境是在桌面,于是我桌面没了……
反思
sh脚本这种东西,执行前还是先大概看看吧,首先拿记事本打开,ctrl+F查找一下rm什么的,看看有没有一些危险的代码,确认无误之后再去执行。我这种就属于shell没学明白就瞎倒腾的。
后记
笔者痛失大英作业和同学聊天时,同学表示,你跟老师说这些还不如跟老师说你作业被猫撕了可信度高……