Spec-Zone.ru › Elisp

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

Большинство функций Emacs Lisp для работы с файлами возвращают ошибки при использовании с файлами, являющимися каталогами. Например, вы не можете удалить каталог с помощью delete-file. Для создания и удаления каталогов существуют специальные функции.

Команда: make-directory dirname &optional parents

Эта команда создаёт каталог с именем dirname. Если parents не равно nil, как всегда в интерактивном вызове, это означает создание родительских каталогов, если они ещё не существуют. 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-2022 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