ファイルを削除すると同時にアーカイブに保管する

#!/bin/sh
#newrm.sh
#rmの代替コマンド。ユーザーのホームディレクトリに作成した
#ディレクトリを使って簡単な復元機能を提供する。ファイルだけでなく
#ディレクトリも扱える。-fフラグが指定されるとファイルは保管されず
#削除される

mydir="$HOME/.deleted-files"
realrm="/bin/rm"
copy="/bin/cp -R"

if [ $# -eq 0 ]; then #使用法はrmコマンドに出力される
    exec $realrm      #シェルのプロセスを/bin/rmで置き換える
fi

#-fフラグが指定されているか調べる
flags=""
while getopts "dfiPRrvW" opt; do
    case $opt in
        f ) exec $realrm "$@"       ;; #スクリプトを終えて/bin/rmを実行
        * ) flags="$flags -$opt"    ;; #その他のフラグは/bin/rmに渡す
    esac
done
shift $(( $OPTIND - 1))

#mydirが存在しなければ作成する
if [ ! -d $mydir ]; then
    if [ ! -w $HOME ]; then
        echo "$0 failed: can't create $mydir in $HOME" >&2
        exit 1
    fi
    mkdir $mydir
    chmod 700 $mydir
fi

#コピーを作成
for arg ; do
    newname="$mydir/$(date "+%S.%M.%H.%d.%m").$(basename "$arg")"
    if [ -f "$arg" ]; then
        $copy "$arg" "$newname"
    elif [ -d "$arg" ]; then
        $copy "$arg" "$newname"
    fi
done

#シェルのプロセスを/bin/rmで置き換える
exec $realrm $flags "$@"
$ ls
colors.sh  newrm.sh       normdate.sh    validalphanum.sh
echon.sh   nfmt.sh        ragged.txt     validfloat.sh
inpath.sh  nicenumber.sh  valid_date.sh  validint.sh

$ ./newrm.sh ragged.txt 

$ ls
colors.sh  newrm.sh       normdate.sh       validfloat.sh
echon.sh   nfmt.sh        valid_date.sh     validint.sh
inpath.sh  nicenumber.sh  validalphanum.sh

$ ls ~/.deleted-files
30.37.13.14.12.ragged.txt