2010-11-15 6 views
15

Erstellen eines Bash-Skripts, und ich versuche herauszufinden, wie mein symbolischer Link darauf hinweist. Im Moment mache ich es damit, aber das funktioniert nur, wenn sich mein Symlink im aktuellen Verzeichnis befindet. Gibt es eine Möglichkeit, herauszufinden, auf was mein Symlink verweist, wenn er sich in einem anderen Verzeichnis befindet?Wie kann ich herausfinden, auf was mein symbolischer Link zeigt?

ls -l "symlink" | cut -d'>' -f2 

Antwort

23

Wenn Sie das readlink(1) Dienstprogramm (Teil der GNU coreutils) haben, tut es das, was Sie wollen. Sonst bist du irgendwie ein Creek, mir ist kein einfaches & tragbares Äquivalent bekannt.

6

Auf einem BSD-Toolchain, ich tue:

stat -f %Y <filename> 

Zum Beispiel:

$ stat -c %N /usr/bin/firefox 
`/usr/bin/firefox' -> `../lib/firefox-3.6.12/firefox.sh' 
:

% ln -sf /bsd ~/blah   
% stat -f %Y ~/blah 
/bsd 

Auf einer GNU-Toolchain es nicht so einfach ist, können Sie so etwas wie verwenden

Verwenden Sie dann awk/cut und sed, um Junk-Quotes zu extrahieren und zu entfernen.

Oder eine unordentlichere Lösung ist ls -al und entweder awk/cut, um die Spalte zu extrahieren, die Sie benötigen.

Verwandte Themen