मैं इसमें एक स्थान के साथ एक निर्देशिका का प्रतीकात्मक लिंक कैसे बना सकता हूं?


24

मैं निम्नलिखित कमांड का उपयोग करके एक प्रतीकात्मक लिंक बनाने की कोशिश कर रहा था:

ln -s "~/Foo Bar/" Foo

... लेकिन यह काम नहीं किया (यानी जब मैं खोजक में जाता हूं और इसे डबल क्लिक करने की कोशिश करता हूं, तो यह कहता है कि यह एक अमान्य पथ की ओर इशारा करता है और मुझे उर्फ ​​को हटाने या इसे ठीक करने के लिए संकेत देता है)। मुझे फ़ोल्डर को FooBarफिर से नाम बदलना पड़ा और फिर निम्न कमांड को चलाना पड़ा :

ln -s ~/FooBar/ Foo

मैं फ़ोल्डर के नाम से स्थान को हटाए बिना लिंक कैसे बना सकता हूं?

मैं टर्मिनल में ऐसा करने के लिए एक रास्ता खोज रहा हूं और फाइंडर के यूआई में नहीं।


1
जबकि गॉर्डन डेविसन सही है, आपको पता होना चाहिए कि उपनाम और प्रतीकात्मक लिंक (सिमिलिंक) अलग हैं। ln -sसहानुभूति बनाता है। खोजक उपनाम बनाता है। वे व्यावहारिक, सामान्य उपयोग में लगभग समान हैं, लेकिन यह पहचानना महत्वपूर्ण है कि वे अलग हैं । Symlinks एक डायरेक्टरी पाथ की ओर इशारा करते हैं, जबकि उपनाम एक फ़ाइल की ओर इशारा करते हैं। यदि आपके पास एक ही फ़ाइल की ओर इशारा करते हैं और आप फ़ाइल को किसी भिन्न फ़ोल्डर में ले जाते हैं, तो पुराने फ़ोल्डर में एक नई फ़ाइल बनाएँ, अन्य नाम स्थानांतरित किए गए मूल को इंगित करेगा और सिमलिंक नई फ़ाइल को इंगित करेगा।
CajunLuke

1
@ काजुन: स्पष्टीकरण के लिए धन्यवाद। यह भ्रामक है कि खोजक "एलियास" के रूप में एक प्रतीकात्मक लिंक की "तरह" संपत्ति दिखाता है।
सेंसेक्सफुल

4
टैब पूरा होना एक अद्भुत बात है, अगर आप ऐसा करते हैं: ln -s ~/Foo<tab>(जहां <tab> आपके कीबोर्ड पर वास्तविक ⇥ (टैब) कुंजी को दर्शाता है), यदि केवल एक फ़ोल्डर है जो "फू" से शुरू होता है ~तो यह स्वचालित रूप से होगा करने के लिए पथ का विस्तार करें ~/Foo\ Bar/
जेसन सलज

जवाबों:


41

उद्धरण चिह्नों ~को आपके होम फ़ोल्डर में विस्तारित होने से रोका जा रहा है, इसलिए आपको या तो इसमें भाग के साथ भाग को उद्धृत करने की आवश्यकता है:

ln -s ~/"Foo Bar/" Foo

ध्यान दें: वास्तव में कितना उद्धृत किया जाता है, यह तब तक मायने नहीं रखता, जब तक कि उद्धृत भाग में स्थान और ~ / नहीं है। ~/Foo" "Bar/, ~/"Foo Bar"/, ~/Fo"o B"ar/आदि सभी बराबर हैं। इसके अलावा, सिंगल- और डबल-कोट्स का रिक्त स्थान पर एक ही प्रभाव होता है (हालांकि वे अन्य वर्णों पर भिन्न होते हैं), इसलिए ~/'Foo Bar/', ~/Foo' 'Bar/आदि भी काम करेंगे।

आप अंतरिक्ष को एक विभाजक के रूप में व्यवहार करने से रोकने के लिए एक भागने का उपयोग कर सकते हैं:

ln -s ~/Foo\ Bar/ Foo

5
आप गंभीर रूप से बस अंतरिक्ष को उद्धृत कर सकते हैं? वह तो कमाल है!
जेसन सलज

या "$HOME/Foo Bar/"
वॉचर्जिन

@wchargin यह काम करेगा। ध्यान दें कि आपके होम डायरेक्टरी में स्थान या अन्य अजीब अक्षर हैं ~, तो इसके विपरीत भ्रम को रोकने के लिए डबल-कोट्स में $HOME होना चाहिए"$HOME/Foo Bar/"(आप का सुझाव के रूप में), "$HOME"/Foo" "Bar/, "$HOME"/Foo\ Bar/, आदि काम करेंगे।
गॉर्डन डेविसन

0

मैंने खुद इसका परीक्षण किया। मुझे इसमें जगह की समस्या नहीं है:

    $ ln -s "/Users/joe/test/foo bar"/ linkToFoo_Bar

ls से पता चलता है: $ linkToFoo_Bar -> /Users/joe/test/foo bar/ और यह टर्मिनल और खोजक में बिना किसी समस्या के काम करता है।


10
आपने एक पूर्ण पथ का उपयोग किया, ~सहायक का नहीं ।
जेसन सलज
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.