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

Macでrmコマンドをより安全に使うための設定

Mac

Windows使う場合はファイルを削除してしまってもゴミ箱から戻せるからいいという考えがある。(というか戻せるようにゴミ箱に入れる)
Linux等でrmした場合ファイルを復活させることはできないので気をつけなければならない。
iオプションで確認をとるようにするのも手だがそういう時に限って確認でもyを押してしまっている。
twitterでチラッと見つけたものを思い出したのでMacで設定をしてみた。
※ちなみに~/.Trashはゴミ箱

元ネタ(ありがとうございます!)

設定

alias rm='mv -f --backup=numbered --target-directory ~/.Trash'

実行するとそんなオプションねーよと返される

mv: illegal option -- -

man mvみてみるとオプションがこれしかない。

     -f      Do not prompt for confirmation before overwriting the destination path.  (The -f option overrides any previous -i or -n options.)

     -i      Cause mv to write a prompt to standard error before moving a file that would overwrite an existing file.  If the response from the standard input begins with the character `y'
             or `Y', the move is attempted.  (The -i option overrides any previous -f or -n options.)

     -n      Do not overwrite an existing file.  (The -n option overrides any previous -f or -i options.)

     -v      Cause mv to be verbose, showing files after they are moved.

GNU coreutilsインストール

GNU coreutilsを入れるとGNU Linux版のコマンドが使えるようになるらしいので入れる

sudo port install coreutils

variants

port variants  coreutils   
coreutils has the variants:
   universal: Build for multiple architectures
   with_default_names: Install files without 'g' prefix, use with extreme caution

各コマンドはgが先頭についた状態(gls等)でインストールされるがwith_default_namesをつけると標準のままインストールしてくれるとのこと。
標準のが置き換わるのが気持ち悪いのでそのままインストール

インストールされたgmvをaliasにあててみる

alias rm='gmv -f --backup=numbered --target-directory ~/.Trash'

実際にrmコマンドを動作

hogeというファイルを順番に削除してみた

$ cd ~/.Trash
$ ls | grep hoge
hoge
hoge.~1~
hoge.~2~
hoge.~3~

これでビクビクしながらrm使うことがなくなり気軽につかえる!。
当然mvにaliasしてるのでrmのオプションは使うことはできない。(癖でやる)

ちなみに本当にrmを実行したくなったら先頭に\をつけてaliasを無効にする。