防手抖误删除脚本(shell)

#!/bin/bash
  
# 设置回收路径  
trashPath=/home/search/.MyTrash  
  
# 设置保存时间,172800为2天  
period=172800  
  
# 创建回收文件夹  
if [ ! -d "$trashPath" ]; then  
    mkdir $trashPath  
fi  
  
# 清除命令中的所有开关选项  
args=${@##-*}  
  
# 根据当前时间新建临时文件夹  
dest=$trashPath/`date "+%Y-%m-%d_%H:%M:%S_%s"`/  
if [ ! -d "$dest" ]; then  
    mkdir $dest  
fi  
  
# 移动文件,如有必要,修改错误信息并输出  
msg=`mv $args "$dest" 2>&1`  
if [ ! "$msg" = "" ]; then  
    echo ${msg//mv/my_rm}  # 将错误信息中的“mv”替换成"my_rm"  
fi  
  
# ======================================  
# 每天第一次使用这个命令后,清理一段时间以前回收的文件  
# ------------------------------  
# 定义清理旧文件的函数  
function clearOldFile()  
{  
    echo "delete old file, please wait ..."  
      
    now=`date "+%s"`  
    for folder in `ls $trashPath`  
    do  
        folderTime=${folder##*_}  # 获取文件名中“_”后的数字  
        gap=`expr $now - $folderTime`  
        # echo $folder    $gap  
        if [ $gap -gt $period ]; then  
            # echo rm $trashPath/$folder  
            /bin/rm -rf $trashPath/$folder  # 删除$period之前的文件夹  
        fi  
    done  
}  
# ------------------------------  
# 设置标志文件路径  
flagFile=$trashPath/.flag  
  
today=`date "+%d"`  
if [ -f "$flagFile" ]; then  
    lastTime=`cat $flagFile`  # 读取标志文件中的日期  
    if [ "$lastTime" -ne "$today" ]; then  # 如果不是今天的日期就清理  
        clearOldFile  
    fi  
else  # 标志文件不存在也要清理  
    clearOldFile  
fi  
echo $today > $flagFile  # 输出今天的日期到标志文件  
# =====================================

在普通用户的~/.bashrc文件中添加
alias rm=$HOME/.rm.sh

推荐阅读更多精彩内容