【悪魔のコマンド】「rm -rf /」の事故防止策【trash-cli】

プログラミング

エンジニア界隈では有名な悪魔のコマンドrm -rf /

昔からこのコマンドでやらかしたという失敗談はしばしば耳にしますが、ついに身近な人間がやらかしましたw

ということで、再発防止策を考えます。

はじめに

この記事は、防止策について書いています。やらかしてしまった後にこの記事にたどり着いた方は、このあたりの記事が参考になるかもしれません。

大事なファイルを消してしまったけどextundeleteを使って危ないところで助かった話 - Qiita
この記事は、2014年の覚書をもとに書いています。 やっちまった 家のサーバの調子がいまいち。立ち上げた時にへんな具合になるので、とりあえず日記等々いろいろなものをバックアップしておこうと思って、tarで固めようとした。で、ta...

rm -rf /

簡単に言うと、全部削除するっていうコマンド。

それぞれ超簡単に書くと、こんな感じ。

rm削除コマンド。 rm [削除するファイル]
-rファイルだけではなく、ディレクトリも削除するオプション
-f細かいメッセージ出さずに削除をすすめるオプション
/全部

詳しくはこの辺参照

【 rm 】コマンド――ファイルを削除する
本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、「rm」コマンドです。

trash-cli

andreafrancia/trash-cli
Command line interface to the freedesktop.org trashcan. - andreafrancia/trash-cli

trash-cliというものを見つけました。これを導入すると、以下のようなコマンドが追加されます。

  • trash-put – ごみ箱へ移動
  • trash-list – ごみ箱の一覧
  • trash-restore – ごみ箱から復元
  • trash-empty – ごみ箱を空にする
  • trash-rm – ごみ箱から個々のファイルを削除

この中のtrash-putrmコマンドと紐づけることによって、削除したファイルやディレクトリが一旦、専用のごみ箱に入るようになります。(任意でそこから復元可能)

インストール

環境は、Macです。ほかの環境でも使用できるようですが、私は試していないです。

2020年10月23日時点では、v0.17.1でした。

$ brew install trash-cli

rmのエイリアスにtrash-putを設定する

rmが呼ばれたときに、代わりにtrash-putを実行するようにエイリアスを設定します。

~/.bash_aliaseに以下の内容を追記します。ファイルがなければ、新規作成してください。

if type trash-put &> /dev/null
then
    alias rm=trash-put
fi

~/.bashrcに以下の内容を追記します。ファイルがなければ、新規作成してください。

if [ -f ~/.bash_aliases ]; then
    source ~/.bash_aliases
fi

~/.bashrcを適用し、エイリアス設定が上手くいっているか確認します。

$ . ~/.bashrc
$ alias rm
alias rm='trash-put'

テストしてみる

試しに削除して、復元までしてみます。

# 適当なファイル作って
$ touch test.txt
# 削除して
$ rm test.txt
# ごみ箱の中身を確認して
$ trash-list
2020-10-23 20:04:08 /Users/tabesala/Downloads/test.txt
# 復元する(今回は、ファイルNo.0 を復元したいので、 0 を入力)
$ trash-restore
   0 2020-10-23 20:04:08 /Users/tabesala/Downloads/test.txt
What file to restore [0..0]: 0

課題というか、気になる点

ファイルの復元が一括ではできなさそうなので、本当にrm -rf /してしまったときは、復元大変かもw

コメント

タイトルとURLをコピーしました