Next: , Previous: , Up: ファイル   [Contents][Index]


26.11 ディレクトリーの作成・コピー・削除

Emacs Lispのファイル操作関数のほとんどは、ディレクトリーであるようなファイルに使用されたときはエラーとなります。たとえばdelete-fileでディレクトリーの削除はできません。以下のスペシャル関数はディレクトリーの作成と削除を行うために存在します。

Command: make-directory dirname &optional parents

このコマンドはdirnameという名前のディレクトリーを作成する。parentsが非nilの場合(インタラクティブな呼び出しでは常に非nil)には、その親ディレクトリーがまだ存在しなければ最初にそれを作成することを意味する。mkdirはこのコマンドにたいするエイリアス。

Command: make-empty-file filename &optional parents

このコマンドはfilenameという名前の空のファイルを作成する。このコマンドはmake-directoryと同様に、parentsが非filenameがすでに存在する場合には、このコマンドはエラーをシグナルする。

Command: copy-directory dirname newname &optional keep-time parents copy-contents

このコマンドはdirnameという名前のディレクトリーをnewnameにコピーする。newnameがディレクトリー名ならdirnameはそれのサブディレクトリーにコピーされる。ディレクトリーの名前を参照のこと。

これは常にコピーされるファイルのファイルモードを、対応する元のファイルモードと一致させる。

3つ目の引数keep-timeが非nilなら、それはコピーされるファイルの修正時刻を保持することを意味する。プレフィックス引数を与えると、keep-timeは非nilになる。

4つ目の引数parentsは、親ディレクトリーが存在しない場合に作成するかどうかを指定する。インタラクティブな場合には、これはデフォルトで発生する。

5つ目の引数copy-contentsが非nilの場合には、それはnewnameがディレクトリー名ならば、そのサブディレクトリーとしてdirnameをコピーするかわりにdirnameのコンテンツをnewnameにコピーする。

Command: delete-directory dirname &optional recursive trash

このコマンドはdirnameという名前のディレクトリーを削除する。関数delete-fileはディレクトリーであるようなファイルにたいしては機能しない。それらにたいしてはdelete-directoryを使用しなければならない。recursivenilでディレクトリー内にファイルが存在する場合には、delete-directoryはエラーをシグナルする。recursiveが非nilなら、delete-directoryの処理前にそのディレクトリーやディレクトリーのファイルを他のプロセスが削除したという稀な状況を除いてエラーは発生しない。

delete-directoryは親ディレクトリーの階層のシンボリックリンクだけをフォローする。

オプション引数trashが非nil、かつ変数delete-by-moving-to-trashが非nilなら、このコマンドはファイルを削除するかわりにシステムのTrash(ゴミ箱)にファイルを移動する。Miscellaneous File Operations in The GNU Emacs Manualを参照のこと。インタラクティブに呼び出された際には、プレフィックス引数がなければtrasht、それ以外はnil