एक लिंक से जुड़ी एक निर्देशिका में जा रहे हैं


12

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

~/dirlinks/maths$ ls -l logic
lrwxrwxrwx 1 tim tim 71 Jul 27 10:24 logic -> /windows-d/academic discipline/study objects/areas/formal systems/logic

~/dirlinks/maths$ cd logic
~/dirlinks/maths/logic$ pwd
/home/tim/dirlinks/maths/logic

~/dirlinks/maths/logic$ cd ..
~/dirlinks/maths$

मैं अपने वर्तमान पथ को लिंक किए गए डायर के पथ में परिवर्तित करना चाहूंगा, ताकि मैं लिंक किए गए डायर के माता-पिता के साथ भी काम कर सकूं। lsलिंक किए गए डायर का पता लगाने के लिए लिंक के अलावा , और फिर cdइसमें, इसे पूरा करने के कुछ सरल तरीके हैं? उदाहरण के लिए, cdएक लिंक के बाद , आप अपने वर्तमान पथ को लिंक किए गए डायर के मार्ग में कैसे बदलते हैं?

जवाबों:


22

POSIX शेल के साथ, आप सीडी बिलिन के -Pविकल्प का उपयोग कर सकते हैं :

cd -P <link>

के साथ bash, से man bash:

-पी विकल्प, प्रतीकात्मक लिंक के बजाय भौतिक निर्देशिका संरचना का उपयोग करने के लिए कहता है (यह भी देखें कि सेट किए गए कमांड पर -P विकल्प)


7
आप cd -P .मूल के बाद यह कर सकते हैं cd
ctrl-alt-delor

5

आप यह readlinkनिर्धारित करने के लिए उपयोग कर सकते हैं कि आपके लिंक कहां हैं, और इस आउटपुट को अपने लक्ष्य के रूप में प्रदान करें cd

cd "$(readlink <link>)"

सिम्बलिंक की ओर इशारा करते हुए अतिरिक्त सिम्बलिंक के मामले में, readlinkबस लक्ष्य प्रदान करेगा, जब तक कि आप एक कैनोनिकल फ़ाइल लक्ष्य के लिए सिम्लिंक्स का पालन करने के लिए इसके विकल्पों में से एक को निर्दिष्ट न करें, उदाहरण के लिए readlink -f <link>

readlink - एक प्रतीकात्मक लिंक या कैनोनिकल फ़ाइल नाम का प्रिंट मूल्य

-f, -
पुनरावर्ती रूप से दिए गए नाम के हर घटक में हर सिम्कलिन का अनुसरण करके विहित करें; सभी लेकिन अंतिम घटक मौजूद होना चाहिए

-, -
दिए गए नाम के हर कंपोनेंट में हर सिम्कलिन का अनुसरण करके डिकोनाइज़िकल-मौजूदा कैनोनिकलाइज़ करें, सभी कंपोनेंट्स मौजूद होने चाहिए

-m, -
घटकों के अस्तित्व पर आवश्यकताओं के बिना, पुनरावर्ती रूप से दिए गए नाम के हर घटक में प्रत्येक सिम्कलिन का अनुसरण करके -ononicalize- लापता कैनोलाइज़


5

कोर्न जैसे गोले वर्तमान निर्देशिका के मार्ग में प्रतीकात्मक लिंक का ट्रैक रखते हैं (इसे तार्किक वर्तमान निर्देशिका ट्रैकिंग के रूप में जाना जाता है)। यदि आप सभी प्रतीकात्मक लिंक का विस्तार करना चाहते हैं, तो विकल्प -Pको cdबिलिन (भौतिक वर्तमान निर्देशिका ट्रैकिंग के लिए) पास करें:

cd -P logic

यदि आप एक ऐसी निर्देशिका में हैं, जिसे आपने एक प्रतीकात्मक लिंक के माध्यम से एक्सेस किया है और ट्रैक की गई वर्तमान निर्देशिका को प्रतीकात्मक लिंक के साथ पथ पर बदलना चाहते हैं, तो इसे चलाएं

cd -P .

यदि आप प्रतीकात्मक लिंक के साथ वर्तमान निर्देशिका के लिए पथ प्रिंट करना चाहते हैं, तो विस्तारित करें pwd -P। यदि आप तार्किक ट्रैकिंग बंद करना चाहते हैं, तो चलाएं set -P; zsh में, भागो set -wया setopt chase_links

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