मुझे एक सिमलिंक की आवश्यकता है जो उस निर्देशिका के सापेक्ष हल करता है जिसे इसमें रखा गया है। ऐसी चीज़ बनाने के लिए किस कमांड का उपयोग किया जाता है?
मुझे एक सिमलिंक की आवश्यकता है जो उस निर्देशिका के सापेक्ष हल करता है जिसे इसमें रखा गया है। ऐसी चीज़ बनाने के लिए किस कमांड का उपयोग किया जाता है?
जवाबों:
ln -s ../some/other/file linkname
आपके द्वारा प्रदान किया गया पथ फ़ाइल के साथ संग्रहीत है। जब आप फ़ाइल तक पहुँचते हैं तो संग्रहीत पथ को देखा जाता है और फ़ाइल के सापेक्ष विस्तारित होता है। यह नहीं पता कि लिंक बनाते समय आप किस निर्देशिका में थे।
ln -s ../some/other/file /some/dir/linkname
ln -s ./file linkname
क्योंकि .
वर्तमान निर्देशिका को संदर्भित करता है।
ln -s somedir/original-dir link-name
काम नहीं करता। यह नाम के साथ एक निर्देशिका बनाता link-name
है जिसमें एक अमान्य लिंक होता है। जो आदेश काम करता है वह हैln -sr somedir/original-dir link-name
GNU कोरुटिल्स के ln (> = 8.16) विकल्प के हालिया संस्करण --relative
(या -r
) विकल्प का समर्थन करते हैं, जिसका अर्थ है कि आप ln -s
2 निरपेक्ष या रिश्तेदार (अपनी कार्यशील निर्देशिका के संबंध में) पथ के साथ कॉल कर सकते हैं और यह सही सापेक्ष पथ का पता लगाएगा जो होना है सिमिलिंक के लिए लिखा है।
-r
जब आप पार संकलन कर रहे हैं और निर्माण मेजबान लेकिन निशाने पर संबंधित पथ पर पूर्ण पथ की जरूरत विकल्प उपयोगी है।
ln -r -s targetfile myalias
आप इसे ठीक करने में मदद कर सकते हैं
आपको जो समझने की आवश्यकता है वह मूल रूप से है कि एक सिमिलिंक एक टेक्स्ट फाइल की तरह है जिसमें एक डायरेक्टरी एंट्री होती है जिसमें एक फाइल होती है। तो फिर आप
echo ../poo >/file/name
तब यह काफी हद तक समान है
ln -s ../poo /file/name
सिस्टम परवाह नहीं करता है अगर /file/../poo
सभी में मौजूद है, तो यह सिर्फ एक पाठ का टुकड़ा है जिसे सिमलिंक में डाल दिया जाता है। जब कोई सिम्बल को खोलने की कोशिश करता है , तो जब सिस्टम उसे हल करने की कोशिश करता है।
यदि आप फ़ाइल नाम पूरा होने के साथ एक शेल का उपयोग कर रहे हैं, तो यह सुविधा आपको अपनी वर्तमान कार्यशील निर्देशिका के सापेक्ष फ़ाइल नाम को पूरा करने की अनुमति देकर चीजों को भ्रमित कर सकती है, भले ही आप अंत में पूरी तरह से किसी अन्य निर्देशिका में सिम्लिंक के लक्ष्य के रूप में उपयोग कर रहे हों।
<
करता है। बेशक <
, उस निर्देशिका में कोई फ़ाइल नाम नहीं है , यह केवल एक बहुत ही छोटा फ़ाइल-जैसी चीज़ बनाने का एक सस्ता तरीका है जिसमें उस विशेष प्लेटफ़ॉर्म पर एक नियमित पाठ फ़ाइल पर कुछ आकर्षक गुण हैं।
OS X पर मेरे लिए सापेक्ष लिंक मुश्किल थे
~/Dropbox/git/dave-bot $ ln -s ../codyhess/bin ~/bin
~/Dropbox/git/dave-bot $ ln -s ../codyhess/bin/ ~/bin
दोनों ने काम नहीं किया (कुछ बनाया गया था लेकिन यह एक निर्देशिका नहीं थी)। मैंने निरपेक्ष रास्तों का उपयोग करके वांछित लिंक बनाया ।
~/Dropbox/git/dave-bot $ ln -s ~/Dropbox/git/codyhess/bin/ ~/bin
ln -s Dropbox/git/codyhess/bin ~/bin
मैं आगे यह बताना चाहता था कि रिश्तेदार पथ (विस्तृत उदाहरण के साथ) का उपयोग करके एक सिमलिंक कैसे बनाया जाए।
जैसा कि इग्नासियो वाज़केज़-अब्राम्स ने टिप्पणियों में उल्लेख किया है, आपको फ़ाइल / फ़ोल्डर का स्थान निर्दिष्ट करना होगा जहां सिमिलिंक बनाया जाएगा, आपके वर्तमान निर्देशिका के सापेक्ष नहीं।
उदाहरण
आप में हैं /usr/share/nginx/html/_src/learn
आप एक सिमलिंक बनाएगा coding
में/usr/share/nginx/html
सापेक्ष सिम्लिंक (सिद्धांत) बनाएँ:
sudo ln -s /path/to/source/file-or-folder/relative/from/symlink /path/to/symlink/relative/to/current/location
वास्तविक सापेक्ष सिमिलिंक बनाएँ:
sudo ln -s ./_src/learn/coding ../../coding
अधिक जानकारी (एक ही उदाहरण)
current path: /usr/share/nginx/html/_src/learn
symlink(to be) relative to current path: ../../coding
symlink location (absolute): /usr/share/nginx/html/coding
folder/file relative to symlink location: ./_src/learn/coding
folder/file absolute path: /usr/share/nginx/html/_src/learn/coding