ऐसा करने का उचित तरीका -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?