技巧: macOS中替换rm命令

曾经因为 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命令时,自动采用移动策略。

效果

大致如下图
trash

|