Linux下也有回收站功能,但只在Gnome等桌面环境下面。在终端下面是用rm命令来删除文件,就是直接从硬盘上删除了。要是你一不小心删错了文件, 只能采用一些极其复杂的数据恢复工具来补救,而且还不一定有效。我就有过这样的经历,一不小心删错了文件,以致几天的工作成果立马灰飞烟灭。这样的事情发 生一次都太多了。我们得在错误中学会成长,为了避免悲剧再次发生,我写了一个具有回收站功能的删除脚本用来代替rm命令:
#!/bin/bash
if [ $# -eq 0 ]; then
echo 'Usage: del file ...'
exit
fi
if [ $1 = '.' -o $1 = '..' ]; then
echo "Can't delete $1"
exit
fi
for src_file in $@; do
dst_dir="$HOME/.trashbin"
src_filename=$(basename $src_file)
dst_file="$dst_dir/$src_filename"
log_file="$dst_dir/.log"
#检查源文件是否存在
if [ ! -e $src_file ]; then
echo "/"$src_file/" dosen't exit"
exit
fi
#创建目标文件夹
if [ ! -e $dst_dir ]; then
mkdir $dst_dir
fi
#选择合适的目标文件名
new_file=$dst_file
i=0
while true; do
if [ ! -e $new_file ]; then
break
fi
new_file="$dst_file.$((++i))"
done
dst_file=$new_file
#执行删除操作
mv $src_file $dst_file
#输出信息并写入日志文件
echo "$src_file -> $dst_file"
echo "[$(date +'%m-%d %H:%M')] $src_file -> $dst_file" >> $log_file
done
把以上内容保存一个可执行的脚本文件里面,如”delete”,并确保脚本所在目录被添加到PATH环境变量里面。当你要删除文件的时候,就用这个 delete命令。该命令的用法和rm基本一致,支持一次删除多个文件,也支持”*”等通配符。删除的文件被保存到~/.trashbin目录里面,如果 目录中已经存在相同名称的文件,就自动在新删除的文件后面加上”.1″、”.2″等以示区别。每删除一个文件,都会在~/.trashbin/.log写 入一条日志信息,记录下时间和操作内容。在你要恢复被删除文件的时候,这些日志会提供很有价值的信息。
值得说明的是,这个脚本主要用于学习用途。我不保证这个脚本是完美无误的,如果有什么错误导致数据丢失,本人概不负责。