rm コマンドにおいて、『やってはいけない』とされているのが以下の2つ
####$ rm -rf /
####$ rm .*
不図とした拍子のタイプミスや勘違いによる実行など、考えただけでもゾッとします。
逆に、rm コマンドの安全対策としては以下の3つが挙げられます。
.bashrc
alias rm='rm -i'
.bashrc
set rmstar
.bashrc
alias rm='mv -i ~/Trash'
しかし、私としては
-
ファイル毎に
y[Enter]
をタタくのは面倒だ -
*を用いて、ファイルを安全かつ効率的に削除したい
ので、rm コマンドに以下のエイリアスを被せています。
.bashrc
alias rm='set -f; rmrm'
function rmrm() {
local ch
echo $@ | grep -Gq "^/$\| /$\|^/ \| / "
if [ $? -eq 0 ]; then
set +f
echo "DONOT execute 'rm /'"
return 1
fi
echo $@ | grep -q "*"
if [ $? -eq 0 ]; then
set +f
ls $@
if [ $? -ne 0 ]; then
return 0
fi
echo -n "Are you sure? [Y/n] "
while : ; do
read ch
if [ "${ch}" = "Y" ]; then
command rm $@
return 0
elif [ "${ch}" = "n" ] || [ "${ch}" = "N" ]; then
return 1
else
echo -n "[Y/n]"
fi
done
else
command rm $@
return 0
fi
}
上記のエイリアスによって
$ ls
hoge.aux hoge.dvi hoge.log hoge.pdf hoge.tex piyo.eps$ rm hoge*
hoge.aux hoge.dvi hoge.log hoge.pdf hoge.tex
Are you sure? [Y/n] Y$ ls
piyo.eps
となります。