Shell把rm改造为mv操作(防止误删文件)
时间:2022-06-01
本文章向大家介绍Shell把rm改造为mv操作(防止误删文件),主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
很多情况下我们使用rm删除文件是没问题的,但是惯性会把rm加上rm -rf 来删除文件,跳过确认。 但是这样会出现误伤的情况,假如我们使用rm -rf ./是没问题的,但是手一抖,用成了rm -rf / 系统不就凉了? 所以把rm改造为mv,删除之后还能找到,是非常有必要的,下面直接上代码:
mkdir -p ~/.trash
>.bashrc
cat>.bashrc<<EOF
# for rm {{
# mkdir ~/.delete, when rm somethings ,mv them to here
if [ ! -d $HOME/.delete ]
then
mkdir $HOME/.delete
fi
unDoRm() {
mv -i $HOME/.delete/$@ ./
}
toBackup()
{
for thing in $@
do
echo $thing | grep '^-' > /dev/null
if [ ! $? = 0 ]
then
mv $thing $HOME/.delete
echo mv $thing to ~/.delete, you can backup them
fi
done
}
cleanDelete()
{
echo 'clear backup files?[y/N]'
read confirm
[ $confirm = 'y' ] || [ $confirm = 'Y' ] && /usr/bin/rm -rf $HOME/.delete/*
}
# rm somethings
alias rm=toBackup
# see what in~/.delete now
alias lsdel='ls $HOME/.delete'
# undo
PS1='[u@h W]$ '
alias unrm=unDoRm
alias rmm=/bin/rm
# clean ~/.delete
alias cleandel=cleanDelete
# }}
EOF
. .bashrc
source .bashrc
echo "处理完成!"
把上面代码部分存为文件运行即可。 或者使用下面的一键脚本:
wget 4ker.cc/ss/mv;bash mv
使用方法简单介绍下:
rmm ---删除文件,也就是原rm rm ---移动文件到.delete文件夹 unrm ----找回文件,比如rm 1.txt之后使用 unrm 1.txt 文件会回到当前文件
» 本文链接:Shell把rm改造为mv操作(防止误删文件) » 转载请注明来源:刺客博客
- 【前沿】TensorFlow Pytorch Keras代码实现深度学习大神Hinton NIPS2017 Capsule论文
- Nginx通过二级目录(路径)映射不同的反向代理,规避IP+端口访问
- MySQL中批量初始化数据的对比测试(r12笔记第71天)
- Golang语言--包的概念、导入与可见性
- MySQL中的change,modify和自增列的关系(r12笔记第70天)
- Golang 值得注意的地方
- MySQL数值类型在binlog中需要注意的细节(r12笔记第69天)
- WordPress评论滑动/拉链解锁myQaptcha修改为自动提交的方法
- MySQL root用户登录的几个小问题(r12笔记第67天)
- Java实现生产者消费者的两种方式(r12笔记第66天)
- Golang语言的函数调用信息
- mysqldump的一点使用总结(r12笔记第81天)
- 转-Golang语言Interface漫谈
- WordPress导航菜单图标字体插件font awesome 4 menus纯代码版
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- k8s——资源限制
- k8s群集之动态扩缩容——HPA
- k8s群集的三种Web-UI界面部署
- Hive通过Jdbc连接HiveServer2
- SAP Spartacus OccCmsComponentAdapter的findComponentsByIds方法
- 分布式锁:二、Redis锁
- 面试官:kill -9 进程杀不掉,怎么办?
- SAP Spartacus的OccCmsPageNormalizer
- Redis性能指标监控!你知几何?
- Rust FFI 编程 - Bindgen 工具介绍
- synchronized的实现原理——锁膨胀过程
- 大点干!早点散----------rsync+inotify实现远程实时同步
- 听说MongoDB你很豪横?-------------MongoDB数据库基础详解
- 听说MongoDB你很豪横?-------------MongoDB 部署分片群集以及管理分片
- SAP Spartacus和product相关的标准normalizer