2
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【バルス】封じ! 間違ってrm -rfしないようにするターミナルの設定方法

Last updated at Posted at 2024-09-02

これは何

みなさんはITエンジニア界の「バルス」ことrm -rfで失敗したことはありますか?
自分はrm -rf ~/hogeのつもりでrm -rf ~/ hogeを実行してホームディレクトリを消し飛ばしたことがあります。
image.png
(まじでこんな顔になりました)

今回は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年くらい使っていますが,今の所バグってやらかしみたいなことにはなっていないです。

もっといい方法がありそうな気もしているので知っている方がいればご享受ください。
それでは皆さん快適な「バルス」ライフを!

image.png

2
5
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?