Hoi,
Ik heb dit script dat loopt vrij goed bar een paar problemen, ik probeer te emuleren het rm commando en dit betekent dat ik niet kan gebruiken rm map, ik inted alias aan mijn script tot rm en gebruik vervolgens mv te verplaatsen van bestanden naar een Trash map niet verwijderen.
Het probleem: wanneer ik mv om een map in mijn verwijderde map waar deze map al klaar is krijg ik een foutmelding, ik ben van plan voor het shredden alle bestanden en dan wil ik gebruik rmdir om alle lege mappen in de verkenner.
Mijn script is hier
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
Ik heb gewezen op het probleem functie in vet, ik wil shredden bestanden recrusively en gebruik vervolgens rmdir dezelfde manier voor de lege mappen.
Iemand aanbevolen dit commando uit:
Code:
find -type f -exec shred -u '{}' \;
die flarden recursivley maar hoe kan ik aangeven welk punt te starten shreding uit? toen ik dit voor hem weggevaagd elk bestand in mijn home-directory vanaf.
Zodra ik dat gesorteerd Ik wil gebruik maken van een soortgelijke opdracht, maar met vervanging rmdir shredden, kan iemand mij adviseren weg naar het?
Groeten
Jack