linux的 rm改写,防止误删,删除找回

来源:互联网 发布:淘宝运费价格表监控 编辑:程序博客网 时间:2024/06/05 03:35
最近写了个类型Windows回收站的功能,说白就是把rm 改为mv。
以防止误删除。会自动给删除文件加上时间戳,会自动每天创建文件目录,将当天删除文件放进去
如果需要真正删除:请用remove(跟原来的rm一样使用,只是改写了别名)

新建执行文件rm.sh,复制下面代码,然后把rm.sh放到/bin目录下
#!/bin/bash
#原操作 alias rm='rm -i'
data=`date +%Y-%m-%d-%H-%M-%S`
data1=`date +%Y-%m-%d`
file=($*)
filepath=/tmp/tarsh/$data1
mkdir -p $filepath

num=`echo echo "$*" | awk -F"/" '{print NF-1}'`
#num=`echo "$*" | awk -F"/" '{print $(NF)}'`
if [[ $num > 0 ]];then
#if [ ! "$num" ];then
#echo "无法删除,请到文件目录内操作"
echo "Unable to delete, please go to the file directory operations"
#echo "无法删除,目录删除不能带有 / 符号"
echo "Unable to delete, directory delete cannot contain ' / ' sign"
#break
else

for n in ${file[*]};do
mv -f $n $filepath/$n.$data 2>&1
done
echo "$* have been removed"

fi



修改别名(永久适用任何用户的方法)
打开:vim /etc/bashrc
把这两行加在文件的最后两行
alias remove='rm.back -i'
alias rm='rm.sh'

进入/bin
cp rm rm.back

source /etc/bashrc

说明:remove的用法和原来的一样
正常使用rm
有几个缺陷:
1,无法跨目录删除
2,无法参数删除。
3,删除目录时候不能带有 / ,(可以删除,但是会报错)

1 0