संपूर्ण पथ को टाइप किए बिना पूर्ण फ़ोल्डर के रूप में वर्तमान फ़ोल्डर में सिमिंक करें


10

सामीलिंक रिश्तेदार रास्तों के लिए सहेजे गए शॉर्टकट हैं:

~/foo ln -s . ~/bar/foo
~/foo ls -l ~/bar
total 8
lrwxr-xr-x    1 me  me     1B 15 May 14:38 foo -> .

फ़ाइल वर्तमान निर्देशिका यानी स्वयं के ~/bar/fooलिए एक सहिष्णुता barहै

यदि मैं उस समय की निर्देशिका में किसी अन्य निर्देशिका में सिमिलिंक बनाना चाहता हूं तो क्या होगा? इसलिए उपरोक्त उदाहरण में, मैं अंदर हूं ~/fooऔर मैं ~/bar/fooएक सिम्लिंक के रूप में बनाना चाहता हूं ~/foo। बेशक मेरी वर्तमान निर्देशिका 5 वर्णों की तुलना में थोड़ी लंबी हो सकती है और टाइप करना इतना आसान नहीं हो सकता है।

जवाबों:


13

मैं कहूंगा टाइप करें

ln -s $PWD ~/bar/

या

ln -s `pwd` ~/bar/

आप भी इस्तेमाल कर सकते हैं

ln -s $PWD ~/bar/

लेकिन मुझे लगता है कि तुम्हें पता था कि और वह नहीं है जो तुम देख रहे हो। तो क्या आप अपने प्रश्न को यह बताने के लिए अपडेट कर सकते हैं कि आपका लक्ष्य क्या है?

यदि पथ में रिक्त स्थान हैं, तो इसका उपयोग करना उचित होगा:

ln -s "$PWD" ~/bar/

2
अपने $चर और कमांड प्रतिस्थापन को डबल-कोट करें , अन्यथा रिक्त स्थान के साथ फ़ाइल नाम रन को मूक कर देगा। आपको अंत की आवश्यकता भी नहीं है $(basename $PWD)(और आप एक भूल गए हैं $(और उद्धृत करना :-))) क्योंकि यह वैसे भी डिफ़ॉल्ट लिंक नाम है।
डैनियल एंडरसन

मुझे लगता है कि मैं बेवकूफ बन रहा था। मुझे लगा कि मैंने pwdदृष्टिकोण की कोशिश की और कुछ गलत हो गया। आइए इसे नीचे डालते हैं एक आईडी-दस-टी त्रुटि के लिए
गैरेथ

@DanielAndersson आप सही हैं कि यह पथ में रिक्त स्थान का समर्थन नहीं करता है। अच्छी बात। इसलिए रिकॉर्ड के लिए मैं उत्तर को अद्यतन करूंगा :)
ह्यूजेंस

4

पूर्ण रूप से:

ln -s "$(readlink -f .)" ~/bar

(लिपियों में सामान्यता के लिए अच्छा हो सकता है) या बस

ln -s ~/foo ~/bar

अपेक्षाकृत:

ln -s ../foo ~/bar

टैब पूरा होने से आपको टाइप करने में मदद मिलेगी।


Grawity की टिप्पणी और से http://lists.gnu.org/archive/html/coreutils-announce/2012-03/msg00000.html :

* रिलीज़ 8.16 (2012-03-26) में उल्लेखनीय परिवर्तन [स्थिर]

...

lnअब --relativeविकल्प को स्वीकार करता है , किसी लक्ष्य के सापेक्ष प्रतीकात्मक लिंक उत्पन्न करने के लिए, चाहे जो भी लक्ष्य निर्दिष्ट किया गया हो।

तो इस संस्करण के साथ:

ln -s --relative . ~/bar

काम करना चाहिए (व्यवहार में --relativeस्विच के अतिरिक्त, आपका पहला उदाहरण समान है )।


4
नवीनतम Coreutils का उपयोग करके स्वचालित रूप से सापेक्ष सीलिंक बना सकते हैं ln -s -r foo ~/bar
user1686

@ ग्रेविटी: दिलचस्प है। मेरे सिस्टम पर अभी तक नहीं, जाहिरा तौर पर (डेबियन सिड)।
डैनियल एंडर्सन

यह 22 मार्च को v8.16 के लिए जोड़ा गया है, git के अनुसार।
user1686

1
इसके अलावा, $(readlink -f .)ओवर का फायदा क्या है $PWD?
user1686

2
@ शुद्धता: ज्यादा नहीं। यदि वर्तमान वर्किंग डायरेक्टरी एक लिंक द्वारा पहुंच गई है तो वे अलग तरीके से काम करते हैं। readlink -fतब वर्तमान निर्देशिका के पूर्ण लक्ष्य पथ के लिए $PWDसहानुभूति होगी , जबकि वर्तमान में जो शाब्दिक निर्देशिका है उससे सहानुभूति होगी। जो चाहता है वह शायद समय-समय पर अलग होता है, और सबसे पहले और सबसे महत्वपूर्ण शायद एक मुद्दा नहीं है।
डैनियल एंडरसन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.