如何在Lua中创建目录?

Woo*_*kai 11 filesystems directory lua

是否可以在lua中创建目录?如果是这样,怎么样?

Art*_*uer 23

您可能会发现LuaFileSystem库很有用.它有一个mkdir函数.

require "lfs"
lfs.mkdir("/path/to/dir")
Run Code Online (Sandbox Code Playgroud)


Car*_*icz 15

有一个"系统"调用(或类似的东西,这是来自内存),您应该可以使用它来运行任意程序,其中可能包括mkdir命令.

编辑:在Lua书中找到了我的编程.在页203,它提到了如何使用

os.execute("mkdir " .. dirname)
Run Code Online (Sandbox Code Playgroud)

"伪造"目录创建命令.

编辑2:注意Jonas Thiem的警告,如果目录名来自不受信任的来源,该命令可能会被滥用!

  • Lua的设计理念是纯ISO C,以便可以通过C编译器移植到任何东西.C标准库中没有目录创建功能.这取决于特定于平台的扩展,例如POSIX系统上的mkdir(2)和Windows上的CreateDirectory*(). (9认同)
  • 这种反应非常危险**.一旦你的dirname包含; 接下来是实际的bash命令,你为自己设置了一个很好的任意命令执行漏洞.要非常小心地正确地逃避dirname - 或者只是跳过这个不好的建议并使用LuaFileSystem代替正确地做事. (3认同)
  • 感谢您指出(现在)有一个 LuaFileSystem 库可以做这种事情!我已经对建议使用它的答案投了赞成票。但是你是否也斥责了Lua的作者在他自己的书中推荐了这种技术?如果目录名称来自可靠的来源(例如在程序中硬编码),那么“os.execute()”方法就完全没问题,并且它的优点是不需要任何超出 Lua 标准的库。 (2认同)