Поиск файлов в стандартных местах
В этом разделе объясняется, как искать файл в списке каталогов (путь) или исполняемый файл в стандартном списке каталогов исполняемых файлов.
Чтобы найти файл конфигурации, относящийся к пользователю, см. Стандартные имена файлов, для функции locate-user-emacs-file.
- Функция: locate-file filename path &optional suffixes predicate
-
Эта функция ищет файл с именем filename в списке каталогов, заданном path, пробуя расширения из suffixes. Если такой файл найден, она возвращает абсолютное имя файла (см. Относительные имена файлов); в противном случае она возвращает
nil.Необязательный аргумент suffixes задает список расширений имен файлов, которые нужно добавлять к filename при поиске.
locate-fileперебирает каждый возможный каталог с каждым из этих расширений. Если suffixes равноnil, или(""), то расширений нет, и filename используется в исходном виде. Типичные значения suffixes —exec-suffixes(см. Создание дочерних процессов),load-suffixes,load-file-rep-suffixesи значение функцииget-load-suffixes(см. Загрузка расширений).Типичные значения для path —
exec-path(см. Создание дочерних процессов) при поиске исполняемых программ илиload-path(см. Поиск библиотек) при поиске файлов Lisp. Если filename — абсолютный путь, path не оказывает влияния, но расширения в suffixes всё равно проверяются.Необязательный аргумент predicate, если он не
nil, задаёт предикатную функцию для проверки, подходит ли кандидатный файл. Предикату передаётся имя кандидатного файла в качестве единственного аргумента. Если predicate равноnilили опущен,locate-fileиспользуетfile-readable-pв качестве предиката. См. Типы файлов для других полезных предикатов, например,file-executable-pиfile-directory-p.Эта функция обычно пропускает каталоги, поэтому, если вам нужно найти каталоги, убедитесь, что функция predicate возвращает
dir-okдля них. Например:(locate-file "html" '("/var/www" "/srv") nil (lambda (f) (if (file-directory-p f) 'dir-ok)))Для совместимости predicate также может быть одним из символов
executable,readable,writable,exists, или списком одного или нескольких из этих символов.
- Функция: executable-find program &optional remote
-
Эта функция ищет исполняемый файл с именем program и возвращает абсолютное имя исполняемого файла, включая его расширения, если они есть. Она возвращает
nilесли файл не найден. Функция ищет во всех каталогах вexec-path, и пробует все расширения имен файлов вexec-suffixes(см. Создание дочерних процессов).Если remote не
nil, иdefault-directoryявляется удалённым каталогом, program ищется на соответствующем удалённом хосте.
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/Locating-Files.html