Создание, копирование и удаление каталогов
Большинство функций 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