सहानुभूति के साथ मूल निर्देशिका (../) बदलना


32

मेरे पास एक सिमलिंक है

~/link -> ~/a/really/long/path

जब मैं करता हूं

cd ~/link
cd ..    

यह मुझे ले जाता है

~

लेकिन मैं जाना चाहता हूं

~/a/really/long

क्या इसे करने का कोई तरीका है?

मैं बैश का उपयोग कर रहा हूं।


1
तुम्हारा मतलब है cd ~/a/really/long/pathतो cd ..आप में डालता है ~इस समय? मैं ऐसा नहीं कर सकता।
मिकेल

1
@ मिकेल: नहीं, पहले सीएमडी बनाएं ~/a/really/long/pathफिर उसके बाद सीडी को ..। आपको वापस ~ में समाप्त करना चाहिए (यह मानते हुए कि आपने कहाँ शुरू किया है)।
Xodap

क्या मेरा संपादन सही है? मैं पहले प्रश्न को समझ नहीं पाया।
मिकेल

जवाबों:


38

बैश (साथ ही ksh, zsh, और यहां तक ​​कि ऐश) ट्रैक डायरेक्टरी में बदलाव होता है, ताकि सिम्लिंक cd /foo/bar && cd ..होने पर /fooभी आपको हमेशा वहां तक ​​ले जाया जा सके bar। ट्रैक किए गए परिवर्तन को अनदेखा करने और "भौतिक" निर्देशिका संरचना का पालन -Pकरने का विकल्प पास करें cd:

cd -P ..

बैश बिलिन के बारे में प्रलेखन के लिए देखें help cdया । यदि आप वास्तव में निर्देशिका ट्रैकिंग सुविधा को नापसंद करते हैं, तो आप इसे bash ( zsh में) से बंद कर सकते हैं ।man builtinscdset -Pset -o no_chase_link


1
जिस तरह से मैं सवाल पढ़ा है, ओ पी है -Pया -o physicalपहले से ही सेट?
मिकेल

+1, लेकिन मैन पेज के लिंक का सुझाव दें।
फहीम मिता

@ मायिक: नहीं, सवाल यह है कि वह प्रतीकात्मक लिंक का पालन कर रहा है, न कि भौतिक निर्देशिका संरचना का।
फहीम मीठा

क्षमा करें, मैंने वास्तव में आपके पोस्ट को संपादित करने का प्रयास नहीं किया। सुझाया गया संपादन अब सबमिट किया गया।
फहीम मिता

4

आप इस निर्देशिका के लिए भौतिक पथ खोजने के लिए रीडिंक का उपयोग भी कर सकते हैं, फिर एक निर्देशिका को उच्चतर करें:

cd $(readlink -f .)/..

3

एक विधि जिसे आप उपयोग कर सकते हैं, वह है ~ ~ / a / सचमुच / लंबे / पथ पर ले जाने के लिए सिम्लिंक के बजाय एक अन्य का उपयोग करना। यही वह तरीका है जिसका मैं उपयोग करता हूं, तब से मैं सिर्फ एक साधारण / 2 / et cetera लेटर कमांड के बजाय cd सिमलिंक लिख सकता हूं

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