小叙
我知道
rm -rf /
是不可取的,因为我测试过
但我却遇到了一次类似的经历
整个虚拟机直接挂了
怎么挂的?就是你敲所有的命令都变成 not found
经历
我当时脚本在 dirA
(假设)
dirA
中有个一个 aa.tar.gz
的压缩包和一个 run.sh
脚本
当我运行 run.sh
时,会去解压 aa.tar.gz
这个文件,但它解压出来在下级目录 aa
我的脚本用到这个解压出来的目录里面的内容,可脚本一开始引用的是当前目录,所有就造成文件、目录找不到
(这个原因主要在我,我在重新打包的 aa.tar.gz
时没考虑这个问题)
但想到一个弥补办法,那就是在解压 aa.tar.gz
这个文件后,把里面的目录移除出来……然后悲催的事情就发生了
我的命令:
mv "aa/*" .
结果一运行脚本,就报错 aa/* 目录或文件找不到
我很纳闷,怎会这样?百思不得其解……
当我在敲其他命令,比如 ls
、pwd
等都报错了
此时我才发现问题大了………………
当时开着虚拟机,还开着生产环境……当时脑袋一下就翁了 感觉确认我现在操作的是生产环境还是虚拟机,很庆幸,我操作的是虚拟机
回过神来,我把命令改成
代码语言:javascript复制mv aa/* .
测试效果是OK的,达到预期
我再次把代码改成
代码语言:javascript复制mv "aa/"* .
同样测试通过……
结语
顿悟
原来,*
在引号里面会被当成字符串处理
我的环境 --- CentOS7.9