ऐसा करने का उचित तरीका -n, --no-dereference
विकल्प का उपयोग करना है।
$ ln -snf foo2 bar
यह ln
मौजूदा सिमलिंक को एक फ़ाइल के रूप में मानता है। अन्यथा, यह डीरेफरेंस bar
करता है foo1
, इसमें उतरता है foo1
और मूल TARGET
नाम का उपयोग करता है LINK_NAME
और यही कारण है कि आप निर्देशिका foo2
के अंदर बनाए जा रहे सिम्लिंक के साथ समाप्त होते हैं foo1
। ln
निम्नलिखित पर मैनपेज ...
-एन, -नो-डीरेफेरेंस
अगर यह एक प्रतीकात्मक लिंक है तो LINK_NAME को एक सामान्य फ़ाइल के रूप में मानें
निर्देशिका
नीचे विकल्प के ln
साथ और इसके बिना संस्करण के 8.21 के साथ मेरे आर्क लिनक्स डेस्कटॉप पर शेल आउटपुट है --no-dereference
, मुझे वही विकल्प मिला जो आपने --no-dereference
विकल्प के बिना किया था , लेकिन --no-dereference
विकल्प के रूप में इसका उपयोग करना अपेक्षित था।
$ mkdir foo1 foo2
$ ln -s foo1 bar
$ ls -l bar
lrwxrwxrwx 1 drew users 4 Sep 17 12:51 bar -> foo1
$ ln -sf foo2 bar
$ ls -l bar
lrwxrwxrwx 1 drew users 4 Sep 17 12:51 bar -> foo1
$ ls -l foo1
total 0
lrwxrwxrwx 1 drew users 4 Sep 17 12:51 foo2 -> foo2
$ ln -snf foo2 bar
$ ls -l bar
lrwxrwxrwx 1 drew users 4 Sep 17 12:52 bar -> foo2
ln --version
?