rcmdnk's blog
Last update

ideaco New TUBELOR ゴミ箱 ブラック

multi_clipboardsd_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/bintrashがインストールされます。

インストール場所を変えたい場合は

$ 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_clipboardsd_cl で取り入れた選択画面を導入しました。

trashの新しい選択画面

基本的に multi_clipboardsd_cl で入れたのと同じでjで下を選択、kで上を選択、等。

trash特有のものとしては

  • Enter: 選択ファイル/ディレクトリを元の位置に戻す
  • h : 選択ファイル/ディレクトリを現在のディレクトリにコピー (ゴミ箱内のファイル/ディレクトリはそのまま)
  • d : 選択ファイル/ディレクトリを完全に消去
  • s : 選択ファイル/ディレクトリの詳細(削除日時、現在のゴミ箱内での位置)を表示

こんな感じで使います。

Sponsored Links
  1. これのせいで、Homebrewで自分のFormulaを作ってもtrashと言う名前で登録出来ませんでした。 本家のFormulaを全て無視する様にすれば良いのですが、流石にそれは意味が無いので。

    ので、Homebrewではrcmdnk-trashという名前に。

    $ brew install rcmdnk/rcmdnkpac/rcmdnk-trash
    

    でインストール出来ます。

  2. この時、リストとの非対応が生まれてしまうので、 一度trash -c等してリストを整理する必要あります。 (ということに気付いてきちんと整理されるように コマンドをアップデートしました。)

Sponsored Links

« Download Statusbarに変わるもの シェルスクリプトのreadでControl-a等を読み取る: ANSI C quoting »

}