A safe rm

write a file: ~/rm.sh.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#!/bin/bash
#
#  move files to trash bin, rather than deleting them
#  (and doesn't overwrite previously deleted files of the same name).
 
OS=$(uname -s)
case $OS in
    'Darwin')
        trash_dir="$HOME/.Trash"
        ;;
    'Linux')
        trash_dir="$HOME/.local/share/Trash/files"
        ;;
esac       
 
if [ ! -d $trash_dir ]; then
    echo "Creating Trash directory $trash_dir."
    mkdir $trash_dir
fi
 
# change delimiter $IFS to newline
IFS='
'
 
for file in $@; do
    base=$(basename "$file")
    newfile=$base
    while [ -e $trash_dir/$newfile ]; do
        random_suffix=$RANDOM
        newfile=${base}.${random_suffix}
    done
    mv "$file" "$trash_dir/$newfile"
done
 
unset IFS

modify ~/.bashrc.

1
2
alias remove='/bin/rm'
alias rm='~/rm.sh'
Homepage
Comments

Hide Comments