我正在尝试使用该:mode
选项FileUtils.mkdir_p
.但是,我使用Ruby 2.1.0获得了意想不到的结果.
require 'fileutils'
FileUtils.mkdir_p '/this/is/my/full/path/tmp', :mode => 2750
Run Code Online (Sandbox Code Playgroud)
结果:
d-wSrwxrwT 2 myuid users 4096 Mar 24 10:14 tmp
Run Code Online (Sandbox Code Playgroud)
但是,如果我只用反引号调用shell命令,我会得到所需的结果:
`mkdir /this/is/my/full/path/tmp && chmod 2750 /this/is/my/full/path/tmp`
Run Code Online (Sandbox Code Playgroud)
结果:
drwxr-s--- 2 myuid users 4096 Mar 24 10:16 tmp
Run Code Online (Sandbox Code Playgroud)
如何在不使用shell命令的情况下创建具有所需权限的目录?
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