Linux下是不存在回收站的概念,如果文件被误删了就后悔不及了。通过alias命令将rm映射为mv建立一个虚拟回收站

先建立一个回收站文件夹

1
# mkdir ~/.Trash

建立脚本

1
# vim /usr/bin/rmtomv

写入以下内容

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#!/bin/sh

if [ $# -eq 0 ]; then
echo "usage: rmtomv <files...>" >&2
exit 2;
fi

for file in "$@"; do
destfile="`basename \"$file\"`"
suffix='';
i=0;

# 如果文件已经存在则加上后缀
while [ -e "$HOME/.Trash/${destfile}${suffix}" ]; do
suffix=" - copy $i";
i=`expr $i + 1`
done

# 如果下执行命令完不显示信息去掉-v参数
mv -vi "$file" "$HOME/.Trash/${destfile}${suffix}"
done

最后写入alias

1
2
# vim ~/.bash_aliases 或者 ~/.bashrc里添加一行
alias rm='rmtomv'

测试

1
2
# touch a
# rm a

最终将会在~/.Trash/目录下看到被删除的文件