इस तरह एक लिंक क्यों बनाएं: ln -nsf?


42

यह क्या करता है?

ln -nsf

मुझे पता ln -sहै कि एक प्रतीकात्मक लिंक है, न कि एक कठिन लिंक जिसका अर्थ है कि आप इसे हटा सकते हैं और यह उस लिंक को नहीं हटाएगा जो इसे लिंक कर रहा है। लेकिन अन्य बातों का क्या मतलब है? (-nf)

अपडेट: ठीक है ... इसलिए मुझे याद है कि आप कमांड लाइन से इस सामान को ढूंढ सकते हैं। यहाँ मुझे टाइपिंग से पता चला है ln --help:

-f, --force                 remove existing destination files
-n, --no-dereference        treat destination that is a symlink to a
                            directory as if it were a normal file

लेकिन यह अभी भी मेरे लिए बहुत स्पष्ट नहीं है कि इसके निहितार्थ क्या हैं। मैं इस तरह से सॉफ्ट / सिम्बल लिंक क्यों बनाना चाहूंगा?


1
यहां तक ​​कि अगर आप उपयोग नहीं करते हैं -sतो आप मूल फ़ाइल को हटाने के बिना लिंक को हटा सकते हैं। हार्ड लिंक फ़ाइल की लिंक गणना को बढ़ाते हैं, इसलिए जब आप इसे केवल एक लिंक को हटाते हैं तो इसे हटाया नहीं जाएगा।
अमोक

यह हार्ड लिंक और प्रतीकात्मक लिंक के बीच का अंतर नहीं है। एक हार्ड लिंक डिस्क पर समान बाइट्स (इनोड) को इंगित करता है। फ़ाइल नाम से किसी अन्य फ़ाइल के लिए एक नरम लिंक इंगित करता है ।
ग्रेग हेविगिल

मैन पेज भी हैं। यानी रन मैन लान। या आदमी आदमी, उस मदद प्रणाली के बारे में जानने के लिए। आप मैन पेज ऑनलाइन भी प्राप्त कर सकते हैं ...
पीटर कॉर्ड्स

जवाबों:


43

बीएसडी मैन पेज से:

 -f    If the target file already exists, then unlink it so that the link
           may occur.  (The -f option overrides any previous -i options.)

 -n    If the target_file or target_dir is a symbolic link, do not follow
           it.  This is most useful with the -f option, to replace a symlink
           which may point to a directory.

32

-nविकल्प (के साथ एक साथ -f) बलों lnएक निर्देशिका में एक प्रतीकात्मक कड़ी अद्यतन करने के लिए। इसका क्या मतलब है?

मान लें कि आपके पास 2 निर्देशिकाएं हैं

  • foo
  • बार

और एक मौजूदा प्रतीकात्मक लिंक

  • बाज -> बार

अब आप अपडेट करना चाहते baz के लिए बात करने के लिए foo के बजाय। अगर तुम बस करो

ln -sf foo baz

आपको मिलेगा

  • बाज / फू -> फू
  • बाज -> बार (अपरिवर्तित), और इस प्रकार
  • बार / फू -> फू

अगर आप जोड़ते हैं -n

ln -sfn foo baz

आप जो चाहते हैं, वह मिलता है।

  • बाज -> फू

इसका मतलब है कि 'नो-डेरेफेरेंस' का मतलब है: एक मौजूदा लिंक को हल न करना और उस निर्देशिका के अंदर नए लिंक को रखना, बल्कि इसे अपडेट करना।


2
अब तक सबसे उपयोगी जवाब।
कोबजोहं

1

यहाँ ln के सभी विकल्प दिए गए हैं। आपको यहाँ पर n और -f मिलेगा।

 -F    If the target file already exists and is a directory, then remove
       it so that the link may occur.
       The -F option should be used with either -f or -i options.  If
       none is specified, -f is implied.
       The -F option is a no-op unless -s option is specified.

 -h    If the target_file or target_dir is a symbolic link, do not
       follow it.  This is most useful with the -f option, to replace 
       a symlink which may point to a directory.

 -f    If the target file already exists, then unlink it so that the
       link may occur.  (The -f option overrides any previous -i options.)

 -i    Cause ln to write a prompt to standard error if the target file
       exists.  If the response from the standard input begins with the
       character `y' or `Y', then unlink the target file so that the link
       may occur.  Otherwise, do not attempt the link.  (The -i option
       overrides any previous -f options.)

 -n    Same as -h, for compatibility with other ln implementations.

 -s    Create a symbolic link.

 -v    Cause ln to be verbose, showing files as they are processed.

-1

आप इस तरह की चीजों को खोजने के लिए "man ln" टाइप कर सकते हैं:

   -f, --force
          remove existing destination files

   -n, --no-dereference
          treat destination that is a symlink to a directory as if it were
          a normal file

20
मुझे अभी भी ठीक से समझ में नहीं आ रहा है कि इसका क्या अर्थ है
एंड्रयू

-1

-f, --force मौजूदा गंतव्य फ़ाइलों को हटा दें

-n, -no-dereference ट्रीट डेस्टिनेशन जो किसी डायरेक्टरी के लिए एक सिम्लिंक है मानो वह एक सामान्य फाइल थी


-5

-f का कहना है कि यदि आपकी कमांड का लक्ष्य एक मौजूदा फ़ाइल है, तो इसे हटा दिया जाना चाहिए और इसे नए लिंक से बदल दिया जाना चाहिए। (ध्यान दें कि यूनिक्स-प्रभावित प्रणालियों में, "फ़ाइल" में निर्देशिका, लिंक, पाइप, आदि शामिल हो सकते हैं)

-n को संशोधित करता है, यह कहते हुए कि यदि आपके द्वारा निर्दिष्ट लक्ष्य एक मौजूदा प्रतीकात्मक लिंक है, तो इसे हटाया नहीं जाना चाहिए ।


3
आपका वर्णन -nगलत है। -fअपने आप में एक सिम्लिंक को एक निर्देशिका में प्रतिस्थापित नहीं करेगा। जब एक निर्देशिका के लिए एक सिम्लिंक को प्रतिस्थापित किया -nजाता है , तो एक निर्देशिका के बजाय एक सामान्य फ़ाइल की तरह मौजूदा सिमलिंक का इलाज करने की आवश्यकता होती है।
ब्रायन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.