Как проверить, является ли файл исполняемым в Lua?

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


person Omar Antolín-Camarena    schedule 09.05.2013    source источник
comment
Используйте loadfile() и проверьте, возвращает ли он ошибку?   -  person hjpotter92    schedule 09.05.2013
comment
loadfile предназначен для загрузки кода Lua, а не для проверки того, является ли файл двоичным исполняемым, @hjpotter92.   -  person Omar Antolín-Camarena    schedule 09.05.2013
comment
@ Омар, судя по тому, как вы сформулировали свой вопрос, вы хотели знать, как проверить, можно ли запустить файл в Lua (то есть, если это сценарий Lua). У меня сложилось такое же впечатление, и поэтому, я полагаю, всплыл loadfile...   -  person W.B.    schedule 10.05.2013
comment
О, хорошо, @W.B., я перефразирую.   -  person Omar Antolín-Camarena    schedule 10.05.2013


Ответы (2)


В 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
person Jim Dennis    schedule 09.05.2013
comment
О, вот что я получаю за чтение документации вместо экспериментов с REPL. Спасибо! - person Omar Antolín-Camarena; 09.05.2013

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

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

person finnw    schedule 09.05.2013