वर्तमान निर्देशिका के लिए एक निरपेक्ष प्रतीकात्मक लिंक बनाएँ


12

मैं अब बहुत लंबे पथ के साथ एक निर्देशिका के अधीन हूं। भविष्य में इसे जल्दी से देखने के लिए, मैं इसके लिए एक लिंक बनाना चाहूंगा।

मैंने कोशिश की

ln -s . ~/mylink

~/mylinkवास्तव में से जोड़ता है ~। तो क्या मैं ~अचूक पाथनेम में विस्तार कर सकता हूं , और फिर इसे दे सकता हूं ln?

जवाबों:


19

एक सिम्लिंक वास्तव में आपके द्वारा दिए गए पथ को स्टोर करता है, एक स्ट्रिंग के रूप में। इसका मतलब है कि आपके लिंक ~/mylinkमें " ." (एक वर्ण) है। जब आप लिंक का उपयोग करते हैं, तो उस पथ की व्याख्या उस लिंक के अनुसार की जाती है जहाँ लिंक है, जहाँ आप लिंक बनाते समय आप कहाँ थे।

इसके बजाय, आप उस वास्तविक पथ को संग्रहीत कर सकते हैं जिसे आप लिंक में चाहते हैं:

ln -s "$(pwd)" ~/mylink

अपनी कमांड लाइन में (वर्किंग डायरेक्टरी नाम) का आउटपुट डालने के लिए कमांड प्रतिस्थापन का उपयोग करना pwdlnपूरा रास्ता देखता है और इसे आपके सिमलिंक में संग्रहीत करता है, जो फिर सही जगह पर इंगित करेगा।

Less कम या ज्यादा।


2
"$PWD"POSIX गोले और ~0में भी देखें zsh
स्टीफन चेजलस

7

आपको उपयोग करना चाहिए:

ln -s "$(cd . && pwd)" ~/mylink

या:

ln -s "$(pwd -P)" ~/mylink

वर्तमान कार्यशील निर्देशिका के लिए सही परिणाम प्राप्त करने के लिए। इसे तब बदला जा सकता है जब आप इसमें इस प्रश्न के रूप में काम कर रहे थे ।


1
पहले एक जरूरी नहीं कि सभी गोले में मदद करें ( यह उत्तर देखें )। ओपी संभावना का उपयोग करना चाहता है $PWD(वह पथ जो वह वहां प्राप्त करता था), बजाय $(pwd -P)(वर्तमान निर्देशिका के लिए विहित पथ)। यदि $PWDअब वर्तमान निर्देशिका की ओर इशारा नहीं किया जाता है, तो यह कहने वाली कोई बात नहीं है कि $(pwd -P)अगले मिनट में भी होगा।
स्टीफन चेज़लस


@ स्टीफनचेज़लस: आप देख सकते हैं "$PWD"कि वर्तमान मूल्य को ले जाया गया है तो भी पुराना मूल्य है। PWDकेवल तभी सेट करें जब आप cdशेल द्वारा आरंभ या आरंभ करें।
cuonglm

लेकिन मैं जो कह रहा हूं वह यह है कि ओपी को मौजूदा कार्य निर्देशिका के लिए कुछ पूर्ण पथ की तुलना में पुराने $ पीडब्ल्यूडी की संभावना है और कई गोले (ksh93, राख, यश) में, जैसा कि समझाया गया है कि कॉल cdकरने की गारंटी नहीं है। $ PWD या pwd का उत्पादन वर्तमान निर्देशिका के लिए एक मार्ग है। आप किसी ऐसी चीज़ से बचने की कोशिश कर रहे हैं जो होने की संभावना नहीं है, लेकिन पहले समाधान में, यह जरूरी प्रभावी नहीं है, और दूसरे में, यह व्यवहार बदल रहा है।
स्टीफन चेजलस

1
यदि कोई आपके करने के mv बाद करता है ln, तो आप उसी स्थिति में समाप्त हो जाते हैं। दूसरी ओर, अगर उसने किया cd /long/logical/path/to/some/directory, तो आप लिंक /vg0/lv1/user2/app4(विहित पथ) को इंगित नहीं करना चाहते क्योंकि लिंक गलत जगह पर इंगित करेगा जब /long/logical/path/to/some/directoryकहीं और इंगित करेगा ।
स्टीफन चेज़लस
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.