ファイルの捨て方について
*ファイルは消されない. ただ隠されるのみである.
*捨てるときはわがままな子供のように「もう要らない」と言ってぽいっと捨て,捨てたことが間違い
だとわかったなら,お調子者のおっさんのように「なんだ,ここにあったのか」と言って間違いを認めないで元に戻す.
*これがコンピューターでのファイルの捨て方の基本である.
*前振り
*UNIXでファイルやディレクトリーを消すのは厄介な仕事である.
*ファイル名を間違えないようにしないといけないし,ファイル名を間違わなかったとして
も其の消そうという判断が間違っていたりする.
* UNIXでファイルやディレクトリーを消すときはいつも多少の緊張を要する.
*このような緊張が生まれる原因はすべて操作が可逆でないというところからきている.
*失敗してもすぐに元に戻るようになっているのならこのような精神的負荷は感じない.
*ファイルを消す操作を可逆にする一番良い方法はWindowsやMacintoshなどがやっているように
「ゴミ箱」という概念を導入することである.
*UNIXでもこのゴミ箱の概念を導入するのはそれほど難しいことではない.
*ファイルをrmしないでmvして,どこかのごみディレクトリーに移動するようにしておけば
よいからである.
*このシェルで実装されたゴミ箱の概念でも十分機能するのだが,ここではあえてemacsによる実
装をお勧めしてみる.
*何故emacsで実装するのか?
*(1)OSに関係なく走る.
*emacs-lispによって実装するのでemacsさえ入っていればどの環境でもまったく同じよう
に動くので気持ちが良い.
*設定も~/.emacsだけでなされるのでシンプル.
*(2)ファイルを捨てるまでの作業が簡潔であり且つ直接的である.
*シェルでファイルのごみすてを実装した場合どれくらい手数がいるかを見てみる.
*あるファイルの中身をlessみて「ああ,これもういらんな」と思ったとする.
*まずlessを終了させるために「q」と打つ.
*シェルプロンプトのところで % コマンド file と打ってリターン.
*これらの動作はシェルの補完機能などを使って簡略化することはできるが,感覚と
しては3,4ステップぐらいの手間を食う.
*そして一番大きな問題はファイル名を補完するとき間違う可能性が生じるというと
ころである.
*emacsで実装がなされると次のようになる.
*emacsであるファイルを見ている.
*「これもういらないな」と思ったとする.
* 「M-J」というキーを押す.
*「このファイルをゴミ箱に飛ばしていいですか?」というプロンプトがミニバッファー
に現れる.
*そこでリターンを打つと其のファイルはゴミ箱に飛ばされる.
*手数はほぼ2ステップである.
*しかも今まさに見ていたファイルを飛ばすので飛ばすファイルを間違うことなど無
い.
*操作が直接的(みたまんま)というのはいいことがいろいろある.
*あるファイルをemacsで開いていてこのファイルはほとんど要らないがこの部分だけは必
要だなと思ったとき其の部分をカットして他のファイルに移して元のファイルをすぐに捨
てることができる.
*これをシェル上でやろうと思うとかなりの手間を食うことになる.
*ファイルの中身を見るのはエディターなのだからごみ捨てもエディターでやるのが速いのであ
る.
*この説明を読んでemacsの中でファイルを捨てたりするのもいいかもねと思った人は以下のものを使っ
てみてください.
*コメント
*この機能を十分に満喫するにはemacsのdiredモードに慣れていると良いでしょう.
*diredモードに余りなれていない人はこれを機にdiredモードをと仲良くのもよいと思い
ます.
*設定
*これを~/.emacsにおいてください.
* 「~」はホームディレクトリーを意味します.
*カスタマイズ
*ごみディレクトリーはデフォルトでは~/Gomiとなっています.
*其れを変更したい人は(defvar gomi-directory "~/Gomi")の部分の"~/Gomi"を自分の好
きなディレクトリーに変えてください.
*使い方
*ファイルを飛ばす方法は2通りあります.
*見ているファイルそのものをゴミ箱へ飛ばす方法
*emacsであるファイルを開いているとします.
*其のファイルをゴミ箱へ捨てたいと思ったとします.
*そこですかさずM-Jとする.
*「M-Jをする」とはescapeキーを押した後にJ(shift-j)を押すことを意味します.
*altキーがescapeキーと同等になっている場合にはaltキーとJとを同時に押せば同
じことが起こります.
*「このファイルをゴミ箱へ飛ばしていいですか?」と聞いてくるので飛ばしたいのリター
ンとしてください.
*気が変わって飛ばしたく無くなったのなら「n」と打つか,C-gとすれば其の操作は中止さ
れます.
*ファイルがゴミ箱へ飛ばされた後の画面は其のファイルがあったディレクトリーのdired
モードに変わります.
*ファイルだけでなくてディレクトリーも同じ操作でゴミ箱に飛ばせることもこの機能の
売りの一つです.
*diredであるディレクトリーを見ていて「このディレクトリーはもう要らんな」と
思ったらその場でM-Jとするとファイルのときと同様に確認の文字が現れるのでリター
ンとすると其のディレクトリーはゴミ箱へ飛ばされます.
*其の操作が終わった後には画面はひとつ上のディレクトリーのdiredモードの画面
になります.
*この操作をするときは007などのワンシーンをイメージすると面白い.
*ある部屋で敵だらけに囲まれて絶体絶命なのだが,隠し持っていた爆弾を地面にた
たきつけて其の部屋ごと破壊して自分だけはヘリコプターかなんかで助かるという
シーンである.
*上のファイルやディレクトリーの捨て方はまさに自分だけは助かるよう様な形になっ
ている.
*diredモードの状態でファイルにマークをしてゴミ箱へ飛ばす方法
*diredモードでファイルの一覧を見ているとする.
*要らないファイルがいくつかあったとする.
*それらにマークをつける.
*マークをつけるとは其のファイルがある行のところにカーソルがある状態でmキー
を押すことによってなされる.
*其の状態でG(shift-g)キーを押さえると「ゴミ箱に飛ばしてよい?」と聞いてくるので後
は同じ.
*この操作でもファイルとディレクトリーは同じ操作によって消されるということが売り
である.
*マークされたものはディレクトリーであろうがファイルであろうが同じようにゴミ
箱へ飛ばされる.
*ファイルは一体どこへ飛ばされたのか?
*其れを知るには具体的な例を見たほうが早い.
*~/test/fileというファイルをゴミ箱に飛ばしたとする.
*其のときの時間は2004年7月20日17時24分32秒であったとする.
*其のファイルは ~/Gomi/2004/Jul/20/ というディレクトリーに 17_24_32_file という名前で
移動される.
*つまり一般的に飛ばされたファイルは~/Gomi/年/月/日/時間_分_秒_file という名前に変えられる.
*何故このようにするのか?
*ファイル名を唯一無二にしてファイル名が被らないようにするため.
*ゴミ箱からファイルを復元するにはどうしたらいいのか?
*まず復活させたいファイルを見つける
*其の日に捨てたということがわかっている場合
*M-Gとすると~/Gomi/年/月/日/というゴミ箱ディレクトリーに移動
できますのでそこから復活させてください.
*いつ捨てたかわからないというとき
*検索機能を使って~/Gomiディレクトリーに検索をかけて見つけてください.
*日付が入っているので絞込検索がしやすいと思います.
*見つけた後はどうするか?
*これは各自の慣れている方法で其のゴミ箱から見つけたファイルを元の場所に移動して
みてください.
*Windowsの慣れているのならエクスプローラーで其れをやればいいし,UNIXに慣れて
いるのならシェルで其れをやれば良い.
*何故ここだけemacsでないのかというと
*emacsでやるのならdiredの機能を使えばこのことはたやすくできるのですが,そこ
まで習得するのはポテンシャルが高すぎるので.
*間違って捨ててしまうことはまれであり,この作業は自動化されていなくてもいい
と思われるので.
*とりあえず使ってみてください.こんなにも簡単にファイルが捨てられるものなのかと衝撃を受ける
ことでしょう.
*そして余計なファイルやディレクトリーがさくさくと捨てられるのですっきりさわやかなファ
イル管理ライフを送れるようになることでしょう.