自己做了一个mv替换rm的shell脚本,但是mv "$Filename/*"部分情况下能使用,rm同样如此。
当前是可以把文件移动到回收站,但是移动不回来。rm $filename/*这种命令无法执行.
vrm -ls显示回收站内文件,以及删除编号
vrm -ud恢复删除内容
下面是源码:
#!/bin/bash
DustBin="$HOME/.dustbin/"
DustName=".dustname"
DustMes=".mes"
NowDir="$(pwd)/"
if [ -e $DustBin$DustMes ]
then
DustNum=$(cat $DustBin$DustMes)
else
DustNum=0
echo $DustNum > $DustBin$DustMes
fi
if [ -z $1 ]
then
echo "Please Input The Files Or Option."
elif [ $1 = "-ar" ]
then
read -p "Do You Want To Remove All Of The File Forever?[y/n]" input
case $input in
[yY]*)
if [ -e $DustBin ]
then
rm -rf "$DustBin/*"
echo "All Files Have Been Deleted."
else
mkdir $DustBin
echo "There Have No Files."
fi
;;
[nN]*)
echo "Exit."
;;
*)
echo "Please Enter Y Or N."
;;
esac
elif [ $1 = "-ud" ]
then
if [ -e $DustBin$DustName ]
then
Name=""
while read FileName
do
if [ ${FileName#* } = $NowDir ]
then
Name=${FileName% *}
fi
done < $DustBin$DustName
if [ -z $Name ]
then
echo "Can't Find Some Of The Message About This Folder."
else
if [ -e $DustBin$Name ]
then
mv "$DustBin$Name/*" $NowDir
echo "Recovered."
rm -rf $DustBin$Name
else
echo "About The '$NowDir' Was Not Found, It May Have Been Deleted Or Restored."
fi
fi
else
echo "DustBin Have No Files."
fi
elif [ $1 = "-ls" ]
then
if [ -e $DustBin ]
then
FileNames=$(ls $DustBin)
if [ -z $FileNames ]
then
echo "There Is No Files."
else
for FileName in $FileNames
do
echo "===== Num:$FileName ====="
ls -A $DustBin$FileName
done
fi
else
echo "DustBin Have No Files."
fi
elif [ $1 = "-rm" ]
then
if [ -e $DustBin ]
then
if [ -z $2 ]
then
echo "Please Input The Files."
else
if [ -e $DustBin$2 ]
then
read -p "Do You Want To Remove '$2' Forever?[y/n]" input
case $input in
[yY]*)
rm -rf $DustBin$2
echo "Done."
;;
[nN]*)
echo "Exit."
;;
*)
echo "Please Input Y Or N."
;;
esac
else
echo "Can't Find '$2'"
fi
fi
else
echo "DustBin Have No Files."
fi
elif [ $1 = "-h" ]
then
echo "vrm [<Files>/<Option>]"
echo "vrm <File> Is Used To Be Move The File On The DustBin."
echo "<Option>"
echo " -h Show This Help."
echo " -ls Show All Of The Files In The DustBin."
echo " -ud Restored The Last File Deleted In The Folder."
echo " -ar Empty The DustBin."
echo " -rm <File> Deleted The File In The DustBin."
echo "Now DustBin File:"$DustBin
else
if [ -e $1 ]
then
if [ -e $DustBin ]
then
mkdir "$DustBin$DustNum"
mv "$1" "$DustBin$DustNum"
else
mkdir $DustBin
mkdir $DustBin$DustNum
mv $1 $DustBin$DustNum
fi
echo "$DustNum ${NowDir}" >> "${DustBin}${DustName}"
DustNum=$(expr $DustNum + 1)
echo $DustNum > $DustBin$DustMes
else
echo "Can't Find Files Named $1"
fi
fi