2013-05-09 126 views
2

如何在Lua中检查字符串是否为可执行文件的路径?看来,标准库和令人惊讶的LuaFileSystem都没有提供这种方法。如何检查文件在Lua中是否可执行?

+1

你是什么操作系统? – 2013-05-09 16:30:04

+1

使用'loadfile()'并检查它是否返回错误? – hjpotter92 2013-05-09 16:43:22

+2

'loadfile'用于加载Lua代码,不用于检查文件是否是二进制可执行文件,@ hjpotter92。 – 2013-05-09 17:10:54

回答

6

LuaFileSystem具有返回表的lfs.attributes()函数。相反,它有一个名为“mode”的键,其中包含一个描述节点(文件,目录,套接字等)的“类型”的字符串。

虽然它没有在手册中列出: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中进行实验的结果。谢谢! – 2013-05-09 17:12:38

4

luaposix具有stat功能。它返回mode领域,其中包括执行权限位的数量(不像LuaFileSystem只给你的文件类型。)

还有access这将检查的权限仅为当前用户。

+0

luaposix看起来很有用,谢谢! – 2013-05-09 17:57:38