分类: LINUX
2011-01-27 16:56:18
在linux 的shell下, 如果没有看清当前所在目录,执行了rm *,后悔就晚了(虽然有extundelete,可以在磁盘上恢复,但前提是删除文件之后你在这个分区没有做任何写入操作。)。所以特写了个脚本,放到/usr/bin/下,命名为srm, 并赋予权限,chmod 777 /usr/bin/srm. 这样,我们在删除的时候使用 srm file_or_folder 代替 rm file_or_folder, 删除的文件就会被移动到 ~/.Trash目录文件夹下(按照删除操作时的日期创建的文件夹 )。
当然,srm并不是真正删除文件,只是把文件mv到了回收站中。所以需要定期或自动整理回收站。
脚本文件:/usr/bin/srm
#!/usr/bin/env bash
# 安全删除文件,先放到回收站(默认是 ~/.Trash)中。
# 注意:文件并没有真正删除,需要定期整理回收站中的文件
# date 2010-1-27
# author hby21c@163.com
input_count=$#
if (( input_count < '1' )); then
echo "srm error commamd, Example: [ srm file_or_folder ]"
exit 1
fi
# 创建主目录
target_folder="${HOME}/.Trash"
if [ ! -d $target_folder ]; then
mkdir $target_folder
fi
# 创建当天的临时存放目录
cur_date=`date "+%Y-%m-%d"`
f_today=${target_folder}"/${cur_date}"
if [ ! -d $f_today ]; then
mkdir $f_today
fi
# 生成移动后的文件名, 加上时间前缀,防止同名文件覆盖
cur_time=`date "+%H:%M:%S"`
if (( $input_count == 1 )); then
tp=${f_today}"/${cur_time}_"${@##/*/}
else
tp=${f_today}"/${cur_time}/"
mkdir $tp
fi
# 移动文件
cmd=`mv -f $@ ${tp}`
#判断执行结果
if [ $? != "0" ]; then
echo "srm fail, please try again"
exit 1
fi