我使用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
似乎解决了这个问题。这是预期的行为吗?
答案 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}}。