为linux添加一个垃圾桶

就在刚才迷迷糊糊的就把 /usr 给 rm -rf 了,当时身上冷汗都冒出来了。好在只是工作和学习的云主机上边的内容并不重要,于是就重新做系统了。这些都不是重点重点是怎么能避免下一次再犯这样的低级错误,下面我给大家提供了一个解决方案。

1.添加一个垃圾桶

   在根目录下创建一个trash目录,并将目录权限修改为755。

# cd /
# mkdir trash
# chmod 755 trash

2.编写safe_rm.sh

#!/bin/bash
# 安全的rm脚本


dir=$(date "+%y_%m_%d")
dir="/trash/$dir"
#echo $dir
if [ ! -d $dir ];then
    mkdir -p $dir
fi


is_f=false
args=""


function f_remove() {
    for i in ${args}; do
        if [ -d "$i" -o -f "$i" ];then
            name=`basename $i`
            if [ -d "$dir/$name" -o -f "$dir/$name" ];then
                new_name="$dir/${name}_$(date '+%T')"
                mv $i $new_name && echo "$i deleted,you can see in $new_name"
            else
                mv $i $dir && echo "$i deleted,you can see in $dir/$i"
            fi
        else
            echo "参数错误"
        fi
    done
}


function remove() {
    for j in ${args}; do
        if [ -d "$j" -o -f "$j" ];then
            name=`basename $j`
            read -p "Remove $name?[y/n]" bool
            if [ $bool == "n" ];then
                exit
            elif [ $bool == "y" ];then
                if [ -d "$dir/$name" -o -f "$dir/$name" ];then
                    new_name="$dir/${name}_$(date '+%T')"
                    mv $j $new_name && echo "$j deleted,you can see in $new_name"
                else
                    mv $j $dir && echo "$j deleted,you can see in $dir/$j"
                fi
            fi
        else
            echo "参数错误"
        fi
    done
}


while [ "$1" ]; do
    case "$1" in
        -fr|-rf)
            is_f=true
            shift
            ;;
        -i)
            is_f=false
            shift
            ;;
        *)
            args="$1 $args"
            shift
            ;;  
    esac
done


if [[ $is_f = true ]];then
    f_remove
else
    remove
fi

3.设置别名

    将上边的脚本保存到/usr/bin/下面,赋予执行权限,然后设置别名。

# cp safe_rm.sh /usr/bin/safe_rm.sh
# chmod 755 /usr/bin/safe_rm.sh
# vim /etc/bashrc
在bashrc中添加下面的一行
alias rm=/usr/bin/safe_rm.sh

    现在使用rm删除的文件都会在/transh中找到。

    当你想使用真正的rm命令时你只需要在rm前面加一个\就行

# \rm -rf test.txt

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值