gomi is a simple trash script that works on CLI, written in golang
gomi
とは
Go 言語製の CLI 向けごみ箱ツールです。ファイルを削除するとき本当に削除する前に、専用のごみ箱(または、システムごみ箱)にプールしておくことができます。
- ワンバイナリで動作する
- インタラクティブな操作で簡単にリストアできる
- 捨てたファイルを QuickLook できる
- システムのごみ箱と連携もでき「元に戻す」操作もできる
- YAML 形式の設定ファイルでカスタマイズすることができる
- Windows でも動く
みなさん、ファイルの削除には rm
を使用されると思いますが、誤って重要ファイルを削除してしまうということは初心者もさることながら、たまにやってしまうものです。また、要らないと思って消して数日後に必要性を感じるときなどもあったりしますよね。
この gomi
では、削除するまえに一旦専用のごみ箱にプールします。またその時に履歴が保存されるため、あとから簡単に参照することができます。また、インタラクティブな UI で簡単にリストアすることができます。
特徴
同様のごみ箱ツールとして有名なものは、
-
Command line interface to the freedesktop.org trashcan.
-
Cross-platform command-line app for moving files and directories to the trash - A safer alternative to
rm
がありますが、前者は Python、後者は Node.js が求められます。gomi
は単一のバイナリで実行環境を選びません。
また、trash-cli
はインタラクティブなリストアを可能としていますが、数値によって指定するタイプであまりいい UI とはいえません。trash
はシステムのごみ箱と連携できるところが強みですが、(ごみ箱に送ることはコマンドラインで可能なのに)コマンドラインからの簡単なリストアが出来ませんでした。
この gomi
では、両者それぞれの欠点を克服し、さらなる特徴としてゴミ箱にあるファイルを QuickLook する機能を持っています。削除したするファイル名はかぶることもあり、内容をササッと確認したい時が結構あります。そんなときに少し覗いてみる機能があると便利です。
gomi
が用意しているごみ箱ではなく、システムのごみ箱に送る場合は gomi -s filename
としてください。もちろん gomi -r
でリストアも可能ですし、ごみ箱の「戻す」機能でリストアすることも出来ます。
使い方
-
削除する
$ gomi file
-
ごみ箱をあさる
$ gomi -r
リストアモードの UI は peco
をかなり参考に実装しました。また ~/.gomi
にあるファイルをもう一度削除すると本当に削除されます。
また、-r
に引数を渡すと、そのパスにリストアします(引数を渡さないと元あった場所にリストアする)。gomi -r .
とやると、カレントディレクトリにリストア出来ます。
また、YAML 形式の設定ファイルを読み込みます。ignore_files
では履歴に残したくないファイルをワイルドカードなどを使用して指定できます(ごみ箱には残る)。
ignore_files:
- .DS_Store
- "*~"
ファイルを少し覗く
OS X でいう QuickLook 的な機能です。C-q でトグル出来ます。復元したいファイルがどんな内容だったか確認するのに役立ちます。
ディレクトリの場合は、その中身のファイルやサブディレクトリを再帰的に列挙します。
QuickLook 中でもリストアモードのキーバインドは生きていますので、C-n などで QuickLook しながら次のファイルを行き来したり、Enter でリストアを実行することも出来ます。
クロスプラットフォーム
Windows もいけます。
インストール
Mac ユーザで Homebrew を使っていたら以下で OK です(Linuxには未対応です)。
$ brew tap b4b4r07/gomi
$ brew install gomi
それ以外は以下でインストールするか、GitHub Releases からインストールできます。
$ go get -u github.com/b4b4r07/gomi
バイナリだけなら GitHub Releases にアップロードしてあります。
設定
必須ではありませんが、rm
コマンドを gomi
で置き換えることをオススメします。タイプ数が2文字減る(gomi
→ rm
)うえに手グセもそのままにして削除できます。
alias rm="gomi"
参考
- rmコマンドをゴミ箱に置き換える - 2009/04/03
- rmコマンドが怖い人向け: 削除しないでゴミ箱に移動するシェルスクリプト - 2012/03/22
- rm -rfのプロテクト、コマンドラインでのゴミ箱 - 2013/04/23
- rmをtrash-cliに置き換える - 2015/01/27
- trash – rm代替。ターミナルでゴミ箱を使ったファイル削除 - 2014/05/29
- trash-cli, rmtrash — コマンドラインからゴミ箱へ
結構思いつきと勢いで作成しました。これから(ひとまずは自分用に)メンテしてソースコードと機能を改修していく予定です。