众所周知,linux是没有回收站的,一些人很害怕删错东西(有经验的linux管理员极少范这错误),个人不建议回收站,而应该是培养个人的安全意识.有点小跑题.
接着回来101个脚本之#15 Archiving Files As They''re Removed 就是建立一个linux回收站的脚本
The Code
#!/bin/sh
# newrm, a replacement for the existing rm command, provides a
# rudimentary unremove capability by creating and utilizing a new
# directory within the user''s home directory. It can handle directories
# of content as well as individual files, and if the user specifies
# the -f flag files are removed and NOT archived.
# Big Important Warning: You''ll want a cron job or something similar to keep
# the trash directories tamed. Otherwise nothing will ever actually
# be deleted from the system and you''ll run out of disk space!
if [ $# -eq 0 ] ; then # let ''rm'' ouptut the usage error
exec $realrm # our shell is replaced by /bin/rm
fi
# Parse all options looking for ''-f''
flags=""
while getopts "dfiPRrvW" opt
do
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
shift $(($OPTIND - 1))
# Make sure that the $mydir exists
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 # a little bit of 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 "$@" # our shell is replaced by realrm
while getopts "dfiPRrvW" opt
do
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
这一段说明 要是命令用带 –f 选项的话,则不进回收站,调用原本的rm命令.
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