Spec-Zone.ru › Elisp

Создание, копирование и удаление каталогов

Большинство функций 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API