rmでゴミ箱に捨てる

twitterのTLを見ていたら、間違えてrmしてファイル消してしまったというツイートに対して、rmでいったんゴミ箱を経由すればいいんじゃないかという提案がなされていた。(下記の関連リンク1と2)
確かに自分はやっちゃいそうだ。この前も危うくnkfでソースファイル消しかけた*1くらいのうっかり者だし。ということで、いつか何かの役に立つかもしれないので、Mac用にメモ。

以下のaliasを設定。.bashrcとか.zshrcとかに追記。これだけ。

alias rm='mv -i ~/.Trash'

あら簡単!確かにこれでも良いけど、ゴミ箱に同じ名前のファイルがあったらいちいち上書きするか尋ねてくるってのも変なので、連番付けてmvできるように外部ツールをインストール。coreutilsってのを入れると、GNU Linux版のコマンドが使えるようになるらしい。関連リンク4そのまま。

% sudo port install coreutils

インストールが済むと、GNU Linux版のmvがgmvって名前で使えるようになるので、エイリアスをgmv使って書き換えてやる。

alias rm='gmv -f --backup=numbered --target-directory ~/.Trash'

このrmで同じ名前のファイルをいくつか削除したら、確かにゴミ箱の中のファイルに連番が!ゴミ箱を空にするには、バックスラッシュでalias無効にしてやればいいのかな。

% \rm ~/.Trash/*

cleartrashとか名前付けといた方が安全か。


ちなみに、port installするときに、with_default_namesのvariants指定してやればgmvじゃなくてmvにできるそうだ。あと、元のrmのオプションは効かないので注意。

*1:nkf -w hoge.cpp > hoge.cpp とかやると中身が空っぽになる。--overwriteオプションを使いましょう。