我正在尝试使用:mode
中的FileUtils.mkdir_p
选项。但是,我使用Ruby 2.1.0获得了意想不到的结果。
require 'fileutils'
FileUtils.mkdir_p '/this/is/my/full/path/tmp', :mode => 2750
结果:
d-wSrwxrwT 2 myuid users 4096 Mar 24 10:14 tmp
但是,如果我只用反引号调用shell命令,我会得到所需的结果:
`mkdir /this/is/my/full/path/tmp && chmod 2750 /this/is/my/full/path/tmp`
结果:
drwxr-s--- 2 myuid users 4096 Mar 24 10:16 tmp
如何在不使用shell命令的情况下创建具有所需权限的目录?
答案 0 :(得分:5)
Ruby将权限解释为整数而不是八进制数。 chmod命令(以及传递给mkdir_p
的选项)采用八进制(或等价的整数)。如果你在数字前加0,Ruby会将它用作八进制。
FileUtils.mkdir_p '/this/is/my/full/path/tmp', :mode => 02750
或者,您可以使用整数(ruby -e 'puts 02750.to_i'
显示1512
)。
FileUtils.mkdir_p '/this/is/my/full/path/tmp', :mode => 1512
答案 1 :(得分:1)
这应该工作,看起来像方法是以权限为基数10整数,而不是八进制(前面有0)
require 'fileutils'
FileUtils.mkdir_p '/this/is/my/full/path/tmp', :mode => 02750
检查人类可读格式的权限这个命令对我来说很有用 stat -c"%a%n" *