rmコマンドをゴミ箱に置き換える

と言うのが私のTODOリストにずいぶん前からあったんだけど、当初はちょいちょい何か書く予定だったんだけど、いいものを見つけたおかげで楽に達成できた。

で、見つけたものと言うのがtrash-cliというもの。

インストール

trash-cliPythonスクリプトなので、 easy_install でインストールできる。
…はずなんだけど、なぜか今現在最新の0.11.1は登録されているtarの中のファイルが足りないらしく、インストールできない。仕方ないのでリポジトリから取ってくる。

$ svn checkout http://trash-cli.googlecode.com/svn/trunk/ trash-cli
$ easy_install trash-cli

これでOK。
UbuntuDebianにはapt-getもあるけど、パッケージがすごく古いので非推奨らしい。

使い方

使えるコマンドは5つ*1

trash-put

対象をゴミ箱に捨てる。このコマンドをrmに置き換える。私は .zshrc で以下のようにした。

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

このコマンドはrmコマンドとの互換性のために -d -f -i -r などのオプションを無視する。無視するってことはつまり、これらのオプションを指定しようがしまいが、ディレクトリだろうがなんだろうが構わずゴミ箱に突っ込んでくれる。もう rm -fr とかを恐る恐るやる必要はない。

trash-list

ゴミ箱の中身を見る。捨てた日時と元々あったパスが列挙される。まったく同じパスにあったファイルでもちゃんと別々に登録されている。素晴らしい。ちゃんとゴミ箱だ。

trash-restore

指定した位置にあったファイルを復元する。--helpを見ると、Usageの最後に[DEST]って書いてあるんだけど、引数の最後に出力先を渡して実行したら

NotImplementedError: not yet supported

って言われた。がんばれー。

restore-trash

何か似たようなコマンドだけど、こちらはインタラクティブに実行される。
実行するとゴミ箱内のファイルのうち、現在のパス以下にあったファイルのリストに番号が振られて表示され、指定した番号のファイルが復元される。

% restore-trash
   0 2009-04-03 00:53:12 /home/thinca/tmp/bar.txt
   1 2009-04-03 00:53:45 /home/thinca/tmp/baz.txt
   2 2009-04-03 00:50:43 /home/thinca/tmp/foo.txt
What file to restore [0..2]:

こんな感じ。複数選択はできないみたい。普段使う分にはこちらの方が便利そう。何より、全く同じパスのファイルを復元する場合はこっちじゃないとまだ無理っぽいし。

trash-empty

ゴミ箱を空にする。引数に数字を渡すと、その日数より古いファイルを消すらしい。ちゃんと試してない。cronに登録しておけばいい感じかな。

その他

  • KDEのゴミ箱と互換性があるらしい。私のLinuxマシンはサーバなのでKDEはおろかXすら入っていないので確認していない。
  • ところでゴミ箱内のファイルは実際にはどこにあるんだろう。一応把握しておきたい。今度調べよう。
  • この記事書いてる最中に、このプロジェクトのWiki内に似たようなプロジェクトのまとめを発見。今度一応他のもチェックしよう。
  • 個人的に欲しいと思う機能

まとめ

trash-cliは使ってみると物足りない部分も出てくるけど、それでも十分使える。少なくともrmをmvに置き換えるよりは全然いい。
ゴミ箱は万が一の為のセーフティ機構。あると便利だからみんな使うといいよ!

*1:多分5つ。網羅的なリストがあった訳ではないので。