曾经因为 rm -rf
犯过错,所以但凡 Unix/Linux 系统,一律使用垃圾桶机制。
技巧
思路
不使用
rm
命令, 自己写一个函数, 实现相应的功能:
- 把要删除的文件移动到
~/.Trash
目录- 避免同名文件的重复删除问题, mv 的同时,要改名
basename + timestamp
代码
简单实现如下:(进一步的,如果要放入垃圾桶,还要判断文件的大小)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 ## rm related
function trash()
{
TRASH_DIR="/Users/merlin/.Trash"
RF="-rf"
R="-r"
F="-f"
if [ $1 = ${RF} -o $1 = ${R} -o $1 = ${F} ]
then
shift
fi
for i in $*; do
FILENAME=`basename $i`
STAMP=`date +%s`
mv -f "$i" ${TRASH_DIR}/${FILENAME}.${STAMP}
done
}
alias rm=trash
使用 rm
, rm -rf
, rm -f
命令时,自动采用移动策略。
效果
大致如下图