Ruby中与chmod +x等价的命令是什么?

3
在Linux中,将可执行文件添加到文件非常容易,“只需”输入以下命令:
chmod +x <fname>

然而,我没有在 Ruby 的宝石中找到类似的东西。当然,可以进行系统调用,例如:

system( 'chmod +x' << fname )

然而,我正在寻找更加“优雅”的解决方案。

我正在使用 Ruby 1.8.7 版本。


1
也许这个链接会有用:http://ruby-doc.org/stdlib-2.2.2/libdoc/fileutils/rdoc/FileUtils.html#method-c-chmod - Lix
的确如此。不幸的是,我正在搜索Ruby 1.8.7的选项,但它没有...好吧,一个价格解决了两个问题... - user1134991
1
哦,我明白了... 如果你使用的是 Ruby 版本,并且它是你的限制之一,那么包含它可能是个好主意。 - Lix
Ruby 1.8.7文档中:FileUtils.chmod 0644, '/my/directory/which/contains/my/file' - user2845360
是的,但我怎么知道“其他权限”,也就是说,我不想改变写/读权限。我可以将它们读入并进行位运算,我猜... - user1134991
“符号模式”语法(+x等)是chmod(1)实用程序的一个特性。据我所知,没有编程语言支持它。您需要围绕FileUtils.chmod编写包装器,或者(更好地)只需使用八进制权限;-) - Martin Tournoij
2个回答

16
require "fileutils"

FileUtils.chmod("+x", "foo.sh")

2
您可以使用File.stat读取当前模式,然后使用掩码进行按位“或”运算以实现您想要的效果。以下是一个示例(可简化):
``` current_mask = File.stat('foo.sh').mode new_mask = current_mask | '0000000000000001'.to_i(2) File.chmod(new_mask, 'foo.sh') ```

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接