How do I get the target of a symlink?

RubySymlink

Ruby Problem Overview


I have a string containing the file system path to an existing symlink. I want to get the path that this link points to.

Basically I want the same that I'd get through this bit of hackery:

s = "path/to/existing/symlink"
`ls -ld #{s}`.scan(/-> (.+)/).flatten.last

but I want to do it without shelling out.

Ruby Solutions


Solution 1 - Ruby

I think readlink is what you are looking for:

File.readlink("path/to/symlink")

Solution 2 - Ruby

require 'pathname'
Pathname.new("symlink").realpath

or readlink as others said

Solution 3 - Ruby

Or you can try:

File.realpath("symlink_path")

Which works for both symlinks and normal files.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionkchView Question on Stackoverflow
Solution 1 - RubyInshallahView Answer on Stackoverflow
Solution 2 - RubypiotrszView Answer on Stackoverflow
Solution 3 - RubyJuan IbiapinaView Answer on Stackoverflow