Emacs
Lispのファイル操作関数のほとんどは、ディレクトリーであるようなファイルに使用されたときはエラーとなります。たとえばdelete-file
でディレクトリーの削除はできません。以下のスペシャル関数はディレクトリーの作成と削除を行うために存在します。
このコマンドはdirnameという名前のディレクトリーを作成する。parentsが非nil
の場合(インタラクティブな呼び出しでは常に非nil
)には、その親ディレクトリーがまだ存在しなければ最初にそれを作成することを意味する。関数としてのmake-directory
はdirnameがディレクトリーとして既に存在していてparentsが非nil
なら非nil
、dirnameを成功裏に作成できたらnil
をリターンする。mkdir
はこのコマンドにたいするエイリアス。
このコマンドはfilenameという名前の空のファイルを作成する。このコマンドはmake-directory
と同様に、parentsが非filenameがすでに存在する場合には、このコマンドはエラーをシグナルする。
このコマンドはdirnameという名前のディレクトリーをnewnameにコピーする。newnameがディレクトリー名ならdirnameはそれのサブディレクトリーにコピーされる。ディレクトリーの名前を参照のこと。
これは常にコピーされるファイルのファイルモードを、対応する元のファイルモードと一致させる。
3つ目の引数keep-timeが非nil
なら、それはコピーされるファイルの修正時刻を保持することを意味する。プレフィックス引数を与えると、keep-timeは非nil
になる。
4つ目の引数parentsは、親ディレクトリーが存在しない場合に作成するかどうかを指定する。インタラクティブな場合には、これはデフォルトで発生する。
5つ目の引数copy-contentsが非nil
の場合には、それはnewnameがディレクトリー名ならば、そのサブディレクトリーとしてdirnameをコピーするかわりにdirnameのコンテンツをnewnameにコピーする。
このコマンドはdirnameという名前のディレクトリーを削除する。関数delete-file
はディレクトリーであるようなファイルにたいしては機能しない。それらにたいしてはdelete-directory
を使用しなければならない。recursiveがnil
でディレクトリー内にファイルが存在する場合には、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を参照のこと。インタラクティブに呼び出された際には、プレフィックス引数がなければtrashはt
、それ以外はnil
。