防止误删文件!将rm命令改造成mv命令简易版
2017-08-11 21:04
886 查看
今天在用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/sh
date=`date +%F` #当前日期
path="/Users/db/rm_delete_files/"$date
if [ ! -d $path ]; then
mkdir $path #创建一个目录
fi
str=$1 #第一个参数
first_char=${str:0:1}
if [ $first_char = '-' ];then #第一个参数是-f或者-rf,shift到第二个参数
shift
fi
while [ $# != 0 ]; #遍历所有的参数,mv到指定path
do
mv -f $1 $path
shift
done
暂时测的case还不多,可能还不够完善。能支持类似于rm -f test.c 、rm -rf dir、rm test.c、rm -f test*、rm -rf dir/*等删除命令,但是不支持参数分开写的比如 rm -f -r dir等。
日后再逐渐完善,这样做了保障就不怕自己以后手残啦。
ps:好像定时删除垃圾桶还没做,等有时间再做吧。
所以很多人建议用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/sh
date=`date +%F` #当前日期
path="/Users/db/rm_delete_files/"$date
if [ ! -d $path ]; then
mkdir $path #创建一个目录
fi
str=$1 #第一个参数
first_char=${str:0:1}
if [ $first_char = '-' ];then #第一个参数是-f或者-rf,shift到第二个参数
shift
fi
while [ $# != 0 ]; #遍历所有的参数,mv到指定path
do
mv -f $1 $path
shift
done
暂时测的case还不多,可能还不够完善。能支持类似于rm -f test.c 、rm -rf dir、rm test.c、rm -f test*、rm -rf dir/*等删除命令,但是不支持参数分开写的比如 rm -f -r dir等。
日后再逐渐完善,这样做了保障就不怕自己以后手残啦。
ps:好像定时删除垃圾桶还没做,等有时间再做吧。
相关文章推荐
- Ubuntu中恢复rm命令误删文件
- Linux命令:目录重命名与移动mv,删除文件rm,目录创建mkdir删除rmdir,查看file,cat,more,tail,head
- linux-14基础命令之-复制(cp)移动(mv),删除(rm),拷贝文件(dd)
- Linux回收站[改写rm防止误删文件无法恢复]
- 改造rm命令为mv
- Linux下修改rm命令,防止误删
- *Linux常用命令学习1---(安装、文件系统、目录操作命令cd ls mv cp rm mkdir、链接命令ln……)
- Linux命令学习(一):复制(cp),删除(rm)和移动(mv)文件的命令
- linux下文件的复制、移动与删除命令为:cp,mv,rm
- Linux 防止rm误删文件,将rm配置成mv到.trash
- linux下文件的复制、移动与删除命令为:cp,mv,rm
- Linux回收站(改写rm防止误删文件无法恢复)
- 使用ext3grep恢复ext3文件系统中误删除文件(使用rm命令误删的)
- 改造rm命令-linux文件回收站
- 使用ext3grep恢复ext3文件系统中误删除文件(使用rm命令误删的)
- CentOS下的rm命令改造成移动文件至回收站
- 修改rm命令防止误删
- rm和mv和dirname和查看文件的命令
- linux下文件的复制、移动与删除命令为:cp,mv,rm
- centos 目录文件管理 mkdir,rm,touch,误删文件extundelete,cp,mv,cat,more,less ,head,tail,chown,chmod ,umask 第四节课