Создание, копирование и удаление каталогов
Большинство функций Emacs Lisp для работы с файлами выдают ошибки при использовании с файлами, являющимися каталогами. Например, нельзя удалить каталог с помощью delete-file. Для создания и удаления каталогов существуют специальные функции.
- Команда: make-directory dirname &optional parents
Эта команда создаёт каталог с именем dirname. Если parents не-
nil, как всегда бывает при интерактивном вызове, это означает, что сначала нужно создать родительские каталоги, если они ещё не существуют. При вызове как функцииmake-directoryвозвращает не-nil, если dirname уже существует как каталог и parents не-nil, и возвращаетnil, если каталог dirname был успешно создан.mkdir— это псевдоним этой функции.
- Команда: make-empty-file filename &optional parents
Эта команда создаёт пустой файл с именем filename. Как и
make-directory, эта команда создаёт родительские каталоги, если parents не-nil. Если filename уже существует, команда выдаёт ошибку.
- Команда: copy-directory dirname newname &optional keep-time parents copy-contents
-
Эта команда копирует каталог с именем dirname в newname. Если newname — имя каталога, dirname будет скопирован в подкаталог этого каталога. См. раздел Имена каталогов.
Она всегда задаёт права доступа к скопированным файлам такими же, как у соответствующих исходных файлов.
Третий аргумент keep-time, не-
nil, означает, что нужно сохранить время изменения скопированных файлов. Префиксный аргумент делает keep-time не-nil.Четвёртый аргумент parents указывает, нужно ли создавать родительские каталоги, если они не существуют. При интерактивном вызове это происходит по умолчанию.
Пятый аргумент copy-contents, если он не-
nil, означает, что содержимое dirname нужно скопировать непосредственно в newname, если последний является именем каталога, а не копировать dirname в него как подкаталог.
- Команда: delete-directory dirname &optional recursive trash
-
Эта команда удаляет каталог с именем dirname. Функция
delete-fileне работает с файлами, являющимися каталогами; для них необходимо использоватьdelete-directory. Если recursive равноnilи каталог содержит файлы,delete-directoryвыдаёт ошибку. Если recursive не-nil, ошибки не будет, даже если каталог или его файлы будут удалены другим процессом до того, какdelete-directoryдоберётся до них.delete-directoryследует только по символическим ссылкам на уровне родительских каталогов.Если необязательный аргумент trash не-
nilи переменнаяdelete-by-moving-to-trashне-nil, эта команда перемещает файл в системную корзину вместо его удаления. См. раздел Различные операции с файлами в Руководстве GNU Emacs. При интерактивном вызове trash равноt, если префиксный аргумент не указан, иnilв противном случае.
Copyright © 1990-1996, 1998-2026 Free Software Foundation, Inc.
Licensed under the GNU GPL license.
https://www.gnu.org/software/emacs/manual/html_node/elisp/Create_002fDelete-Dirs.html