`File.info(string)/ File :::Info.new(string)`解析符号链接?

时间:2018-06-17 21:39:44

标签: crystal-lang

我使用Crystal 0.25.0并且File.info(string).symlink?在以下示例中返回true时返回false:

`mkdir -p /tmp/delete`
 Dir.cd "/tmp/delete"
`rm -f b`
`touch a`
`ln -s a b`

puts File.info("b").symlink?.inspect  # false
puts File.info("b").type              # File
puts Process.run("test", "-L b".split).success? # true
puts Process.run("test", "-L a".split).success? # false

似乎解决了这个问题。这是预期的行为吗?

2 个答案:

答案 0 :(得分:3)

是的,File.info默认遵循符号链接。这是预期的行为,但您可以通过将follow_symlinks: false传递给方法来禁用它:

File.info("b", follow_symlinks: false).symlink? # => true

此行为记录在API文档中的File.info下。

答案 1 :(得分:2)

如果您不需要其他任何File::Info个实例,则可以使用基本上调用info(path, follow_symlinks: false).symlink?的{​​{3}}。