rm -rf * 的正确用法
昨天有个工程师写了一个删除日志的bug:
...
rm -rf / home/work/logs/
...
还好是在测试环境执行的,否则估计要跑路了。
画外音:一个“多了一个空格”的bug,看懂了么?
曾经我也干过类似的傻事,写过这样删除日志的脚本:
...
cd ${log_path}
rm -rf *
...
进入到日志目录,然后把日志都删除。
画外音:看上去没有任何问题?当目录不存在时,悲剧就发生了。
如何避免类似的删除根目录的“惨剧”发生,有这样一些建议:
一、命令替换
在生产环境把rm -rf 命令替换为mv,再写个定时shell定期清理。
画外音:模拟了回收站的功能。
二、收拢权限
帐号权限的分离,线上分配work帐号,只能够删除/home/work/logs/目录,无法删除根目录。
画外音:大公司一般线上权限管理比较规范,小公司就未必了,搞不好所有的小伙伴都有权限在线上乱搞。
三、使用&&
可以通过“&&”,将
cd ${log_path}
rm -rf *
合并成一个语句
cd ${log_path} && rm -rf *
当前半句执行失败的时候,后半句不再执行。
画外音:这个小技巧很赞。
四、判断目录是否存在
制定编码规范,对目录进行操作之前,要先判断目录是否存在。
画外音:靠人的自觉来保证规范的执行,总感觉有些不太靠谱。当然,规范是有必要的。
原文链接:https://blog.csdn.net/z50L2O08e2u4afToR9A/java/article/details/85272137
作者:皓月无边*半步青莲
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· Vue3状态管理终极指南:Pinia保姆级教程