multi_clipboard や sd_cl に引き続き コマンドラインで使えるゴミ箱コマンドも選択画面でインタラクティブに ゴミ箱に捨てたものを元に戻せるようにアップデートしました。
ゴミ箱コマンド: trash
コマンドライン操作でrm
してしまうと元に戻せないわけですが、
WindowsやらMacやらでGUI操作でゴミ箱というものに慣れてると
元に戻せないコマンドは不安な時があります。
ということで、元に戻せる削除コマンドとして
trash
というスクリプトを作って使っています。
このtrash
コマンドは、単にBashのシェルスクリプトで、
適当なゴミ箱ディレクトリを作ってそこに移動させるだけなので
MacでもLinuxでもCygwinでも動きます。
インストール
trash
は単体のシェルスクリプトなので、上のレポジトリからbinディレクトリにある
trash
スクリプトを適当な所に置いてPATHを通しておけば使えます。
コマンドラインから直接インストールしたい場合には
$ curl -fsSL https://raw.github.com/rcmdnk/trash/install/install.sh| sh
とすると/usr/binにtrash
がインストールされます。
インストール場所を変えたい場合は
$ curl -fsSL https://raw.github.com/rcmdnk/trash/install/install.sh| prefix=~/usr/local/ sh
な感じでprefix
の指定を。
MacではHomebrewでもインストール出来ます。
実はMacでHomebrewだと別にtrash
というコマンドがあるんですが
1、
そちらはMacのゴミ箱の実装を使ってるので、ちょっと遅いのとMac専用です。
ゴミ箱を開いて直接GUIで元に戻す
コマンドが使えたりする利点はありますが、
直接移動したりは出来るのでそれ程利点はないかな、と(と思ってます。。。)。
ゴミ箱の場所
Macの場合は~/.Trash
がMacのゴミ箱として存在してるので、
デフォルトではここを使って、ゴミ箱フォルダを開くと
trash
コマンドで捨てたファイルも見れる様になっています。
当然ゴミ箱を空にすると消えます
2
。
他の環境では~/.Trashというディレクトリを作って同様にゴミ箱とします。 なのでWindowsではWindowsのゴミ箱からは独立したものになります。
基本的な使い方
使い方は
$ trash file1
とするとfile1
が設定されたゴミ箱ディレクトリに移動され
~/.trashlist
に情報が書き加えられます。
情報として、削除日時と削除された場所、ゴミ箱内での位置、が記録されます。
trash
と打つのが結構面倒なので
$ alias del="trash -r"
とエイリアスを作っておくと便利です。
(ディレクトリ毎消しても戻せるのでデフォルトで-r
を付けてしまっても問題ないかと。)
rm
にエイリアスを張っても良いですが流石に副作用が大きいので
あまりオススメしません。
ゴミ箱内では~/.Trash/my_trash_box/20140112/file1
の様な位置に移動されます。
全てのファイルは指定したゴミ箱以下のmy_trash_box
というディレクトリ下に
日付のディレクトリが作られ、その中に入れられます。
もし、同じ日に同じ名前のファイルを削除した場合、
~/.Trash/my_trash_box/20140112/file1.1
の様に後ろに番号を付けて管理されます。
これで、戻すときにtrash -b
(back)とすると戻すファイルを選ぶ様なモードに
入るのですが、以前はざーっと全て表示させて、番号を入力、みたいな感じでした。
数が多くなるとスクロールバックして確認したりしなくてはいけないので
結構めんどくさい。
ので、 multi_clipboard や sd_cl で取り入れた選択画面を導入しました。
trashの新しい選択画面
基本的に
multi_clipboard
や
sd_cl
で入れたのと同じでj
で下を選択、k
で上を選択、等。
trash特有のものとしては
- Enter: 選択ファイル/ディレクトリを元の位置に戻す
- h : 選択ファイル/ディレクトリを現在のディレクトリにコピー (ゴミ箱内のファイル/ディレクトリはそのまま)
- d : 選択ファイル/ディレクトリを完全に消去
- s : 選択ファイル/ディレクトリの詳細(削除日時、現在のゴミ箱内での位置)を表示
こんな感じで使います。