文件读取链接功能

file readlink functionality

假设您有一个符号 link: /tmp/zoo2 -> /tmp/zoo

而你只知道/tmp/zoo2,你如何解析symlink得到/tmp/zoo

在 shell 中使用 readlink 或者在 Ruby 中使用 File.readlink

Elixir 有类似的东西吗?

您可以使用 :file.read_link:

iex(1)> :file.read_link "/tmp/zoo2"
{:ok, '/tmp/zoo'}

如果link是相对的,你可以通过调用:filename.absname获得绝对目标,以link的目录作为基目录:

iex(1)> link = "/tmp/zoo2"
"/tmp/zoo2"
iex(2)> {:ok, relative_target} = :file.read_link link
{:ok, 'zoo'}
iex(3)> absolute_target = :filename.absname relative_target, :filename.dirname link
"/tmp/zoo"