Hej,
Jeg har dette script som løber ganske godt bar et par problemer, jeg forsøger at efterligne de rm kommandoen og det betyder, jeg ikke kan bruge rm bibliotek, jeg inted til alias mit script til rm og derefter bruge MV at flytte filer til en Papirkurv mappe i stedet for at slette den for evigt.
Det problem: når jeg bruger MV for at flytte en mappe i min slettet mappe, hvor denne mappe alle klar eksisterer jeg får en fejl, jeg har planer om at makulere alle filer og derefter Jeg vil gerne bruge RMDIR at fjerne alle de tomme mapper i træet.
Mit script er her
Code:
#!/bin/bash
# Ai program to emulate the "rm" command in UNIX.
# Created by Michael Kelly
# Last revison 12/07/2006
# INITIALIZE VARIABLES
NO_ARGS=0
FLAG_R=""
FLAG_F_I=""
FLAG_V=""
TRASH=$HOME/deleted
# FUNCTIONS
function errors() {
if [ "$#" -eq "$NO_ARGS" ] ; then
echo "rm: too few arguments"
echo "Try \`rm --help' for more information."
exit 0
elif [[ ! -f "$1" && ! -d "$1" ]] ; then
echo "rm: cannot remove $ARG : no such file or directory"
exit 0
elif [[ -d $ARG && "$FLAG_R" = "" ]] ; then
echo "rm: \`$ARG' is a directory"
exit 0
else
checkExisting $1
fi
}
function verbose () {
if [ "$FLAG_V" = "v" ] ; then
echo "removing \`$1'"
fi
}
function interactive () {
echo -n "rm: remove $1 ?"
read A
if [[ "$A" = [Yy] ]] ; then
remove $1
else
exit 0
fi
}
function writePro () {
if ! [ -w "$1" ] ; then
echo -n "rm: remove write-protected file \`$*'?"
read A
if [[ "$A" = [Yy] ]] ; then
delete $1
fi
else
delete $1
fi
}
function checkExisting ()
{
if [ -d "$TRASH/$1" ] || [ -f "$TRASH/$1" ]; then
shred -fp $TRASH/$1 2>/dev/null
rmdir $TRASH/$1 2>dev/null
writePro $1
else
writePro $1
fi
}
function force () {
mv -f $1 $TRASH 2>/dev/null
verbose $1
}
function remove () {
mv $1 $TRASH 2>/dev/null
verbose $1
}
function delete() {
if [ "$FLAG_F_I" = "-i" ] && [ -w "$@" ] ; then
interactive $1
elif [ "$FLAG_F_I" = "-f" ] ; then
force $1
elif [ "$FLAG_R" = "-R" ] ; then
recursive $1
else
remove $1
fi
}
# Getops
while getopts :rRfvi o
do case $o in
r|R) FLAG_R=-R
;;
f) FLAG_F_I=-f
;;
v) FLAG_V=-v
;;
i) FLAG_F_I=-i
;;
*) echo "rm: invalid option -$1"
echo "try \`rm --help' for more information"
exit 0
esac
done
shift `expr $OPTIND - 1`
if ! [ -d "$HOME/deleted" ] ; then
mkdir $HOME/delete
else
for ARG in $*
do
errors $ARG
done
fi
if [ $# -eq $NO_ARGS ] ; then
errors
fi
Jeg har sat fokus på problemet funktion med fed, jeg vil gerne strimle filer recrusively og derefter bruge RMDIR samme måde for de tomme mapper.
Nogen anbefalede denne kommando:
Code:
find -type f -exec shred -u '{}' \;
som laser recursivley men hvordan angiver jeg som startpunktet shreding fra? da jeg brugte dette, før det udryddet hver fil i mit hjem bibliotek og fremefter.
Når jeg har at sorteret Jeg vil gerne bruge et tilsvarende kommando men erstatter RMDIR med strimle, kan nogen fortælle mig væk til det?
Hilsen
Jack