Linux Shell误删除根目录怎么解决

这篇文章主要介绍“Linux Shell误删除根目录怎么解决”,在日常操作中,相信很多人在Linux Shell误删除根目录怎么解决问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Linux Shell误删除根目录怎么解决”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

1、变量为空导致误删文件

base_path=/usr/sbin tmp_file=`cmd_invalid` # rm -rf $base_path/$tmp_file

这种情况下如果 cmd 执行出错或者返回为空,后果将是灾难性的,那如何防范呢?

(1)利用 shell 的变量扩展功能,如果变量为空赋给默认值或者抛出异常退出脚本:

echo ${base_path:?var is empty}/${tmp_file:?var is empty}  -bash: tmp_file: var is empty

(2)人肉判断变量是否为空:

[[ ${tmp_file} == "" ]] && echo 1 1 [[ -z ${tmp_file} ]] && echo 1 1

(3)如果变量未定义还可以开启 set 选项:

# cat a.sh set -u b= echo $b echo $a echo 1 # bash a.sh a.sh: line 4: a: unbound variable

2、路径含有空格导致误删文件

史上最经典的要数下面这个bumblebee项目了,这个项目本来不出名,不过,程序在其安装脚本install.sh里的一个bug让这个项目一下子成了全世界最瞩目的项目。

Linux Shell误删除根目录怎么解决  linux 第1张

那我们该如何防范这种问题呢?

(1)良好的编程习惯:变量加引号防止扩展

path="/usr/local /sbin"  # rm -rf $path  rm -rf "$path"

(2)对变量进行语义检查

比如检测是否含有空格等特殊字符,不通用,不推荐这么做

3、目录或文件含有特殊字符导致误删文件

Linux Shell误删除根目录怎么解决  linux 第2张

Linux Shell误删除根目录怎么解决  linux 第3张

ll  总用量 8  drwxrwxr-x 2 work work 4096 11月 24 18:57 '~'  -rw-rw-r-- 1 work work 34 11月 24 19:49 a.sh  # rm -rf ~

那我们该如何防范这种问题呢?

(1)良好的编程习惯:变量加引号防止扩展

rm -rf "~"

(2)如果不确定,删除之前 echo 或 find 一下,看变量被扩展成啥了

echo rm -rf "~"  rm -rf ~  echo rm -rf ~  rm -rf /home/work

4、cd 切换目录失败,导致文件被误删

cd ooxx_path_not_exsit  rm -rf *.exe

恭喜这种情况下你的当前目录下匹配文件都会被误删,那我们该如何防范这种问题呢?

(1)使用逻辑短路操作

cd path && rm -rf *.exe

(2)检测 path 是否存在

[[ -d ~ ]] && echo 1  1

5、***解决方案

不要使用 root 操作系统资源,这样至少不会删除系统文件。

6、在登录 shell 下使用友好的提示符

友好的命令提示符能时刻提醒操作者当前在哪个路径下,避免错误的路径下操作文件。

Linux Shell误删除根目录怎么解决  linux 第4张

Linux Shell误删除根目录怎么解决  linux 第5张

到此,关于“Linux Shell误删除根目录怎么解决”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注蜗牛博客网站,小编会继续努力为大家带来更多实用的文章!

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:niceseo99@gmail.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

评论

有免费节点资源,我们会通知你!加入纸飞机订阅群

×
天气预报查看日历分享网页手机扫码留言评论电报频道链接