It is well known that Linux does not have a recycle Bin, some people are afraid to delete the wrong things (experienced Linux administrators rarely fan this error), individuals do not recommend the Recycle Bin, but should be to develop personal security awareness. A little digress.
then back 101 scripts #15 archiving Files as They ' re removed is a script to build a Linux Recycle Bin
#!/bin/sh # NEWRM, a replacement for the existing RM command, provides a # rudimentary unremove by capability and utilizing a new # directory within the user ' s home directory. It can handle directories # of content as a individual files, and if the user specifies # THE-F flag files are re
Moved and not archived. # big Important warning:you ' ll want a cron job or something similar to keep # the trash directories.
Otherwise nothing would ever actually # to deleted from the system and you'll run out of disk space! Mydir= "$HOME/.deleted-files" realrm= "/bin/rm" copy= "/bin/cp-r" if [$#-eq 0]; Then # let ' rm ' ouptut the usage error exec $REALRM # Our shell are replaced By/bin/rm fi # Parse all options looking f or ' F ' flags= ' "while getopts" dfiprrvw "opt does case $opt in f) Exec $realrm" $@ ";;
# exec lets us exit this script directly. * flags= "$flags-$opt";; # Other flags are for ' RM ', not US ESAC do shift $ (($OPTIND-1)) # make sure THat the $mydir exists if [!-D $mydir]; Then if [!-W $HOME]; Then echo "$ Failed:can ' t create $mydir in $HOME" >&2 exit 1 fi mkdir $mydir chmod $mydir # a little bit Privacy, please 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 exec $realrm $flags "$@" # We shell is replaced by REALRM
Let's say the implementation of this script
Replace the original RM command with our MYRM script with the Recycle Bin mechanism (alias alias), the file that the script will delete moves to the hidden folder named in the Personal directory under home. Deleted-files.
And then we'll see how this script is implemented.
While getopts "dfiprrvw" opt does case
$opt in
f), exec $realrm "$@"; # exec lets us exit this script directly.
* flags= "$flags-$opt";; # Other flags are for ' RM ', not US
Esac
done
This paragraph indicates that if the command is with the –F option, the original RM command is not entered into the Recycle Bin.
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
Processing parameters in a for loop order
Newname= "$mydir/$ (date" +%s.%m.%h.%d.%m "). $ (basename" $arg ")" Name of the file in the Recycle Bin.