かつての、“Linux/UNIX小学生”ぐらいのころは、ディレクトリを削除するにはrmdirコマンド、と教わる。remove directoryだから、妥当なコマンド名だ。
ところが、このコマンドでディレクトリを削除するためには、そのディレクトリが空でなければならない。中身があると、このコマンドはエラーメッセージを出して、終了する。
中身のあるディレクトリを削除するには、ふつうのファイル削除コマンドrmを使う。ディレクトリの中まで再帰的に下りて行って中身を消すために-rオプション、いちいち確認メッセージを出させないために-fオプションを使う:
rm -fr foo
でも、われ思うに、中身があってもディレクトリを消す、という機能は、そもそも、rmdirコマンドのオプションとしてあるべきだ。rmを上のように使うのは、知らない人は思いつかないウラワザだ。
だいたいにおいて、ディレクトリを消したいとき、そこに中身があるのがふつうである。rmdirでディレクトリを消すためにまず中身を空にするのは、よほど単純なディレクトリ以外は難事業になる。
というわけで、われわれがLinux/UNIX小学生時代に習ったrmdirコマンドは、今や、なくても誰も困らない骨董品である。rmもrmdirも古くからあるコマンドだが、rmの方はある時期に、進化の機会があったのだろう。※
※: manページによると、rmdirの作者はWritten by David MacKenzieであるのに対し、rmはWritten by Paul Rubin, David MacKenzie, Richard M. Stallman, and Jim Meyeringとたいへん多い。GNU, Free Software Foundationの御大RMS氏の名前もある。rmには、たくさん手が加えられていることが分かる。
なお、GNOMEのGUIでは、アクションメニューに「ゴミ箱に移動する」があるが、rmで消したものはGUIの資産であるところのゴミ箱には入ってくれない。ゴミ箱を肥大させたくない人は、コマンドの方が良い。
また、もちろん、今回の私の作業例のように、自分がオーナーでないディレクトリは、GUIのメニューからゴミ箱へ行っていただくことはできないから、sudoを伴うコマンドラインでやるしかない。
最近のコメント