diff options
Diffstat (limited to 'saferm')
-rwxr-xr-x | saferm | 39 |
1 files changed, 39 insertions, 0 deletions
@@ -0,0 +1,39 @@ +#!/bin/sh + +archive="$HOME/.deleted" +realrm="$(which rm)" +copy="$(which cp) -R" + +if [ $# -eq 0 ]; then + exec $realrm +fi + +flags="" + +while getopts "dfiPRrvW" opt +do + case $opt in + f ) exec $realrm "$@" ;; + * ) flags="$flags -$opt" ;; + esac +done +shift $(( $OPTIND - 1 )) + +if [ ! -d $archive ]; then + if [ ! -w $HOME ]; then + echo "$0 failed: can't create $archive in $HOME" >&2 + exit 1 + fi + mkdir $archive + chmod 700 $archive +fi + +for arg +do + newname="$archive/$(date "+%S.%M.%H.%d.%m").$(basename "$arg")" + if [ -f "$arg" -o -d "$arg" ]; then + $copy "$arg" "$newname" + fi +done + +exec $realrm $flags "$@" |