linux 更改rm命令,改写Linux下的rm删除命令

概述

针对Linux而已,文件一旦被删除了,往往很难恢复的。上次本想是删除错误日志的,结果没有切换到日志对应的目录,执行了rm -rf * 把整个项目给删了,虽然可以从git上面重新pull,但是好几天没有push,改了那么多的程序都没了,万幸的是从编辑器IntelliJ IDEA历史记录中,恢复了很多。于是下定决心,要改写rm命令,同样的坑,不能再次掉进去啊。

思路:把要删除得文件,移动到指定的目录,若误删,则从该目录中找回删除得文件,即可。

脚本编写

于是乎,写了下面的shell脚本(.rm.sh):#version  : 1.0

#author   : dqs

# 删除文件

#主要功能,将文件已到指定的目录

#缺陷:当转移的目录中已经存在需要转移的文件时,尚未处理

recycle_dir=~/.recycle

if ! [ -d $recycle_dir ]

then

mkdir $recycle_dir

echo "创建目录$recycle_dir 保存删除得文件" ... ok

chmod 777 $recycle_dir

echo "修改权限" ..ok

fi

#将需要删除得文件移到该目录

file_dir=$(cd `dirname $1`; pwd)

file_name=`basename $1`

rmFiles="$file_dir/$file_name"

cur_date=`date +%Y%m%d`

save_dir="$recycle_dir/$cur_date";

if ! [ -e $save_dir ]

then

mkdir $save_dir

chmod 777 $save_dir

fi

save_dir="$save_dir/$file_name"

if [ -e $rmFiles ]

then

if [ -e $save_dir ]

then

echo "$save_dir已经存在,可以通过-f选项移除之前的文件"

else

mv $rmFiles $save_dir

if [ $? -eq 0 ]

then

rm -rf $rmFiles

echo "$rmFiles已经成功删除...若想恢复,请到$save_dir中查找"

#添加日志

logTime=`date "+%Y-%m-%d %H:%M:%S"`

curUser=`whoami`

echo "[$curUser] $logTime $rmFiles ====> $save_dir" >> "$recycle_dir/del.log"

else

echo "请使用相对目录删除"

fi

fi

else

echo "你没有权限或是文件不存在哦!!!"

fi

于是,经过测试,通过以下方式

./.rm.sh 要删除得文件或是文件夹

的确可以删除文件,并把删除记录添加到~/.recycle/del.log文件夹中如下:

919339aaca7909f37abce3a4a90e4aca.png

但是,如果每次删除文件都这么搞,是不是有点麻烦呢?

定义删除命令

打开~/.bashrc文件,添加如下一行代码

f00228596d99acbe582ecabb6b65c3c1.png

(备注:也可以使用alias rm=~/.rm.sh这样,系统自带的rm命令就变成了自己的脚本命令了)

此时,是不是可以通过del +文件 来删除文件呢?

当然不是哦,还需要执行以下source .bashrm

因为这个文件,只会在你登录或是远程连接上的时候,才会执行一次,修改后并没有执行。

下面,开始删除文件试试

016e0357d51523140494c6cb87accbb9.png

现在去文件保存目录瞅瞅,发现确实存在,看来达到了预期的效果

08eada4942d0e910ad11c47a0c28995c.png

总结

这个删除功能已经完善了吗?当然不是啦!不知道有没有人注意到,其实,有一个问题,当我在创建一个test.html文件,在使用del命令删除的时候,会出现以下提示

a4b82bec79eaa86a58d137e57c4b5660.png

其实,是因为我并没有处理文件同名的问题,也就是说同一天内,不能通过del删除同一个路径下的同一个文件,因为linux规定同一路径下不能存在同名文件,window系统也是这样的。但是我发现window系统回收站里面却可以存在同名的文件,如下:

f05ac26225296c1863c6a35aaf1e1fe5.png

关于这个问题,开始打算是通过删除上次备份的文件,但是觉得还是多思考一下。

此外,还有一个问题就是,不断的del了,删除备份文件会越来越多,占用过多空间,所以后期还需要写一个定时脚本,删除几天前或是几周或是上月等的日志。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值