पर्ल में आप readlink()
फ़ंक्शन का उपयोग सिमलिंक गंतव्य पता लगाने के लिए कर सकते हैं।
आप सिमलिंक की अनुमतियों को पढ़ने के लिए lstat()
फ़ंक्शन का भी उपयोग कर सकते हैं (stat()
के विपरीत जो सिमलिंक द्वारा इंगित फ़ाइल के विवरण को पढ़ेगा)।
वास्तव में नए सिम्लिंक पर स्वामित्व को सेट करने के बिना अतिरिक्त सहायता के बिना नहीं किया जा सकता है क्योंकि पर्ल lchown()
सिस्टम कॉल का पर्दाफाश नहीं करता है। इसके लिए आप सीपीएएन से पर्ल Lchown
मॉड्यूल का उपयोग कर सकते हैं।
मान लिया जाये कि पर्याप्त अनुमतियाँ (nb: अनियंत्रित कोड)
use Lchown;
my $old_link = 'path to the symlink';
my $new_link = 'path to the copy';
my $dst = readlink($old_link);
my @stat = lstat($old_link);
symlink $dst, $new_link;
lchown $stat[4], $stat[5], $new_link; # set UID and GID from the lstat() results
आप सिमलिंक पर अनुमतियों के बारे में चिंता करने की जरूरत नहीं है - वे हमेशा के रूप में -rwxrwxrwx
धन्यवाद। मैंने नहीं देखा कि सिम्लिंक की कोई वास्तविक अनुमति नहीं है। मुझे यह सोचने की ज़रूरत है कि मालिक को बदलने में मुझे कितनी बुरी तरह की जरूरत है। – splintor
यह भी ध्यान रखें कि यदि सिम्लिंक की सामग्री _relative_ पथ है तो उसे पुनर्लेखन की आवश्यकता हो सकती है यदि $ old_link और $ new_link एक ही निर्देशिका में नहीं हैं! – Alnitak