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

Does `File.info(string)/File::Info.new(string)` resolve symbolic links?

我正在使用 Crystal 0.25.0 和 File.info(string).symlink? returns false,但在以下示例中它应该 return true:

`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

看来解决了link。这是预期的行为吗?

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

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

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

如果您不需要 File::Info 实例,您可以只使用 File.symlink?,它实际上调用 info(path, follow_symlinks: false).symlink?.