search
LoginSignup
11
Help us understand the problem. What are the problem?

More than 5 years have passed since last update.

Shell Script Advent Calendar 2016 Day 11

posted at

updated at

[macOS] コマンドラインからゴミ箱へ削除するスクリプトを書きました

これは,Qiita Shell Script Advent Calendar 2016 の 11 日目の記事です。
担当は @hiroyuki_jp です。


きっかけ(お急ぎの方は飛ばしてください)

ファイルやディレクトリを削除できる,rmrmdir といった便利なコマンドがあります。
みなさんよく使うと思うのですが,一般的に,これらのコマンドで消したファイルは復元するのが難しいと思います。

一方,Windows や macOS,その他の主要なシステムでは「ゴミ箱」が用意されており,こちらに捨てたファイルは,ゴミ箱を空にしない限り簡単に元の場所に戻すことができます。
削除したファイルを復元できることには大きな安心感があります。

macOS では,ゴミ箱の場所は ~/.Trash です。
ところが,単純に mv <file> ~/.Trash しても,下図のようにコンテキストメニューに「戻す」が出てきません。

Just move to ~/.Trash

そこで,コマンドラインから,指定したファイルを(「戻す」機能に対応させたまま)ゴミ箱に削除するコードを,シェルスクリプトで書いてみました。

ツール:trash をつくりました

MIT ライセンスで公開しています。リポジトリはここです

内部で簡単な AppleScript を動かしています。
実装はソースコードを見ればすぐ分かると思うので(初心者が書いたコードですので……;^^),以下では導入方法と使い方を紹介します。

インストール

スクリプトファイルをダウンロードし,/usr/local/bin に配置してください。
次のコードを実行すれば一発で入ります。

$ curl -O https://raw.githubusercontent.com/h-matsuo/macOS-trash/master/trash; chmod +x trash; mv trash /usr/local/bin

※ 本ツールは macOS 専用です。

使い方

Usage は次の通りです。

$ trash [-r] <file>...

<file> に削除したいファイルを 1 つ以上指定します。ディレクトリの場合は,-r オプションを付けます。
この辺りの使い方は rm コマンドと同じです。

相対パスを指定しても大丈夫です:

$ trash ../tmp/*

元に戻すときは?

現状,コマンドラインから元に戻す機能には対応しておりません。
元に戻すときは Finder.app から行ってください。

Put back from trash


以上,作ってみたツールのご紹介でした。

ちゃんとシェルスクリプトを書いたのは初めてなので,ご意見等あればぜひお願いします。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
11
Help us understand the problem. What are the problem?