![]() |
|
|
|
|
||||
|
rmを使用してヘルプの代わりに細断
やあ、 私は、私にRMを模倣しようとしているコマンドを実行する問題がかなりよくカップルバーのこのスクリプトを記述して、この私rmディレクトリを使用できないことを意味、私にしてミュージックビデオをinted rmファイルを移動するために使用する私のスクリプトのエイリアス永久に削除するというよりもごみ箱フォルダに移動します。 この問題:使用しているときに削除されたフォルダには、このディレクトリのすべての準備を私はエラーが存在するディレクトリを移動するミュージックビデオ、私は千切りにし、私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の代わりに、誰でもそれに私は助言することも同様のコマンドを使用してソートすることがありますか? よろしく ジャック |