rmでゴミ箱に捨てる

twitterのTLを見ていたら、間違えてrmしてファイル消してしまったというツイートに対して、rmでいったんゴミ箱を経由すればいいんじゃないかという提案がなされていた。(下記の関連リンク1と2)
確かに自分はやっちゃいそうだ。この前も危うくnkfでソースファイル消しかけた*1くらいのうっかり者だし。ということで、いつか何かの役に立つかもしれないので、Mac用にメモ。

以下のaliasを設定。.bashrcとか.zshrcとかに追記。これだけ。

alias rm='mv -i ~/.Trash'

あら簡単!確かにこれでも良いけど、ゴミ箱に同じ名前のファイルがあったらいちいち上書きするか尋ねてくるってのも変なので、連番付けてmvできるように外部ツールをインストール。coreutilsってのを入れると、GNU Linux版のコマンドが使えるようになるらしい。関連リンク4そのまま。

% sudo port install coreutils

インストールが済むと、GNU Linux版のmvがgmvって名前で使えるようになるので、エイリアスをgmv使って書き換えてやる。

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

このrmで同じ名前のファイルをいくつか削除したら、確かにゴミ箱の中のファイルに連番が!ゴミ箱を空にするには、バックスラッシュでalias無効にしてやればいいのかな。

% \rm ~/.Trash/*

cleartrashとか名前付けといた方が安全か。


ちなみに、port installするときに、with_default_namesのvariants指定してやればgmvじゃなくてmvにできるそうだ。あと、元のrmのオプションは効かないので注意。

*1:nkf -w hoge.cpp > hoge.cpp とかやると中身が空っぽになる。--overwriteオプションを使いましょう。

screen初めの一歩

インストールのエントリだけだとアレなので、ちょびっと触ってみる。screenの設定は先日の~/.screenrcと同じという前提で。^] は Ctrl + ] の意味で、emacs的には C-] と同じ。
Route 477

起動

%screen

screenを起動すると*1、以下のようなスプラッシュスクリーンが出るけど、エンターかスペースを押せば消える。

今はwindowが1個しかない状態。最下部にあるemacsのモードラインみたいな

screen | 0* zsh-4.3.10 |

ってのが今の状態を表しているっぽい。つまり、0番目のwindowを表示していて(アスタリスクがついている)、zshが動いている、ということかな。普通にemacsを起動して何かやってみる。

あれ?windowの名前がzsh-4.3.10のままだ...。どうやら今実行しているコマンドの名前が表示される訳ではないっぽい。実行中のコマンド名を表示させたければ、~/.zshrcとかいじればできるんかな。

新しいwindowを作る

emacsで何かやってる途中で、コマンド打つ必要が出てきたら、^]c して新しいwindow作ってみる。上の画像の状態でやってみると

となる。新しいwindowの番号は1であり、1の右側にアスタリスクが表示されているので、今は1番のwindowが表示されているってことが分かる。
さて、新しく作ったwindowで何かしよう。何をしよう...。ま、なんでも良いや。

windowの移動

ひとしきり仕事が終わってまたemacsのwindowに戻る場合は、^]0 してやる。最後の0はwindowの番号*2。^] ^] でも良いらしい。こっちは直前のwindowに戻るのだと。
さて、無事emacsに戻れた。

windowを閉じる

emacsでの仕事が終わったら、emacs終わってシェルをexitしてやれば0番のwindowが消える。emacs終わらなくても ^]k でwindowを殺せるっぽい?

上の状態で ^]k すると、下の状態になる。

emacsのwindowを終了したら、1番のwindowしかないので、こいつもexitでシェルを終わってやるとか ^]k すればscreenが終わる。
けど!screen終了するのちょっと待って!

作業を中断する

ここで ^]d してみると、シェルに戻る。これでscreenを終了せずに、中断(screenの用語ではデタッチというらしい)できるのだと。何が嬉しいのかまだ分からんけど。

つつけてシェルで、

%screen -r

とオプションを付けて実行してやれば、screenを再開できる。resumeのrらしい。
今度は ^]k でこの最後のwindowを閉じてみよう。今度は終了したので、-r付けてscreen再開しようとしても「もう無理ぽ」って言ってくる。

*1:zshにしたらプロンプトが '%' になった。bashは '$' だったのに。

*2:10番以降も例えば普通に^]10で大丈夫なのかな?