Calculating the target of a symlink

Siddhesh Poyarekar siddhesh.poyarekar at gmail.com
Sun Jun 20 02:33:16 UTC 2010


On Sun, Jun 20, 2010 at 7:35 AM, Patrick O'Callaghan
<pocallaghan at gmail.com> wrote:
> A script I'm writing needs to work out the target of a symbolic link,
> i.e. given:
>
> $ touch foo
> $ ln -s foo bar
>
> the function should print bar when given foo as a parameter. The manual
> says "ls -L" should do this, but it doesn't seem to work:
>
> $ touch foo
> $ ln -s foo bar
> $ ls -l foo bar
> lrwxrwxrwx 1 poc poc 3 Jun 19 21:32 bar -> foo
> -rw-rw-r-- 1 poc poc 0 Jun 19 21:32 foo
> $ ls -L bar
> bar
>
> (should give foo)
>
> Have I misunderstood what "ls -L" does? Is there a bug? And is there a
> better way of doing this?
>

Yes. ls -L gives you information about the symlynk as if it were the
original file. It is only really useful if you use it in conjunction
with -l. Try `ls -Ll bar` to see what I'm talking about.

readlink is the correct command to get this information.


-- 
Siddhesh Poyarekar
http://siddhesh.in


More information about the users mailing list