Linux Shell从入门到删除根目录跑路指南_Redis_青云站长教程网
欢迎来到站长教程网!
  • 秒到短信接口 免费试用
  • 微信支付宝接口 秒结算
  • 中文网站排名|申请加入
  • 搜索引擎全站查询
  • 查询移动网站权重数据
  • 海外主机 台湾公司直销
  • Redis

    当前位置:主页 > 数据库 > Redis >

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

    时间:2019-08-12|栏目:Redis|点击:
  • 如何避免误删目录。下文会详细的讲述不同的场景下误删目录,以及相应的解决方案。

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

    base_path=http://www.itbiancheng.com/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从入门到删除根目录跑路指南

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

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

    path="/usr/local /sbin"

    # rm -rf $path

    rm -rf "$path"

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

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

    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 下使用友好的提示符

    上一篇:Nginx怎么把URL后不带/的跳转到带/的

    栏    目:Redis

    下一篇:deltasql 1.6.2 发布,数据库模型版本控制

    本文标题:Linux Shell从入门到删除根目录跑路指南

    本文地址:http://www.jh-floor.com/shujuku/Redis/19784.html

    广告投放 | 联系我们 | 版权申明

    重要申明:本站所有的文章、图片、评论等,均由网友发表或上传并维护或收集自网络,属个人行为,与本站立场无关。

    如果侵犯了您的权利,请与我们联系,我们将在24小时内进行处理、任何非本站因素导致的法律后果,本站均不负任何责任。

    联系QQ:888888 | 邮箱:888888#qq.com(#换成@)

    Copyright © 2002-2017 青云站长教程网 版权所有 琼ICP备xxxxxxxx号