उबंटू में निर्देशिका का प्रतीकात्मक लिंक बनाएं [बंद]


247

नीचे एक निर्देशिका का सिम्बल बनाने के लिए मेरा कोड है:

sudo ln -s /usr/local/nginx/conf/ /etc/nginx

मैंने पहले से ही डायरेक्टरी बनाई है /etc/nginx। मैं सिर्फ स्रोत निर्देशिका की सामग्री ( /usr/local/nginx/conf/) को लक्ष्य निर्देशिका की सामग्री में होना चाहता हूं ( /etc/nginx)। लेकिन जब मैं कोड निष्पादित करता हूं, तो सामग्री के बजाय /etc/nginxएक निर्देशिका शामिल confहोती है conf। उस निर्देशिका में वह सामग्री है जो मुझे चाहिए, लेकिन गलत स्थान पर।

इसने टारगेट फोल्डर में डायरेक्टरी क्यों रखी, बजाय टार्गेट फोल्डर के डायरेक्टरी में कंटेंट डालने के?


आप फ़ाइलें (डिफ़ॉल्ट फ़ाइल ब्राउज़र) का भी उपयोग कर सकते हैं। उस फ़ोल्डर पर राइट क्लिक करें जिसे आप लिंक करना चाहते हैं> "लिंक बनाएं" विकल्प। यह लिंक किया हुआ फ़ोल्डर बनाएगा जिसे आप स्थानांतरित कर सकते हैं और आवश्यकतानुसार नाम बदल सकते हैं।
जॉन लिन्हर्ट

4
लिनक्स bind mountसुविधा का उपयोग करें । उदाहरण
gkiko 19

जवाबों:


254

lnयदि दूसरा arg एक डाइरेक्टरी है तो यह व्यवहार है । यह अपने अंदर पहले arg के लिए एक लिंक रखता है । यदि आप /etc/nginxसिमिलिंक बनना चाहते हैं , तो आपको पहले उस डायरेक्टरी को हटा देना चाहिए और उसी कमांड को चलाना चाहिए।



10
वह Unix.SE लिंक यहाँ वापस हल करता है। लगता है कि हमें एक परिपत्र निर्भरता मिली।
कैसर

30

यही कारण है कि क्या हो रहा है lnजब लक्ष्य पहले से मौजूद है और एक निर्देशिका है करने के लिए दस्तावेज है। यदि आप चाहते हैं /etc/nginxकरने के लिए हो सकता है एक सिमलिंक बजाय शामिल एक सिमलिंक, तो आप बेहतर नहीं है कि यह एक निर्देशिका के रूप में पहली बनाने था!


51
आपका उत्तर केवल पहले से ही उत्तर जानने वाले पाठक के संदर्भ में समझ में आता है। यह किसी के लिए भी बेकार है जो सवाल पूछेगा
रिकार्डो सपॉर्ट

1
क्या मैं वास्तव में एक आरोहित USB डिवाइस की जड़ में एक सिमलिंक बना सकता हूं (इस प्रकार मैं पहले इस फ़ोल्डर को मिटा नहीं सकता)?
ग्रिगोरी कोर्निलोव

1
@GrigoryKornilov आप एक सिमलिंक बना सकते हैं करने के लिए कुछ भी आप चाहते हैं, कुछ ऐसा है जो अस्तित्व में नहीं है भी शामिल है। यह प्रश्न उस जगह के बारे में था जहां सिम्लिंक बनाया जाता है (न कि जहां यह इंगित करता है)। फाइलसिस्टम में एक विशेष मार्गनाम या तो एक नियमित फ़ाइल है या यह एक निर्देशिका है या यह एक सिम्लिंक है (या यह एक सॉकेट या पाइप या डिवाइस है)। यह एक ही समय में उन चीजों में से एक से अधिक नहीं हो सकता है (यानी आपके पास एक ही नाम के साथ एक से अधिक विशिष्ट फ़ाइल नहीं हो सकती है)।
सेलाडा

10

स्क्रिप्ट में कुछ इस तरह उपयोगी है:

if [ ! -d /etc/nginx ]; then ln -s /usr/local/nginx/conf/ /etc/nginx > /dev/null 2>&1; fi

स्क्रिप्ट को फिर से चलाने के बाद "खराब" लूप सिम्लिंक को दोबारा बनाने से पहले यह रोकता है


1
अति उत्कृष्ट! यह सटीक उपाय है। निर्देशिका बनाने की कोई आवश्यकता नहीं है अगर यह पहले से मौजूद है। यह हार्ड लिंक के लिए एक वास्तविक अच्छा ट्विक है और इसे ब्लैकहोल (/ देव / नल) में सिंक करें
कॉस्मो अरुण
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.