जवाबों:
link=/var/opt/foo
target=$(readlink "$link")
$target
अब लिंक का लक्ष्य है, बिल्कुल वैसा ही जैसा कि फाइलसिस्टम में संग्रहीत था।
साइमलिंक सापेक्ष हो सकते हैं, हालांकि, यह सामान्य उपयोग के लिए बेहतर होगा:
target=$(readlink -f "$link")
ध्यान दें कि यह readlink
GNU Coreutils से उपयोग होता है, जो बीएसडी और अन्य प्रणालियों में मौजूद नहीं हो सकता है।
संपादित करें: readlink -f
बीएसडी पर काम करता है, जब तक लिंक लक्ष्य मौजूद है। realpath
एक और, बीएसडी-ओनली, टूल है जो समान तरीके से काम करता है।
-f
, और readlink -f
बस के रूप में अच्छी तरह से काम करता है (लिंक लक्ष्य मौजूद है)। बीएसडी में, realpath
एक और विकल्प प्रतीत होता है readlink -m
।
readlink()
4.2BSD के दिनों से एक सिस्टम कॉल है। बीएसडी की वर्तमानreadlink
उपयोगिता को फ्रीबीएसडी 4.10 के साथ जारी किया गया था। यह (re)stat
कमांड के लिए एक कड़ी के रूप में लागू किया गया था ( MacOS X मैनुअल पेज FreeBSD 9 मैनुअल पेज )। ध्यान दें कि इसका कोई-m
विकल्प नहीं है ।