Привет,
У меня этот скрипт, который работает довольно хорошо бар пара проблем, я пытаюсь подражать РМ команде, и это означает, что я не могу использовать RM каталог, я inted к моим псевдонимом сценарий для РМ, а затем использовать М.В. переместить файлы в корзина папке, а не удалить.
Проблема: Когда я использую М.В. перейти в каталог с моим исключить папку, где этот каталог все готово существует Я получаю сообщение об ошибке, я планирую лоскуток все файлы, а потом я хочу использовать rmdir удалить все пустые каталоги в дереве.
Мой сценарий находится здесь
Код:
#!/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
Я подчеркнул проблему функция жирным шрифтом, я хотел бы лоскуток recrusively файлы, а затем использовать rmdir таким же образом, за пустые каталоги.
Кто рекомендовал эту команду:
Код:
find -type f -exec shred -u '{}' \;
который лоскутков recursivley но как я могу уточнить этот момент, чтобы начать shreding от? когда я использовал до этого он уничтожил все файлы в моем домашнем каталоге года.
После того, как я, которые сортируются я хочу использовать аналогичную команду, но вместо rmdir с лоскуток, может ли кто-нибудь меня сообщить ему?
Привет
Джек