読者です 読者をやめる 読者になる 読者になる

計算物理屋の研究備忘録

Linux, Cygwin, Mac, zsh, emacs等の使い方、設定などのメモ

rmをtrash-cliに置き換える

Cygwin Linux Python

2015/03/21 追記
pythonのバージョンの関係だったり、サーバーの都合だったりでtrash-cliはうまく動いてくれないときもある。
使うのを止めた。
今はrmmvに置き換えている
rmをmvに置き換える - 計算物理屋の研究備忘録

trash-cli

rmコマンドは一度消したら元に戻せないので、いったんゴミ箱にファイルを捨てて、ワンクッション置きたい。これを可能にするツールtrash-cliPythonで書かれているのでCygwinでもLinuxでもPythonがあれば使える。Windowsのゴミ箱が使えるわけではない

andreafrancia/trash-cli · GitHub

インストール

Pythonのパッケージ管理ツールpipを使えば楽。pipの使い方は以前メモしておいた。

管理者権限のない環境でpipを使えるようにしてPython環境を整える - 計算物理屋の研究備忘録

インストールはコマンドで一発

$ pip install trash-cli

インストール先を指定したければこんな感じ

$ pip install --install-option="--prefix=/path/to/trash-cli/local" trash-cli

ゴミ箱(Trash)の場所

trash-cliを初めて使うと同時にTrashというディレクトリが自動で作成される。
作成される場所はOSやHDDのシステムなど、環境ごとに異なるようだ

Cygwinの場合

Cygwinの場合デフォルトでは以下のように作成される。特に問題は無い。

~/.local/share/Trash

任意の場所を指定したい場合

複数ユーザーがいるサーバーで自分のディレクトリ内の任意の場所にTrashディレクトリを作りたいというとき、あまりよくわからないがソースファイルをちょっと書き換えればできそう。インストールした trashcliというディレクトリのtrash.pyというファイルを編集する。200~300行目くらいにある部分を下記のように編集。4行コメントアウトして一番下に自分の好きなディレクトリのパスを追加(例)/path/to/Trash。たぶんoutという変数に渡せばOK

class HomeTrashCan:
    def __init__(self, environ):
        self.environ = environ
    def path_to(self, out):
#        if 'XDG_DATA_HOME' in self.environ:
#            out('%(XDG_DATA_HOME)s/Trash' % self.environ)
#        elif 'HOME' in self.environ:
#            out('%(HOME)s/.local/share/Trash' % self.environ)
        out('/path/to/Trash' )

いまのところこの方法で任意の場所にTrashディレクトリを作成できていて、うまく動いている

使い方一覧

コマンド 動作
trash-put ゴミ箱に捨てる
trash-list ゴミ箱の中身チェック
restore-trash コマンドを実行した後番号指定でファイルをもとに戻す
trash-empty ゴミ箱を空にする
trash-empty n n日以上経過したファイルを完全に削除

その他のメモ

rmtrash-putに置き換える

エイリアスしておく

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

trash-emptyでたまにゴミ箱を空にしておく