当前位置:首页 > 公众号精选 > 21ic电子网
[导读]shell 作为一门 linux 下使用广泛的系统语言,语法简单,上手容易,但是想要用好,少犯错误,也不是那么容易的一件事,可谓虽是居家旅行之良药,但也是杀人灭口之利器~ 今天就来聊聊 linux 下一个常见的问题:如何避免误删目录。下文会详细的讲述不同的场景下



shell 作为一门 linux 下使用广泛的系统语言,语法简单,上手容易,但是想要用好,少犯错误,也不是那么容易的一件事,可谓虽是居家旅行之良药,但也是杀人灭口之利器~

今天就来聊聊 linux 下一个常见的问题:如何避免误删目录。下文会详细的讲述不同的场景下误删目录,以及相应的解决方案。


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让这个项目一下子成了全世界最瞩目的项目。



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


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


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



OK,本文到此就结束了,列举了一些常见的case和解决方案,希望能对大家有所启发


——End——

作者:大数据之路
来源:https://my.oschina.net/leejun2005/blog/793916

免责声明:本文内容由21ic获得授权后发布,版权归原作者所有,本平台仅提供信息存储服务。文章仅代表作者个人观点,不代表本平台立场,如有问题,请联系我们,谢谢!

21ic电子网

扫描二维码,关注更多精彩内容

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

为了满足日益增长的数据处理需求,铁威马NAS推出了全新的性能巅峰2024年旗舰之作F4-424 Pro,并搭载了最新的操作系统--TOS 6。这款高效办公神器的问世,无疑将为企业和专业人士带来前所未有的便捷与效率。

关键字: 存储 Linux 服务器

上海2024年4月17日 /美通社/ -- 在2024 F1中国站即将拉开帷幕之际,高端全合成润滑油品牌美孚1号今日举办了品牌50周年庆祝活动。三届F1年度车手总冠军马克斯•维斯塔潘也亲临现场,共同庆祝这一里程...

关键字: BSP 汽车制造 行业标准 产品系列

北京2024年4月17日 /美通社/ -- 2024年4月13日,由北京康盟慈善基金会主办的"县域诊疗,规范同行"——肿瘤诊疗学术巡讲项目首站在广州隆重召开。本次会议邀请全国多位肺癌领域专家和县域同道...

关键字: AI技术 医疗服务 BSP 互联网

海口2024年4月16日 /美通社/ -- 4月14日,在中法建交60周年之际,科学护肤先锋品牌Galenic法国科兰黎受邀入驻第四届中国国际消费品博览会(以下简称"消博会")法国馆。Galenic法...

关键字: NI IC BSP ACTIVE

上海2024年4月17日 /美通社/ -- 每年4月17日是世界血友病日。今年,世界血友病日以"认识出血性疾病,积极预防和治疗"为主题,呼吁关注所有出血性疾病,提升科学认知,提高规范化诊疗水平,让每一位出血性疾病患者享有...

关键字: VII 动力学 软件 BSP

伦敦2024年4月16日 /美通社/ -- ATFX宣布任命Siju Daniel为首席商务官。Siju在金融服务行业拥有丰富的经验和专业知识,曾在全球各地的高管职位上工作了19年以上。Siju之前担任FXCM首席商务官...

关键字: NI AN SI BSP

双系统将是下述内容的主要介绍对象,通过这篇文章,小编希望大家可以对双系统的相关情况以及信息有所认识和了解,详细内容如下。

关键字: 双系统 Windows Linux

业内消息,近日新加坡 RF GaN(射频氮化镓)芯片供应商 Gallium Semiconductor(加联赛半导体)突然终止业务并解雇所有员工,包括位于荷兰奈梅亨的研发中心。

关键字: 芯片 射频 氮化镓 Gallium RF GaN

安装Linux操作系统并不复杂,下面是一个大致的步骤指南,以帮助您完成安装。1. 下载Linux发行版:首先,您需要从Linux发行版官方网站下载最新的ISO镜像文件。

关键字: Linux 操作系统 ISO镜像
关闭
关闭