と言うのが私のTODOリストにずいぶん前からあったんだけど、当初はちょいちょい何か書く予定だったんだけど、いいものを見つけたおかげで楽に達成できた。
で、見つけたものと言うのがtrash-cliというもの。
インストール
trash-cliはPythonスクリプトなので、 easy_install でインストールできる。
…はずなんだけど、なぜか今現在最新の0.11.1は登録されているtarの中のファイルが足りないらしく、インストールできない。仕方ないのでリポジトリから取ってくる。
$ svn checkout http://trash-cli.googlecode.com/svn/trunk/ trash-cli $ easy_install trash-cli
使い方
使えるコマンドは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に登録しておけばいい感じかな。
その他
まとめ
trash-cliは使ってみると物足りない部分も出てくるけど、それでも十分使える。少なくともrmをmvに置き換えるよりは全然いい。
ゴミ箱は万が一の為のセーフティ機構。あると便利だからみんな使うといいよ!
*1:多分5つ。網羅的なリストがあった訳ではないので。