पूर्ण पथ उपयोग प्राप्त करने के लिए:
readlink -f relative/path/to/file
किसी फ़ाइल की निर्देशिका प्राप्त करने के लिए:
dirname relative/path/to/file
आप दोनों को जोड़ भी सकते हैं:
dirname $(readlink -f relative/path/to/file)
अगर readlink -f
आपके सिस्टम पर उपलब्ध नहीं है तो आप इस का उपयोग कर सकते * :
function myreadlink() {
(
cd "$(dirname $1)"
echo "$PWD/$(basename $1)"
)
}
ध्यान दें कि यदि आपको केवल एक रिश्तेदार पथ के रूप में निर्दिष्ट फ़ाइल की निर्देशिका में जाने की आवश्यकता है, तो आपको निरपेक्ष पथ को जानने की आवश्यकता नहीं है, एक रिश्तेदार मार्ग पूरी तरह से कानूनी है, इसलिए बस उपयोग करें:
cd $(dirname relative/path/to/file)
यदि आप मूल पथ पर वापस जाना चाहते हैं (जबकि स्क्रिप्ट चल रही है), pushd
इसके बजाय का उपयोग करें cd
, और popd
जब आप कर रहे हैं।
* जबकि myreadlink
ऊपर इस प्रश्न के संदर्भ में काफी अच्छा है, यह readlink
ऊपर वर्णित उपकरण के सापेक्ष कुछ सीमा है। उदाहरण के लिए, यह अलग से फाइल के लिंक का सही ढंग से पालन नहीं करता है basename
।