当前位置: 首页 > 科技观察

Linux Shell 从入门到删除根目录跑路指南_0

时间:2023-03-13 01:08:40 科技观察

LinuxShell指南从入门到删除根目录,可以说虽然是居家旅行的良药,但也是杀人的利器~今天就来说说Linux下的下一个常见问题:如何避免误删目录。下面将详细介绍不同场景下的目录误删以及相应的解决办法。1.变量为空,文件被误删。base_path=/usr/sbintmp_file=`cmd_invalid`#rm-rf$base_path/$tmp_file这种情况下,如果cmd执行错误或者返回空,后果不堪设想,那又如何呢?预防呢?(1)利用shell的变量扩展功能,如果变量为空,赋默认值或抛出异常退出脚本:echo${base_path:?varisempty}/${tmp_file:?varisempty}-bash:tmp_file:varisempty(2)人肉判断变量是否为空:[[${tmp_file}==""]]&&echo11[[-z${tmp_file}]]&&echo11(3)如果变量没有定义,你也可以打开设置选项:#cata。shset-ub=echo$becho$aecho1#basha.sha.sh:line4:a:unboundvariable2,路径包含空格,导致误删文件。历史上最经典的就是下面这个大黄蜂项目。这个项目并不出名,但是程序安装脚本install.sh中的一个bug让这个项目成为了世界上最受瞩目的项目。那么我们如何预防此类问题呢?(1)良好的编程习惯:对变量加引号,防止扩展path="/usr/local/sbin"#rm-rf$pathrm-rf"$path"(2)对变量进行语义检查,比如检测是否有特殊字符例如包含空格。这不是通用的,不推荐。--1workwork34November2419:49a.sh#rm-rf~那么如何防止这种问题呢?(1)良好的编程习惯:变量上的引号防止展开rm-rf"~"(2)如果不确定,删除前先echo或find看看变量被展开到echorm-rf"~"rm-rf~echorm-rf~rm-rf/home/work4,cd切换目录失败,导致文件被误删cdooxx_path_not_exsitrm-rf*.exe恭喜这样你当前目录下匹配的文件会被删除错误,那么我们如何才能防止这种问题呢?(1)使用逻辑短路操作cdpath&&rm-rf*.exe(2)检查路径是否存在[[-d~]]&&echo115,***解决方法不要使用root操作系统资源,这样至少系统文件不会被删除。6.在登录shell中使用友好的提示符。友好的命令提示符,时刻提醒操作者当前所在路径,避免在错误路径下操作文件。OK,本文到此结束。我列出了一些常见的案例和解决方法,希望对你有所启发。如果您有其他的案例和建议,欢迎交流~