Ruby 为什么'Dir[directory\u path].是空的?'return'false'总是空的?

Ruby 为什么'Dir[directory\u path].是空的?'return'false'总是空的?,ruby,directory,Ruby,Directory,Dir[directory\u path]。空?始终返回false。无论我是否以root用户身份运行irb,行为都是相同的: $ ll total 12 drwxrwxrwx 2 ndefontenay ndefontenay 4096 Aug 12 12:11 ./ drwxrwxrwx 4 ndefontenay ndefontenay 4096 Aug 5 11:45 ../ -rw-rw-r-- 1 ndefontenay ndefontenay 8 Aug 12 12:11 t

Dir[directory\u path]。空?
始终返回
false
。无论我是否以root用户身份运行
irb
,行为都是相同的:

$ ll
total 12
drwxrwxrwx 2 ndefontenay ndefontenay 4096 Aug 12 12:11 ./
drwxrwxrwx 4 ndefontenay ndefontenay 4096 Aug  5 11:45 ../
-rw-rw-r-- 1 ndefontenay ndefontenay    8 Aug 12 12:11 test

$ irb
> Dir["/opt/purge_entitlement/in"].empty?
 => false 
> exit

$ sudo irb
> Dir["/opt/purge_entitlement/in"].empty?
=> false
如果有人能解释一下这个问题,那将是非常有帮助的

目录[]。是否为空?始终返回false


它应该,因为它总是包含父目录
(..)
,以及目录本身
()
,您没有注意到。

这不是您问题的答案,但为了避免获取
的问题。
在列表中,使用
Dir.glob
而不是
Dir.
。对此,您可能会得到
true

Dir.glob("/opt/purge_entitlement/in/*").empty?

哦。谢谢我认为它比这更聪明:pIt有一个函数“空”是相当愚蠢的,从人类的角度来看,它并不能真正告诉你它是否是空的。这个函数在这一点上有什么好处?每个人都在写自己对“空”的定义吗?@ndefontenay你也可以这样做
Dir[“/opt/purge\u-entity/in”][2..-1]。空?
实际上上面的答案是有效的:)理解这个空的关键?它的功能是不测试目录,而是测试目录中的文件列表。提供如下路径:“myfolder/is/here/*”是成功使用Dir[]的关键。是否为空?我们并不是真的在测试目录,而是如果我们能检测到目录中的文件列表。因此,您提供了一个正则表达式来查找文件,这样可以避免。和。。这更有道理!不,它不是正则表达式,虽然它使用通配符。实际上它是正则表达式。通配符只是一个非常简单的正则表达式。情况并非总是如此,但对于Dir[],它是:Dir[/opt/purge\u-rightness/in]。空?SyntaxError:(irb):2:未知的regexp选项-prg在解析级别引发错误。您甚至不必查看
Dir.glob
是否可以接受正则表达式。你混淆了目录分隔符的斜杠和正则表达式文字的斜杠。明白了。感谢您的帮助和讨论。