在linux下用rm删除文件,一不小心就会干坏事……譬如不小心把系统文件删光了,所以萌生一个想法,能不能把rm删除动作绑定到垃圾箱,这样万一删错了还能找回来。
上网搜了一下,发现已经有人干过这事,转载过来供大家参考。
原帖在这 http://www.webupd8.org/2010/02/make-rm-move-files-to-trash-instead-of.html
1. Install trash-cliThis package provides a command line interface trashcan utility compliant with the FreeDesktop.org Trash Specification. It remembers the name, original path, deletion date, and permissions of each trashed file.In Ubuntu, simply run this command:
sudo apt-get install trash-cli
In Ubuntu enter this in a terminal:
sudo gedit /usr/local/bin/trash-rm
1
#
!
/
bin
/
bash
2 # command name: trash-rm
3 shopt -s extglob
4 recursive = 1
5 declare -a cmd
6 (( i = 0 ))
7 for f in " $@ "
8 do
9 case " $f " in
10 ( -* ( [fiIv] ) r* ( [fiIv] ) |-* ( [fiIv] ) R* ( [fiIv] ))
11 tmp = " ${f//[rR]/} "
12 if [ -n " $tmp " ]
13 then
14 # echo " \$tmp == $tmp "
15 cmd [ $ i] = " $tmp "
16 (( i ++))
17 fi
18 recursive = 0 ;;
19 ( --recursive ) recursive = 0 ;;
20 ( * )
21 if [ $ recursive ! = 0 -a -d " $f " ]
22 then
23 echo " skipping directory: $f "
24 continue
25 else
26 cmd [ $ i] = " $f "
27 (( i ++))
28 fi ;;
29 esac
30 done
31 trash " ${cmd[@]} "
2 # command name: trash-rm
3 shopt -s extglob
4 recursive = 1
5 declare -a cmd
6 (( i = 0 ))
7 for f in " $@ "
8 do
9 case " $f " in
10 ( -* ( [fiIv] ) r* ( [fiIv] ) |-* ( [fiIv] ) R* ( [fiIv] ))
11 tmp = " ${f//[rR]/} "
12 if [ -n " $tmp " ]
13 then
14 # echo " \$tmp == $tmp "
15 cmd [ $ i] = " $tmp "
16 (( i ++))
17 fi
18 recursive = 0 ;;
19 ( --recursive ) recursive = 0 ;;
20 ( * )
21 if [ $ recursive ! = 0 -a -d " $f " ]
22 then
23 echo " skipping directory: $f "
24 continue
25 else
26 cmd [ $ i] = " $f "
27 (( i ++))
28 fi ;;
29 esac
30 done
31 trash " ${cmd[@]} "
sudo chmod +x /usr/local/bin/trash-rm
In Ubuntu, run this in a terminal:
gedit ~/.bashrc
alias rm="trash-rm"
Then reload bashrc by running the following command in a terminal:
bash
Final trash-cli tips
Since you've installed the trash-cli utility, now you can use the following commands for manipulating the trash from the command line (the names are self explanatory):
empty-trash
list-trash
restore-trash