2013-07-19 13 views
18

मैंने लिनक्स टोर ब्राउज़र पैकेज डाउनलोड किया, जो स्वयं निहित फ़ोल्डर है। मैंने रन स्क्रिप्ट के लिए एक सिम्लिंक बनाया:सृजन के बाद सिमलिंक टूटा हुआ

$ ln -s torbrowser/start-tor-browser ~/bin/torbrowser 

हालांकि, लिंक निर्माण पर टूट गया था। मैंने जो कुछ किया वह आदेश चला गया, कुछ भी नहीं, और यह टूट गया था। मैं ls किया था और मिल गया:

lrwxrwxrwx 1 synful synful 28 Jul 18 21:52 torbrowser -> torbrowser/start-tor-browser 

... जो अजीब है क्योंकि torbrowser/शुरू torbrowser 755 अनुमतियाँ था। इसके अलावा, मैं file भाग गया:

$ file ~/bin/torbrowser 
bin/torbrowser: broken symbolic link to `torbrowser/start-tor-browser' 

मैं एक नया बैश स्क्रिप्ट और इसे करने के लिए एक सिमलिंक इस परीक्षण करने के लिए बनाया है, और ऐसी कोई समस्या नहीं थी। मुझे यकीन नहीं है कि यह केवल स्टार्ट-टोर-ब्राउज़र के साथ क्यों हो रहा है। इसे सामान्य अनुमतियां मिली हैं और केवल एक सामान्य बैश स्क्रिप्ट है (फ़ाइल कमांड के अनुसार भी)।

... कोई विचार?

उत्तर

34

यह पता चला है कि

ln -s SOURCE TARGET 

एक सिमलिंक बुलाया लक्ष्य जो प्रतीकात्मक स्ट्रिंगSOURCE से जुड़ा हुआ है बनाने के लिए महत्वपूर्ण है। यदि SOURCE एक सापेक्ष पथ है (यानी, यह / से शुरू नहीं होता है), तो यह निर्देशिका के सापेक्ष व्याख्या की गई है कि TARGET है। यदि यह एक पूर्ण पथ है, तो यह एक पूर्ण पथ है। यदि यह एक स्ट्रिंग है जो पथ नहीं हो सकती है, या एक गैर-मौजूदा पथ या फ़ाइल शामिल है, या अन्यथा वैध पथ स्ट्रिंग नहीं है, कोई फर्क नहीं पड़ता। ln -s यह जांच नहीं करता है कि SOURCE मौजूद है या यहां तक ​​कि एक वैध पथ भी है। आप लगभग किसी भी छोटी सी स्ट्रिंग को स्टोर कर सकते हैं जो आप चाहते थे।

तो आप ऐसा करते हैं जब:

$ ln -s torbrowser/start-tor-browser ~/bin/torbrowser 

तुम क्या कर रहे है, मोटे तौर पर:

  1. नाम torbrowser के साथ अपने bin उपनिर्देशिका के अंदर एक निर्देशिका प्रविष्टि बनाएँ।
  2. (सापेक्ष) पथ torbrowser/start-tor-browser

नई सिमलिंक एक परिपत्र है कि नई निर्देशिका प्रविष्टि एक प्रतीकात्मक कड़ी (सिमलिंक) बनाओ। ~/bin/torbrowser~/bin/torbrowser/start-tor-browser से जुड़ा हुआ है, जिसका अर्थ है कि सिम्लिंक को हल करने के लिए आपको सिम्लिंक का पालन करना होगा। आप इसे उपयोग करने का प्रयास करते हैं, तो आप देखेंगे:

$ cat ~/bin/torbrowser 
cat: /home/joshlf13/bin/torbrowser: Too many levels of symbolic links 
$ 

कभी कभी - अक्सर, यहां तक ​​कि - एक रिश्तेदार पथ को सिमलिंक करने की क्षमता अत्यंत उपयोगी है।

$ mv apps /usr/local/apps 
: सिमलिंक को तोड़ने के बिना, याद है यह संस्करण स्ट्रिंग, मैं भी संपूर्ण फ़ोल्डर कहीं और स्थानांतरित कर सकते हैं है बिना

$ ln -s apps/my_fancy_app_v2.63.1 apps/my_fancy_app 

अब, न केवल मैं my_fancy_app कॉल कर सकते हैं: एक सामान्य उपयोग संस्करण संख्याओं से छुटकारा हो रही है

लेकिन अन्य बार - जैसा कि आपके उदाहरण में, मुझे लगता है - आपको एक पूर्ण पथ पर सिमलिंक करने की आवश्यकता है।

अनुमतियों के लिए के रूप में, सिमलिंक हमेशा अनुमतियाँ lrwxrwxrwx है, क्योंकि वास्तविक फ़ाइल आपरेशन द्वारा प्रयोग किया जाता अनुमतियाँ वास्तविक फ़ाइल पर अनुमतियों को कर रहे हैं। (आप इस बारे में सोच सकते हैं कि कोई भी सिम्लिंक का पालन कर सकता है, लेकिन यह बिल्कुल सही नहीं है: उन्हें किसी भी निर्देशिका के लिए पढ़ने की अनुमति भी चाहिए, जिन्हें उन्हें अनुवर्ती करने की आवश्यकता है। अधिक सटीक रूप से, जो कोई भी सिम्लिंक देख सकता है उसे नाम देख सकता है जब करने के लिए भेजा

ln -s स्रोत लक्ष्य

सही है, लेकिन भ्रामक: अंक के लिए, भले ही वे उस नाम के साथ फ़ाइल के लिए कोई उपयोग कर सकते है

+0

एकदम सही है कि है; धन्यवाद! – joshlf

+0

एक टूटी हुई लिंक न पाने के लिए पूर्ण पथ डालना महत्वपूर्ण है –

0

ऊपर उपयोग ln के लिए दिए गए। मैन पेज:

एलएन [OPTIO एन] ... [टी] लक्ष्य LINK_NAME (1 फार्म)

'लक्ष्य' के रूप में

अलग अर्थ

+0

सीपी के साथ लगातार: 'cp मौजूदा new'। इसी प्रकार: 'मौजूदा नए' एलएन- – Hrobky

संबंधित मुद्दे