zoukankan      html  css  js  c++  java
  • shell实现linux回收站的功能

    shell实现linux回收站的功能

    下载:

    https://gitee.com/LoongWang/shellrecycling/repository/archive/master.zip

    代码:

     1 #/usr/bin/env bash
     2 
     3 #定义
     4 #定义回收站目录
     5 RecyclingDir='/usr/local/recycling/'
     6 #定义回收站log文件夹
     7 RecyclingLogDir='/var/log/recyclinglog/'
     8 #定义回收站log文件
     9 RecyclingLog="/var/log/recyclinglog/$(whoami)"
    10 #定义回收站家目录
    11 UserRecyclingDir="/usr/local/recycling/$(whoami)"
    12 #定义返回码
    13 ReturnCode=0
    14 
    15 #程序开始
    16 #检测主文件是否存在、没有则新建
    17 
    18 for DirName in $RecyclingLogDir $RecyclingDir $UserRecyclingDir 
    19 do
    20     if [ ! -d $DirName ]
    21     then
    22         if [[ $DirName == "$RecyclingLogDir" ]]
    23         then
    24             mkdir $RecyclingLogDir
    25             chmod 777 $RecyclingLogDir
    26             continue
    27         fi
    28         #将Log写入文件中
    29         echo "$(date +"%F %H:%M:%S") - Make Dirctory" >> $RecyclingLog
    30         chmod 700 $RecyclingLog
    31         #创建目录
    32         mkdir $DirName
    33     
    34         if [ $? -eq 0 ]
    35         then
    36             echo "$(date +"%F %H:%M:%S") - Make Dirctory $DirName Ok" >> $RecyclingLog
    37         else
    38             echo "$(date +"%F %H:%M:%S") - Make Dirctory $DirName Fail" >> $RecyclingLog
    39             echo "$(date +"%F %H:%M:%S") - Make Dirctory Fail"
    40  
    41             ReturnCode=127
    42             echo -e "The Linux Comamnd is error , returncode:127\n"
    43             echo "$(date +"%F %H:%M:%S") - Make Dirctory Fail"
    44             echo "Your can see log the $RecyclingLog" 
    45 
    46             exit $ReturnCode
    47         fi
    48         chmod 777 $DirName
    49 
    50         if [[ $DirName == $UserRecyclingDir ]]
    51         then
    52             chmod 700 $DirName
    53         fi
    54 
    55     fi
    56 done
    57 
    58 #移动目录至回收站
    59 if [ $# -eq 0 ]
    60 then
    61     echo "Usage:$0 file1 file2 file3 ..."    
    62     ReturnCode=1
    63 else
    64     #循环开始
    65     for DelFile in $@
    66     do
    67         #判断是否存在文件
    68         if [ -e $DelFile ]
    69         then
    70             echo -e "\n$(date +"%F %H:%M:%S") - Delete $DelFile" >> $RecyclingLog
    71 
    72             mv $DelFile $UserRecyclingDir/$(date +"%F:%H:%M:%S")-$DelFile
    73             
    74             #判断命令是否执行成功
    75             if [ $? -eq 0 ]
    76             then
    77                 #命令执行成功
    78                 echo -e "\n$(date +"%F %H:%M:%S") - Delete $DelFile - OK" >> $RecyclingLog
    79                 echo -e "$(date +"%F %H:%M:%S") - Delete $DelFile - OK"
    80             else
    81                 #命令执行失败
    82                 echo -e "\n$(date +"%F %H:%M:%S") - Delete $DelFile - Fail" >> $RecyclingLog
    83                 echo -e "\n$(date +"%F %H:%M:%S") - Delete $DelFile - Fail" 
    84                 ReturnCode=1
    85             fi
    86         else
    87             #不存在文件
    88             echo -e "\n$(date +"%F %H:%M:%S") - $DelFile is not exists" >> $RecyclingLog
    89             echo -e "\n$(date +"%F %H:%M:%S") - $DelFile is not exists" 
    90             ReturnCode=1
    91         fi
    92     done
    93     
    94     exit $ReturnCode
    95 fi
     1 #!/usr/bin/env bash
     2 
     3 RecyclingDir="/usr/local/recycling"
     4 AudoDelRecyclingLog="/var/log/auto_del_recycling.log"
     5 errorlog="error.log"
     6 
     7 if [ `id -u` -eq 0 ]
     8 then
     9     for DirName in `ls $RecyclingDir`
    10     do
    11         if [ -d $RecyclingDir\/$DirName ]
    12         then
    13                 for FileName in `ls $RecyclingDir\/$DirName`
    14                 do
    15 
    16                         NowDate=$(date +"%s")
    17                         GetFile=$(stat -c %X $RecyclingDir\/$DirName\/$FileName)
    18                         DifferTime=$(echo "value=0;$NowDate - $GetFile" | bc)
    19 
    20                         if [ $DifferTime -gt 2592000 ]
    21                         then
    22                                 echo -e "$(date +"%F_%H:%M:%S")-Deleteing $RecyclingDir $DirName(type $DirName is:$(file $RecyclingDir\/$DirName\/$FileName))" >> $AudoDelRecyclingLog
    23                                 rm -rf $RecyclingDir\/$DirName\/$FileName
    24                                 echo -e "$(date +"%F_%H:%M:%S")-Deleted $RecyclingDir $DirName $FileName OK" >> $AudoDelRecyclingLog
    25                         fi
    26                 done
    27 
    28 
    29         else
    30                 echo -e "$(date +"%F_%H:%M:%S")-$DirName is not dirctory(type $DirName is:$(file $RecyclingDir\/$DirName))" >> $AudoDelRecyclingLog
    31         fi
    32     done
    33 else
    34         echo -e "$(date +"%F_%H:%M:%S")-The User ID is not root,please login root exec(uid:`id -u`)" >> $errorlog
    35 fi
  • 相关阅读:
    LeetCode对撞指针汇总
    167. Two Sum II
    215. Kth Largest Element in an Array
    2018Action Recognition from Skeleton Data via Analogical Generalization over Qualitative Representations
    题解 Educational Codeforces Round 84 (Rated for Div. 2) (CF1327)
    题解 JZPKIL
    题解 八省联考2018 / 九省联考2018
    题解 六省联考2017
    题解 Codeforces Round #621 (Div. 1 + Div. 2) (CF1307)
    题解Codeforces Round #620 (Div. 2)
  • 原文地址:https://www.cnblogs.com/NoneID/p/8407499.html
Copyright © 2011-2022 走看看