これは何
みなさんはITエンジニア界の「バルス」ことrm -rf
で失敗したことはありますか?
自分はrm -rf ~/hoge
のつもりでrm -rf ~/ hoge
を実行してホームディレクトリを消し飛ばしたことがあります。
(まじでこんな顔になりました)
今回はrm -rf
での事故を防ぐための方法を考えたので良ければ使ってください。
具体的な方法
以下のような関数をシェルスクリプトで作成して.bashrcや.zshrc等に登録しておきます。
# rm -rf -i
function rm() {
DIR=$(eval echo '$'$#)
OPTION=${@%*$DIR}
if [[ $OPTION =~ r && $OPTION =~ f ]]; then
echo "rm -rf: remove directory $DIR? [y,n]"
read judge
case "$judge" in
"y")
:
;;
?)
return 0
;;
esac
fi
command rm $@
} # end function rm
これにより,rm -i
のように削除対象の確認を行うことができます。yを入力するとrm -rf
が実行されます。
rm -rf ~/tmp
rm -rf: remove directory /home/tomita/tmp? [y,n]
rm -i -rf
のように実行すればいいんじゃない?と思った方がいたかもしれませんが,rm
では-i
よりも-f
のほうが優先されるので確認を挟むためには自作関数を定義する方法を今回は取りました。
終わりに
この方法を3年くらい使っていますが,今の所バグってやらかしみたいなことにはなっていないです。
もっといい方法がありそうな気もしているので知っている方がいればご享受ください。
それでは皆さん快適な「バルス」ライフを!