2013-05-09 3 views
2

Как я могу проверить Lua, если строка - это путь к исполняемому файлу? Похоже, что ни стандартная библиотека, ни, что удивительно, LuaFileSystem предоставляет способ сделать это.Как проверить, является ли файл исполняемым в Lua?

+1

Что такое операционная система? –

+1

Использовать 'loadfile()' и проверить, не возвращает ли он ошибку? – hjpotter92

+2

'loadfile' для загрузки кода Lua, а не для проверки, является ли файл двоичным исполняемым, @ hjpotter92. –

ответ

6

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 
+2

О, это то, что я получаю для чтения документации вместо экспериментов в REPL. Благодаря! –

4

luaposix имеет функцию stat. Он возвращает число для поля mode, которое включает в себя биты разрешения на выполнение (в отличие от LuaFileSystem, который предоставляет только тип файла.)

Существует также access, который будет проверять разрешения только для текущего пользователя.

+0

luaposix выглядит очень полезно, спасибо! –

Смежные вопросы