大多数 Emacs Lisp 文件操作函数在作用于目录文件时会报错。例如,不能使用 delete-file 删除目录。以下是专门用于创建和删除目录的函数。
该命令创建名为 dirname 的目录。如果 parents 非 nil(交互式调用时始终为非 nil),表示若父目录不存在则先创建父目录。
作为函数调用时:如果 dirname 已作为目录存在且 parents 非 nil,make-directory 返回非 nil;如果成功创建 dirname,则返回 nil。
mkdir 是该函数的别名。
该命令创建名为 filename 的空文件。
与 make-directory 类似,若 parents 非 nil,该命令会创建所需的父目录。
如果 filename 已存在,该命令会抛出错误。
该命令将目录 dirname 复制到 newname。如果 newname 是目录名,则 dirname 会被复制为该目录下的子目录。 See 目录名。
该命令始终将复制后文件的权限模式设置为与原文件一致。
第三个参数 keep-time 非 nil 表示保留复制文件的修改时间。使用前缀参数调用时,keep-time 会被设为非 nil。
第四个参数 parents 决定是否在父目录不存在时创建它们。交互式调用时默认会创建。
第五个参数 copy-contents 若为非 nil,表示当 newname 是目录名时,直接将 dirname 的内容复制到 newname 中,而非将 dirname 作为子目录复制进去。
该命令删除名为 dirname 的目录。函数 delete-file 无法处理目录文件,必须使用 delete-directory。如果 recursive 为 nil 且目录包含任何文件,delete-directory 会抛出错误。
如果 recursive 非 nil,即使该目录或其文件在 delete-directory 处理前已被其他进程删除,也不会报错。
delete-directory 仅在父目录层级跟随符号链接。
如果可选参数 trash 非 nil 且变量 delete-by-moving-to-trash 非 nil,该命令会将文件移至系统回收站而非直接删除。
See Miscellaneous File Operations in The GNU Emacs Manual。交互式调用时:若无前缀参数,trash 为 t;否则为 nil。