fedora下总是会把文件不小心删除了,所以下面的脚本把实现:文件删除默认移动到自己的回收站里面。
功能:
脚本实现删除文件或者目录到~/waste/(自己定义)。
脚本附带文件名或者目录名,则默认代表”删除”,移动到回收站。
参数 -l 代表列出回收站内容,后面不带参数则列出所有内容,可以指定文件或者目录。
-d 代表清空回收站,后面不带参数为清空回收站,也可以指定删除文件或者目录。
脚本执行权限为root。
首先以root权限创建一个回收站
www.zhishiwu.com
$ mkdir ~/waste
下面是脚本内容
[plain]
#!/bin/bash
arg_del_flag=0 #删除标志,默认是不删除
arg_list_flag=0 #list标志,默认不list
Waste_Path="/root/waste/"
if [ $# -lt 1 ]; then
echo "usage : $0 -[l|d] [filename]"
exit 1
fi
file_num=0
for param in $@
do
case $param in
"-d")
arg_del_flag=1 #删除
continue
;;
"-l")
arg_list_flag=1 #list
continue
;;
"-"*)
echo "unknow /"$param/""
echo "usage : $0 -[l|d] [filename]"
continue
;;
*)
file[$file_num]="$param" #文件名
let file_num++
;;
esac www.zhishiwu.com
done
i=0
if [ $arg_del_flag -eq 1 ]; then
cd ${Waste_Path}
if [ $# -eq 1 ];then #删除所有
rm -rf ${Waste_Path}*
exit 0
fi
while [ $i -lt $file_num ]
do
if [ -f ${file[$i]} ];then #如果是普通文件
rm -f ${Waste_Path}${file[$i]}
elif [ -d ${file[$i]} ];then #如果是目录
rm -rf ${Waste_Path}${file[$i]}
else
echo "${file[$i]} is not existed"
fi
let i++
done
exit 0
fi
if [ $arg_list_flag -eq 1 ]; then
cd ${Waste_Path}
if [ $# -eq 1 ];then #list所有
ls -l ${Waste_Path}
exit 0
fi www.zhishiwu.com
while [ $i -lt $file_num ]
do
if [ -s ${file[$i]} ];then #文件是否存在 -s 表示文件存在窃长度大于0,成功返回
ls -l ${Waste_Path}${file[$i]}
else
echo "${file[$i]} is not existed"
fi
let i++
done
exit 0
fi
#不存在-l 或者 -d 选项,删除文件
while [ $i -lt $file_num ]
do
if [ -f ${file[$i]} -o -d ${file[$i]} ];then #确保文件存在
mv ${file[$i]} ${Waste_Path}
if [ $? == 0 ];then
echo "${file[$i]} deleted successfully"
fi
else
echo "${file[$i]} is not existed"
fi www.zhishiwu.com
let i++
done
exit 0
把脚本执行权限修改,然后添加到系统环境变量中!
上面脚本还存在一个小bug,就是在进入回收站判断文件是否存在的时候,我用了一个 -s 选项,若是文件存在且长度大于0,则返回成功。我昨天写脚本测试的时候把空的文件丢到了回收站,所有一直就结了很久。希望大家多多指教!
摘自 firefoxbug的专栏