Как я могу проверить Lua, если строка - это путь к исполняемому файлу? Похоже, что ни стандартная библиотека, ни, что удивительно, LuaFileSystem предоставляет способ сделать это.Как проверить, является ли файл исполняемым в Lua?
ответ
LuaFileSystem имеет функцию lfs.attributes(), которая возвращает таблицу. Это, скорее, извращенно, имеет ключ с именем «режим», который содержит строку, описывающую «тип» узла (файл, каталог, сокет и т. Д.).
Хотя он не указан в руководстве по адресу: http://keplerproject.github.io/luafilesystem/manual.html ... который, как представляется, является канонической ссылкой для этого модуля ... в этой таблице также есть ключ «разрешений». Я думаю, вы могли бы разобрать его для любых символов «x».
Я обнаружил это с:
#!lua
local lfs = require 'lfs'
attr = lfs.attributes('./some_file')
for name, value in pairs(attr) do
print (name,value)
end
О, это то, что я получаю для чтения документации вместо экспериментов в REPL. Благодаря! –
luaposix имеет функцию stat. Он возвращает число для поля mode
, которое включает в себя биты разрешения на выполнение (в отличие от LuaFileSystem, который предоставляет только тип файла.)
Существует также access, который будет проверять разрешения только для текущего пользователя.
luaposix выглядит очень полезно, спасибо! –
Что такое операционная система? –
Использовать 'loadfile()' и проверить, не возвращает ли он ошибку? – hjpotter92
'loadfile' для загрузки кода Lua, а не для проверки, является ли файл двоичным исполняемым, @ hjpotter92. –