2011-02-03 15 views
5

# परीक्षण> a.plsymlink फ़ाइल के लिए पूर्ण पथ कैसे प्राप्त करें?

my $file = '/home/joe/test'; 
if (-f $file && -l $file) { 
    print readlink($file) ; 
} 

कैसे सिमलिंक फ़ाइल के लिए निरपेक्ष पथ प्राप्त करने के लिए?

+0

देखें आप कह रहे हैं आप सिमलिंक अंक के लिए सिमलिंक या फ़ाइल का निरपेक्ष पथ का निरपेक्ष पथ करना चाहते हैं? – iain

+0

फ़ाइल का पूर्ण पथ – Tree

+0

पर सिमलिंक बिंदुओं को इंगित करता है तो वास्तव में आप केवल यह जानना चाहते हैं कि किसी दिए गए पथनाम के लिए पूर्ण पथ कैसे प्राप्त करें, क्योंकि आप पहले ही जानते हैं कि 'readlink() 'का उपयोग कैसे करें- फ़ाइल। –

उत्तर

10

Cwdabs_path द्वारा इस तरह के सुविधा प्रदान करता है के लिए एक सिमलिंक है मिलेगा साथ फ़ाइल :: युक्ति rel2abs का उपयोग करें।

#!/usr/bin/perl -w 

use Cwd 'abs_path'; 

my $file='/home/joe/test'; 
if(-f $file && -l $file) { 
    print abs_path($file); 
} 
+0

सावधान, यूटीएफ -8 फाइलनामों का उपयोग होने पर यह गलत हो जाएगा। उस मामले में 'एनकोड :: decode_utf8 (सीडब्ल्यूडी :: abs_path ($ फ़ाइल)) की तरह कुछ;' की आवश्यकता हो सकती है! –

3

आप के साथ readlink आप पेट पथ भले ही यह एक और सिमलिंक

use File::Spec; 

$path = File::Spec->rel2abs(readlink($file)) ; 
+0

फ़ाइल :: स्पेक के rel2abs कई लिंक के साथ काम नहीं कर रहे हैं। सीडब्ल्यूडी का abs_path काम करता है। 'स्पर्श/tmp/target का प्रयास करें; एलएन-एस लक्ष्य/टीएमपी/लिंक 1; ln -s link1/tmp/link2' और 'perl-mfile :: Spec -e' $ f = "/ tmp/link2" की तुलना करें; "$ f:" प्रिंट करें, फ़ाइल :: स्पेक-> rel2abs (रीडलिंक ($ एफ)), "\ n" ''' perl-m'Cwd "abs_path"' -e '$ f = "/ tmp/link2 के साथ "; प्रिंट करें "$ f:", abs_path ($ f), "\ n" '' – mivk

+0

यह साबित करने के लिए धन्यवाद कि पथ उपसर्ग के बिना मुलायम लिंक निर्दिष्ट करते समय जब आप एक ही निर्देशिका में नहीं हैं तो चीजें तोड़ेंगी और इसलिए, एक बुरा करने के लिए काम ;-) – iain

+0

क्या मुझे यह भी इंगित करना चाहिए कि ओपी ने ["सिम्लिंक पॉइंट्स फ़ाइल के पूर्ण पथ" के लिए पूछा है [http://stackoverflow.com/questions/4887672/how-to-get- पूर्ण-पथ-के-सिम्लिंक-फ़ाइल # टिप्पणी-5437184) और * नहीं * कैननिकल पथ (जो एक पूर्ण पथ है लेकिन _not आवश्यक रूप से फ़ाइल के लिए नहीं पूछा गया है)? – iain

-1

ये सभी गलत, परीक्षण और सही तरीके से देखें। this link

my $good = \`readlink -f $0\`; 
+4

हम्म ... आपकी साइट के लिए यातायात का उत्पादन? – kleopatra

+2

केवल जीएनयू 'रीडलिंक' के साथ काम करता है – twe4ked

संबंधित मुद्दे