cmd 切换目录_Linux Shell从入门到删除根目录跑路指南
shell 作为一门 linux 下使用广泛的系统语言,语法简单,上手容易,但是想要用好,少犯错误,也不是那么容易的一件事,可谓虽是居家旅行之良药,但也是杀人灭口之利器~
今天就来聊聊 linux 下一个常见的问题:如何避免误删目录。下文会详细的讲述不同的场景下误删目录,以及相应的解决方案。
1
变量为空导致误删文件
base_path=/usr/sbintmp_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 11[[ -z ${tmp_file} ]] && echo 1 1
(3)如果变量未定义还可以开启 set 选项:
# cat a.shset -u b=echo $becho $aecho 1# bash a.sha.sh: line 4: a: unbound variable
2
路径含有空格导致误删文件
史上最经典的要数下面这个bumblebee项目了,这个项目本来不出名,不过,程序在其安装脚本install.sh里的一个bug让这个项目一下子成了全世界最瞩目的项目。
那我们该如何防范这种问题呢?
(1)良好的编程习惯:变量加引号防止扩展
path="/usr/local /sbin"# rm -rf $pathrm -rf "$path"
(2)对变量进行语义检查
比如检测是否含有空格等特殊字符,不通用,不推荐这么做
3
目录或文件含有特殊字符导致误删文件
ll 总用量 8drwxrwxr-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 11
5
终极解决方案
不要使用 root 操作系统资源,这样至少不会删除系统文件。
6
在登录 shell 下使用友好的提示符
友好的命令提示符能时刻提醒操作者当前在哪个路径下,避免错误的路径下操作文件。
OK,本文到此就结束了,列举了一些常见的case和解决方案,希望能对大家有所启发
原文来自:http://985.so/p2Z3
Linux命令大全:https://www.linuxcool.com/
官方站点:www.linuxprobe.com
Linux命令大全:www.linuxcool.com
Linux系统下载站:www.linuxdown.com
刘遄老师QQ:5604922
Linux技术交流群:193666693
(新群,火热加群中……)
书籍在线学习(电脑阅读效果佳):
http://www.linuxprobe.com/chapter-00.html
想要学习Linux系统的读者可以点击按钮来了解书籍《Linux就该这么学》,同时也非常适合专业的运维人员阅读,成为辅助您工作的高价值工具书!
cmd 切换目录_Linux Shell从入门到删除根目录跑路指南相关推荐
- 根目录_Linux Shell从入门到删除根目录跑路指南
2020年第一波薅当当网羊毛的机会,别错过! 来自:xrzs的博客 来源:https://my.oschina.net/leejun2005/blog/793916 shell 作为一门 linux ...
- Linux Shell 从入门到删除根目录跑路指南
shell作为一门 linux 下使用广泛的系统语言,语法简单,上手容易,但是想要用好,少犯错误,也不是那么容易的一件事,可谓虽是居家旅行之良药,但也是杀人灭口之利器~ 今天就来聊聊 linux 下一 ...
- linux系统如何退出根目录,Linux Shell 从入门到删除根目录跑路指南
shell作为一门 linux 下使用广泛的系统语言,语法简单,上手容易,但是想要用好,少犯错误,也不是那么容易的一件事,可谓虽是居家旅行之良药,但也是杀人灭口之利器~ 今天就来聊聊 linux 下一 ...
- 数据库从入门到删库跑路(二) - - PL/SQL
数据库从入门到删库跑路 - - PL/SQL 1.PL/SQL(Procedure Language & Structured Query Language) 定义:一种高级数据库程序设计语言 ...
- cmd切换目录(cmd切换目录失败)
20分!vista系统cmd中怎么切换输入法? Vista命令提示符中不能切换为中文输入法?为什么我在vistaultimate下的命令提示符内不能切换到中文输入状态?(我是用"Ctrl+空 ...
- $Django redis内存数据库 (知识回顾cmd切换目录)
知识小回顾 #切换盘 C:\Users\WangDong>f:F:\>#切换文件F:\>cd redisF:\redis>#返回上一级F:\DJ\dj8>cd ..F:\ ...
- cmd - 切换目录命令cd失效(切换目录失效)
前言 具体不知道什么原因,cmd中切换命令无效,如以下命令: cd D:\ 结果: 然而并没有切换到D盘,经查阅资料得知,需要再次键入该路径所在盘符! 解决(再次键入该路径所在盘符) 当 cd 路径 ...
- windows下用cmd切换目录
切换到盘符时(直接输入盘符名):> D: 切换到具体目录下 > cd blog/resource
- 记录:win10 cmd切换目录 切换到D盘
若要切换盘,则需要加 \d 参数 若统一盘符,直接cd + 路径即可
最新文章
- 群雄逐鹿,谁将赢得5G时代的物联网战争?
- DELPHI - Delphi 2007 已内部支持 GIF 动画了
- python应用中调用spark_在python中使用pyspark读写Hive数据操作
- python中的del,remove,pop有什么区别
- 四、Delphi 2009 泛型容器单元(Generics.Collections)[3]: TStackT
- 《软件工艺师:专业、务实、自豪》一2.8 小结
- 【渝粤题库】广东开放大学 秘书实务 形成性考核
- 低代码发展专访系列之六:低代码平台能解决业务重构的问题么?
- java实现复制粘贴的计算器_软帝学院教你用java编写计算器(三)
- 用mel编写自定义节点的属性编辑器界面
- SQL优化-第二章-从解释计划层面让SQL飞
- 蓝桥杯2019年第十届C/C++省赛B组第四题-数的分解
- Java中按值传递与按引用传递的区别
- AT89C51的矩阵键盘、跑马灯和呼吸灯设计
- 2022年计算机软件水平考试信息系统管理工程师(中级)练习题及答案
- excel文件修复工具_Excel文件打开后出错,部分内容丢失的修复技巧
- 一步一步实现现代前端单元测试
- 项目管理工具dhtmlxGantt甘特图入门教程(八):数据加载(二)
- 鱼眼图像自监督深度估计原理分析和Omnidet核心代码解读
- C、c++ .h 头文件的作用