यह ट्यूटोरियल बताता है कि ln कमांड का उपयोग करके Linux में सिम्लिंक (सिम्बोलिक लिंक), जिन्हें "सॉफ्ट लिंक" के रूप में भी जाना जाता है, कैसे बनाएं।
यदि आप Windows ऑपरेटिंग सिस्टम का उपयोग करने की पृष्ठभूमि से Linux पर आ रहे हैं, तो आप शॉर्टकट की अवधारणा से परिचित होंगे – ऐसी फ़ाइलें जिनमें कोई वास्तविक डेटा नहीं होता है और उस वास्तविक फ़ाइल या फ़ोल्डर का लिंक होता है जिसे आप एक्सेस करना चाहते हैं।
वे केवल आपकी सुविधा के लिए मौजूद हो सकते हैं (नेस्टेड फ़ोल्डर्स के माध्यम से क्लिक करने में समय बचाने के लिए) या आउटपुट को रीडायरेक्ट करने के लिए (आपके पास एक प्रोग्राम है जिसमें एक हार्ड-कोडेड डायरेक्टरी है जिसमें यह फ़ाइलें आउटपुट करता है, और आप उन्हें कहीं और भेजना चाहते हैं)।
Linux में सॉफ्ट लिंक (सिम्लिंक) अनिवार्य रूप से वही उद्देश्य पूरा करते हैं।
हार्ड लिंक बनाम सॉफ्ट लिंक
- सॉफ्ट लिंक (जिन्हें सिम्बोलिक लिंक या सिम्लिंक भी कहा जाता है) फाइलसिस्टम पर किसी अन्य फ़ाइल या फ़ोल्डर के स्थान को संदर्भित करते हैं।
- इसलिए, यदि जिस फ़ाइल को सॉफ्ट लिंक किया गया है, उसे हटा दिया जाता है, तो सॉफ्ट लिंक अर्थहीन हो जाता है क्योंकि यह एक ऐसी फ़ाइल की ओर इशारा करता है जो मौजूद नहीं है।
- चूंकि सॉफ्ट लिंक केवल लिंक की गई फ़ाइल के स्थान का संदर्भ है, वे अलग-अलग फाइलसिस्टम पर मौजूद हो सकते हैं।
- लिंक और लिंक की गई फ़ाइल के बीच अनुमतियां साझा नहीं की जाती हैं।
- हार्ड लिंक लिंक की गई फ़ाइल की एक मिरर कॉपी हैं – दोनों कॉपी स्टोरेज डिवाइस पर उसी डेटा को संदर्भित करती हैं।
-
- इसलिए, हार्ड-लिंक्ड फ़ाइल को हटाने से डेटा नहीं हटेगा – डेटा का अन्य "हार्ड लिंक" अभी भी फाइलसिस्टम में एक फ़ाइल के रूप में मौजूद रहेगा।
- फाइलसिस्टम इस बात की गिनती रखेगा कि डिस्क पर फ़ाइल के कितने संदर्भ हैं। जब सभी हार्ड लिंक हटा दिए जाते हैं, तो वह गिनती 0 (शून्य) होगी। जब गिनती शून्य तक पहुंच जाती है, तो फ़ाइल हटा दी जाती है और डेटा स्पेस को अन्य फ़ाइलों को स्टोर करने के लिए उपयोग करने के लिए डी-एलोकेट कर दिया जाता है।
- चूंकि वे एक ही डेटा के दो संदर्भ हैं, उन्हें एक ही फाइलसिस्टम पर मौजूद होना चाहिए।
- अनुमतियां साझा की जाती हैं – दोनों लिंक और लिंक की गई डिस्क पर एक ही फ़ाइल हैं जिसे दो स्थानों से संदर्भित किया जा रहा है।
- इसलिए, हार्ड-लिंक्ड फ़ाइल को हटाने से डेटा नहीं हटेगा – डेटा का अन्य "हार्ड लिंक" अभी भी फाइलसिस्टम में एक फ़ाइल के रूप में मौजूद रहेगा।
-
सिंटैक्स
ln [OPTIONS] SOURCE_PATH LINK_PATH
ध्यान दें कि:
- SOURCE_PATH के रूप में फ़ाइलें और फ़ोल्डर दोनों का उपयोग किया जा सकता है
- सॉफ्ट लिंक LINK_PATH पर बनाया जाएगा
विकल्प
आप ln कमांड को निम्न विकल्प पास कर सकते हैं:
| -F | यदि प्रस्तावित लिंक (link_name) पहले से मौजूद है और एक डायरेक्टरी है, तो इसे हटा दें ताकि लिंक हो सके। -F विकल्प का उपयोग -f या -i विकल्पों के साथ किया जाना चाहिए। यदि कोई निर्दिष्ट नहीं है, तो -f निहित है। -F विकल्प -s विकल्प निर्दिष्ट होने तक नो-ऑप है। |
| -h | यदि link_name या link_dirname एक सिम्बोलिक लिंक है, तो उसका पालन न करें। यह -f विकल्प के साथ सबसे उपयोगी है, एक सिम्लिंक को बदलने के लिए जो डायरेक्टरी की ओर इशारा कर सकता है। |
| -f | यदि प्रस्तावित लिंक (link_name) पहले से मौजूद है, तो इसे अनलिंक करें ताकि लिंक हो सके। (-f विकल्प किसी भी पिछले -i विकल्प को ओवरराइड करता है।) |
| -i | यदि प्रस्तावित लिंक मौजूद है तो ln को मानक त्रुटि पर एक संकेत लिखने का कारण बनता है। यदि मानक इनपुट से प्रतिक्रिया y या Y अक्षर से शुरू होती है, तो प्रस्तावित लिंक को अनलिंक करें ताकि लिंक हो सके। अन्यथा, लिंक का प्रयास न करें। (-i विकल्प किसी भी पिछले -f विकल्प को ओवरराइड करता है।) |
| -n | -h के समान, अन्य ln कार्यान्वयन के साथ अनुकूलता के लिए। |
| -s | एक सिम्बोलिक लिंक बनाएं। |
| -v | ln को वर्बोज़ बनाता है, फ़ाइलों को प्रोसेस करते हुए दिखाता है। |
ये विकल्प और ls कमांड के पूर्ण विवरण उपयोगकर्ता मैनुअल में पाए जा सकते हैं:
man ls
उदाहरण
एक साधारण सिम्बोलिक लिंक (सिम्लिंक संक्षेप में) बनाने का प्रदर्शन करने के लिए, हम एक फ़ाइल बना सकते हैं:
touch test_file.txt
फिर हम इसके लिए एक सॉफ्ट लिंक बना सकते हैं:
ln -s test_file.txt link_to_test_file
आप लिंक को सत्यापित कर सकते हैं:
ls -l
जो ऐसा कुछ आउटपुट करेगा:
-rw-r--r-- 1 user staff 0 2 Jan 01:31 test_file.txt lrwxr-xr-x 1 user staff 9 2 Jan 01:32 link_to_test_file -> test_file.txt
ध्यान दें कि:
- पहले कॉलम में अक्षर फ़ाइल या फ़ोल्डर प्रकार और अनुमतियों का प्रतिनिधित्व करते हैं
- उसके बाद की संख्या निहित फ़ाइलों की संख्या है
- user/staff फ़ाइल या फ़ोल्डर के लिए अनुमति वाले उपयोगकर्ता/समूह हैं
- फ़ाइल आकार, संशोधन तिथि, और नाम के बाद
- शुरुआत में वह l देखें? इसका मतलब है कि यह एक लिंक है
- इसके अतिरिक्त, आप अंत में -> बिट देख सकते हैं, जो दिखा रहा है कि फ़ाइल test_file.txt से लिंक है
- So, यह निश्चित रूप से एक लिंक है
निष्कर्ष
जब मैं अधिकांश सिस्टम में लॉग इन करता हूं, तो मुझे सीधे उपयोगकर्ता की होम डायरेक्टरी में भेज दिया जाता है। उस डायरेक्टरी का पथ टाइप करने के बजाय जिसमें मैं उस दिन काम करना चाहता हूं (उदाहरण के लिए, एक डायरेक्टरी जो एक वेब ऐप की फ़ाइलों को होस्ट करती है जिसे मैं डेप्लॉय कर रहा हूं), मैं आमतौर पर उस फ़ोल्डर का एक सॉफ्ट लिंक बनाऊंगा ताकि मुझे हर बार वापस नेविगेट करने के लिए पूरा पथ टाइप न करना पड़े।
तो, यह काफी उपयोगी है।
Linux में नए? कुछ कोड सीखकर इसे सीधे उपयोग में लाएं!