如何获取符号链接的目标?
Posted
技术标签:
【中文标题】如何获取符号链接的目标?【英文标题】:How do I get the target of a symlink? 【发布时间】:2009-08-06 09:45:00 【问题描述】:我有一个字符串,其中包含指向现有符号链接的文件系统路径。我想得到这个链接指向的路径。
基本上,我想要通过这种黑客攻击获得的相同:
s = "path/to/existing/symlink"
`ls -ld #s`.scan(/-> (.+)/).flatten.last
但我想做到这一点而不用炮轰。
【问题讨论】:
顺便说一下,在 bash 中它也只是readlink path/to/symlink
。永远不要解析ls
的输出。
【参考方案1】:
我认为readlink 是您正在寻找的:
File.readlink("path/to/symlink")
【讨论】:
请注意,如果符号链接是相对的或存在符号链接链,这将不会跟随所有链接或返回完整路径 -Pathname#realpath 会。 @mfazekas,感谢您指出这一点;我想知道这是否真的是OP想要的;ls -ld ...
也没有给出真正的路径。【参考方案2】:
require 'pathname'
Pathname.new("symlink").realpath
或像其他人所说的那样阅读链接
【讨论】:
而不是 Pathname.new("/path/to/symlink").realpath.to_s :) .. 这绝对比使用 system() 好【参考方案3】:或者你可以试试:
File.realpath("symlink_path")
这适用于符号链接和普通文件。
【讨论】:
以上是关于如何获取符号链接的目标?的主要内容,如果未能解决你的问题,请参考以下文章