防止误删文件!将rm命令改造成mv命令简易版
来源:互联网 发布:虚拟图片打印机软件 编辑:程序博客网 时间:2024/05/28 01:34
今天在用rm -rf的时候突发奇想,如果我一不小心删错了该咋办,平时粗心大意的我感觉自己很容易犯这样的错误。于是去百度搜了一下,发现好多人都犯过这种错误!有的还带来很大的损失!而且rm命令删除文件之后很难恢复。
所以很多人建议用alias将rm替换成mv,也就是设置一个自己的垃圾桶,在rm的时候将文件移动到垃圾桶中而不是直接删除了。这样就相当于有了备份。而这个垃圾桶可以crontab设置定时任务一周清除一次,通过这种方式就可以避免手残带来的损失。
了解大体思路之后我就自己改造了一下rm命令,没做多少测试,先自己将就用着,有bug再说吧,我的系统是macOs,跟linux应该大同小异。
首先来改alias,将rm命令替换为我自己写的脚本,macOs上没找到alias命令,于是我修改了/etc/profile文件,这个文件每次开机的时候会被读取,对所有用户有效,修改如下:
alias rm='sh /Users/db/rm_delete_files/trash.sh'
其实就是执行指定目录下的脚本。
然后就是脚本的代码,开始犯的错是以为传给脚本的参数只有最多两个,然而我在rm -f test.*的时候发现参数并不是两个,而是等于符合test.*形式的文件的个数,所以代码最后来了个while循环遍历mv:
#!/bin/shdate=`date +%F` #当前日期path="/Users/db/rm_delete_files/"$date if [ ! -d $path ]; then mkdir $path #创建一个目录fistr=$1 #第一个参数first_char=${str:0:1}if [ $first_char = '-' ];then #第一个参数是-f或者-rf,shift到第二个参数 shiftfiwhile [ $# != 0 ]; #遍历所有的参数,mv到指定pathdo mv -f $1 $path shiftdone
暂时测的case还不多,可能还不够完善。能支持类似于rm -f test.c 、rm -rf dir、rm test.c、rm -f test*、rm -rf dir/*等删除命令,但是不支持参数分开写的比如 rm -f -r dir等。
日后再逐渐完善,这样做了保障就不怕自己以后手残啦。
ps:好像定时删除垃圾桶还没做,等有时间再做吧。
阅读全文
0 0
- 防止误删文件!将rm命令改造成mv命令简易版
- Linux 防止rm误删文件,将rm配置成mv到.trash
- 将linux下的rm命令改造成移动文件至回收站
- 将linux下的rm命令改造成移动文件至回收站
- linux下rm命令改造成将文件移动至回车站
- 将linux下的rm命令改造成移动文件至回收站
- 将linux下的rm命令改造成移动文件至回收站
- linux rm命令改造成回收站
- 修改rm命令防止误删
- CentOS下的rm命令改造成移动文件至回收站
- linux文件管理相关命令mv mkdir cp rm
- 文件操作命令 cp、mv、rm 底层原理
- Linux rm命令重定义,防止误删文件无法恢复
- Linux下修改rm命令,防止误删
- rm mv cp pwd stty命令
- Linux rm,cp,mv命令详解
- Linux常见命令(rm,mv)
- ubuntu mkdir , cp , mv,rm 命令
- QAQ & ORZ 的签到题
- XYNUOJ 问题 C: 看病要排队
- Lesson01_Unity基础介绍_part03光照系统简介
- jkh
- TOYS POJ
- 防止误删文件!将rm命令改造成mv命令简易版
- 选择排序
- hibernate映射集合属性(属性内非持久化类)
- 设计模式
- Java 2.1 java基本类型的转换和运算符
- Memcached深入了解
- Hadoop系列--Hadoop自带程序wordcount运行示例
- XYNUOJ 问题 D: Largest Rectangle in a Histogram
- 初级面向对象