#!/bin/bash #----------------------------------------------------------------- # filename: # author: wds # begin:2008.1.27 # end:2008.2.1 # version: v.2 # script address: http://blog.chinaunix.net/u1/40306/index.html #----------------------------------------------------------------- from1=$1 from2=$2 garbage=$HOME/.garbage mvlog=$garbage/mv.log if [ ! -e $garbage ] then mkdir -p $garbage chmod 777 $garbage fi function rand { a=(0 1 2 3 4 5 6 7 8 9 a b c d e A B C D E F ) for ((i=0;i<7;i++));do echo -n ${a[$RANDOM % ${#a[*]}]} done } random=$(rand) function rm1 { if [ -d "$from1" ] then echo "rm: cannot remove '$from1/' : Is a directory" else echo "`pwd`/:$from1:$random:`date`" >> $mvlog mv "$from1" "$garbage/$from1:$random" fi } function more { for file in * do echo "`pwd`/:$file:$random:`date`" >> $mvlog mv $file "$garbage/$file:$random" done 2> /dev/null } function rmi { if [ ! -d "$from2" ] then echo -n "rm:remove regular empty file '$from2'?" ; read answer; if [ "$answer" = 'y' -o "$answer" = 'Y' ] then echo "`pwd`/:$from2:$random:`date`" >> $mvlog mv "$from2" "$garbage/$from2:$random" fi else echo "rm: cannot remove directory '$from2': Is a directory" fi } function rmf { if [ ! -d "$from2" ] then echo "`pwd`/:$from2:$random:`date`" >> $mvlog mv "$from2" "$garbage/$from2:$random" else echo "rm: cannot remove directory '$from2': Is a directory" fi } function rmr { if [ -e "$from2" ] then result=$(echo $from2 | sed 's/\///g') echo "`pwd`/:$result:$random:`date`" >> $mvlog mv "$result" "$garbage/$result:$random" fi } function rml { while : do clear line=$(cat -n $mvlog | awk -F : '{print $1,"FileName:"$2, "Time:"$4}') linecount=$(cat $mvlog | wc -l) echo -e "$line\c" echo echo echo "Please input number you want revent(line count:$linecount)--exit(e)" read answer if [ "$answer" = e -o "$answer" = E ] then break else ( echo "please input y(sure:)" read answer1 if [ "$answer1" = y -o "$answer" = Y ] then address=$(sed -n "$answer""p" $mvlog | awk -F : '{print $1}') filename=$(sed -n "$answer""p" $mvlog | awk -F : '{print $2}') filerand=$(sed -n "$answer""p" $mvlog | awk -F : '{print $3}') fullname=$address$filename if [ -e "$fullname" ] then echo "The file exist!" sleep 1 else old="$garbage/$filename:$filerand" new="$address$filename" mv "$old" "$new" delline=$( cat $mvlog | sed "$answer""d" | sort -o $mvlog) echo "update ok!!!" sleep 1 fi fi ) fi done } function help { echo " -i) If you wants delete some file , this function is confirm you want,the same as old rm. -f) If you wants delete some directory ,you can use this function ,the same as old rm. -r) If you wants delete some directory of file ,this function can use , the same as old rm. -l) This is new function,is you wants resume some file or directory you can use this function, first this function can list some file in you garbage , these have some number ,if you wants resume 1,you can input 1 and then input y to confirm. If you want add some function or some new idear please contact me... author:wds email:7717060@sina.com " } case "$1" in [a-z]) : ;; [0-9]) : ;; [A-Z]) : ;; ?) more ;; *) :;; esac if [ "$#" -eq 0 ] then echo -n "rm: missing operand Try 'rm --help' for more informaction. " fi if [ "$#" -eq 1 ] then case "$from1" in -i) echo "Try 'rm --help' for more informaction."; break ;; -f) echo "Try 'rm --help' for more informaction."; break ;; -r) echo "Try 'rm --help' for more informaction."; break ;; -l) rml ;; --help) help;; *) rm1;; esac fi if [ "$#" -eq 2 ] then case "$from1" in -i) rmi ;; -f) rmf ;; -r) rmr ;; -l) rml ;; -rf) rmr ;; --help) help ;; esac fi if [ "$#" -gt 2 ] then for file in $* do mv $file "$home/" done 2> /dev/null fi
#!/bin/bash #wds #v5.0 #2007.11.18 #7717060.cublog.cn to=$1 to1=$2 home=$HOME/.garbage dtime=$(date +%M-%H:%M) userpid=$$ size=$(du -sh $home|awk '{printf $1}') size1=$(echo $size | grep M) size2=$(echo $size | sed 's/M//g') ipaddr=$(/sbin/ifconfig eth0 | awk '/inet /{print substr($2,6)}') adminemail=7717060@163.com if [ -n "$size1" -a "$size2" -gt 100 ] then echo "$home is $size" | mail -s '$ipaddr' '$adminemail' fi if [ ! -e "$home" ] then mkdir -p $home fi myrmi () { echo -e "rm: remove directory '$to1'?\c" read -r answer if [ "$answer" = y ] then if [ -d "$to1" ] then echo "rm: remove idrectory '$to1'?" else if [ -e "$home/$to" ] then mv "$to1" "$home/$to1-$userpid-$dtime" else mv "$to1" "$home" fi fi fi } myrmrf () { if [ -e "$to1" ] then mv "$to1" "$home/$to1-$userpid-$dtime" else mv "$to1" "$home/$to1-$userpid-$dtime" fi } myrm () { if [ -d "$to" ] then echo "rm cannot remove '$to': IS a directory" else if [ -e "$home/$to" ] then mv "$to" "$home/$to-$userpid-$dtime" else mv "$to" "$home" fi fi } if [ "$#" -eq 1 ] then case "$to" in -i) echo "Try 'rm --help' for more informaction." ;; -rf) echo "Try 'rm --help' for more informaction." ;; -r) echo "Try 'rm --help' for more informaction'" ;; *) myrm;; esac fi if [ "$#" -eq 2 ] then case "$to" in -i) myrmi ;; -rf) myrmrf ;; -r) myrmrf ;; *) echo "'rm --help' for more informaction." esac fi if [ "$#" -gt 2 ] then for file in $* do mv $file "$home/" done 2> /dev/null fi