Re:Readme

PCトラブルや環境構築、家電量販店とかで買ったもののメモ。ご利用は自己責任で。

rmコマンドの動作変更

rmコマンドのタイポで大事なファイルを削除してしまう悲劇を未然に防ぐべく、今回はそんな強力なコマンド「rm」の動作をゴミ箱に移すコマンドに置き換える方法をメモ。

Macなら、MacPortsをインストールしておけば、簡単にrmtrashコマンドのインストールを行える(MacPortsの詳細とインストールは過去の記事を参照。
hal-drumas.hatenablog.com


インストール自体は下記のコマンドで完了。

$ sudo port install rmtrash

デフォルトで使えるコマンド類は/binに一通り入っているが、MacPortsでインストールしたものは/opt/local以下に入っている。
あとは.bash_profile内に

if [ -f ~/.bashrc ] ; then
    . ~/.bashrc
 fi

のように記述し、

$ source ~/.bash_profile

で設定を適用すると、.bash_profileから.bashrcの設定も読み込んでくれる。
あとは.bashrcに

alias rm='rmtrash'

のようにエイリアスを記述すれば良い。これで、rmコマンドを実行するとrmtrashが実行されるような設定になった。なお、sudoコマンドを併用するとaliasが無効化されるので注意(http://archive.blog.hekt.org/archives/5085/
)。

今回はもう一歩踏み込んで、「mv2trash」の紹介もする。Macにおけるrmtrashはファイルをゴミ箱に単に移動させるコマンドだが、これだとゴミ箱に移したファイルを「戻す」操作が出来ない(移動先をいちいち指定する必要がある)。そこで、AppleScriptを利用したmv2trashという自作コマンドを有志が作成してくれていたので、これを利用させてもらうことにした(
http://sanrinsha.lolipop.jp/blog/2014/04/rmtrash-mv2trash.html
)。

の実行で、コマンドの実体がダウンロードされる。ちなみにwgetcurlの違いは下記の記事が詳しい。
d.hatena.ne.jp

さて、この手の自作コマンド類は、ホームディレクトリの下に「bin」とか「tools」とかいう名前のディレクトリを作って、そこにコマンドを置いてパスを通して使うのが慣例らしく、1ユーザのために公共の領域に手を加えることは好まれないらしい。 なので早速binディレクトリを作り、先程ダウンロードしたmv2trashをその中に入れる。忘れてはいけないのがパーミッションの設定で、

$ chmod a+x ~/bin/mv2trash

を実行することで、全ユーザにコマンドの実行許可を出しておく。 その後.bash_profileにmv2trashのあるディレクトリのパスを、次のようにファイル末尾に追記。

export PATH=~/bin:$PATH

これでsourceコマンドを実行すれば、どのディレクトリにいてもmv2trashが実行できるようになるので、あとは同様にmv2trashのエイリアスを.bashrcに書いておけば完了。
sourceコマンドを実行したら、rmで移動したゴミ箱内のファイルを「戻せる」ようになっているハズ。