Get the filename linked to symbolic link


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Get the filename linked to symbolic link
# 1  
Old 09-05-2014
Get the filename linked to symbolic link

Hello guys,

I have a simple problem. Do you know any way to get the get the filename linked to symbolic link? I think use "ls -l <myfile> | cut -d '>' -f2", but i know it is a bad practice take information from the output of "ls -l". I dont have "stat" comand neither. Smilie

Regards!

Example:

I have this symbolic link:

lrwxrwxrwx 1 USER.SUPER USER 21 Jul 26 2013 mylink.so -> myLibrary.so

And i want to get only this "myLibrary.so" and save it in a variable of a script.
# 2  
Old 09-05-2014
man readlink (will likely be there on most Linux distros anyhow)

Your solution doesn't necessarily give you the "file"... for a symbolic link could point to symbolic link, etc...
# 3  
Old 09-05-2014
I dont have that program. I agree to my solutions a "loop".
# 4  
Old 09-05-2014
Lightbulb

Code:
$ ls sh
sh
$ file sh
sh: symbolic link to `dash'
$ file sh | sed 's/.*`\(.*\)\x27/\1/' 
dash
$

# 5  
Old 09-05-2014
Excellent!! Thanks!!
# 6  
Old 09-05-2014
Or you could write your own readlink utility. Save the following in readlink.c:
Code:
#include <errno.h>
#include <stdio.h>
#include <unistd.h>

int
main(int argc, char *argv[]) {
        char    buf[2048];      // buffer for symbolic link
        int     err = 0;        // non-zero if errors found
        int     i;              // loop control
        int     len;            // lenght of cymlink data

        for(i = 1; i <argc; i++)
                if((len = (int)readlink(argv[i], buf, sizeof(buf))) == -1) {
                        perror(argv[i]);
                        err = 1;
                } else  printf("%*.*s\n", len, len, buf);
        return(err);
}

run:
Code:
make readlink

and then to get the contents of a symbolic link stored into a shell variable, use:
Code:
var=$(./readlink symlink)

This will give you an error if you give it the operand is a file that is not a symbolic link, and it will truncate the contents of symliinks that are longer than 2048 bytes, but that won't usually be a problem for what you're trying to do. The real readlink would stat() the file if readlink() failed with EINVAL and then, if the stat() succeeded would just print the filename.
# 7  
Old 09-05-2014
Thanks Don.

Regards!
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

Symbolic link

Hi, trying to understand more about symblic link, when I compiled a program called "match" in one folder ~/downloadsoftware/I want this program to be accessible like a system command by putting a symbolic link in /usr/bin/ Not by setting the $PATH method in .bashrc at this time. What I did is:... (4 Replies)
Discussion started by: yifangt
4 Replies

2. Shell Programming and Scripting

How to list all symbolic link?

how to list all symbolic link can i use find / path -type l (1 Reply)
Discussion started by: avtalan
1 Replies

3. UNIX for Dummies Questions & Answers

[Solved] Symbolic link not allowed or link target not accessible

Hi everybody, I read about treads realted to this issue but they did not resovle issue given below. Please help me resolve issue given below I have html file under /srv/www/htdocs/actual_folder ls actual_folder/ test.html and following link works... (0 Replies)
Discussion started by: newbielgn
0 Replies

4. Shell Programming and Scripting

ls on a symbolic link

Hi all, Can anyone please confirm if the command below is the only way that I can get what the symbolic link is set to? mnlxd110(oracle)/db/posd2/dba$: ls -l | grep "^l" lrwxrwxrwx 1 oracle dba 28 Aug 9 2011 bdump -> diag/rdbms/posp1/posp1/trace mnlxd110(oracle)/db/posd2/dba$:... (7 Replies)
Discussion started by: newbie_01
7 Replies

5. Shell Programming and Scripting

Symbolic Link Help

Hello All, This may be a silly question to some but I am really stuck. Is there a way to reverse the following; sudo rm /bin/sh sudo ln -s /bin/bash /bin/sh It was part of a driver compile/installation procedure by Digi for Ubuntu stating that dash isn't supported and a symbolic link... (2 Replies)
Discussion started by: LAVco
2 Replies

6. UNIX for Dummies Questions & Answers

How two directories are linked (not symbolic link)

Hi, I'm trying to understand a "strange" setup: on one of the systems, when I cd into a directory, /data/logs, it takes me into /data/uat/logs (instead of /data/logs). These two directories are not symbolicly linked. Here's what I have: In /data, "ls -li" shows (among other things): ... (6 Replies)
Discussion started by: chenghui
6 Replies

7. Shell Programming and Scripting

symbolic link

Hi, i am trying to create sym links on sles 11 , but it seems i am doing something wrong. oracle@tests:/u01/app/oracle/oradata/ACIS> pwd /u01/app/oracle/oradata/ACIS oracle@tests:/u01/app/oracle/oradata/ACIS> ln -s /db/ACIS/dbase/dbf/ /u01/app/oracle/oradata/ACIS/... (2 Replies)
Discussion started by: tonijel
2 Replies

8. Shell Programming and Scripting

tar the symbolic link

Hi Experts!! Can anyone help me out to know how can we tar the symbolic links. I would need to find the symbolic links present in the directory and then tar them out. I can find the links by find . -type l, but i need to know how to tar the symboilc link. Any help would be much appreciated.. ... (1 Reply)
Discussion started by: ganga.dharan
1 Replies

9. UNIX for Dummies Questions & Answers

need some info about symbolic link and hard link

hello folks how y'all doin well i have some questions about symbolic link and hard link hope some one answer me i open terminal and join as root and i wrote ln -s blah blah then i wrote ls i see red file called blah blah but didn't understand what is this can some one explain and... (2 Replies)
Discussion started by: detective linux
2 Replies

10. UNIX for Dummies Questions & Answers

symbolic Link

question abt symbolic link ... i'm doing the following ... ln -s x.sh ./scripts/y.sh and cat ./scripts/y.sh it is giving following error cat: cannot open y.sh Any reason u an think of ? But it is working fine when i goto scripts directory and cretae the symbolic link. ... (1 Reply)
Discussion started by: bhargav
1 Replies
Login or Register to Ask a Question