Cd'ing के लिए चर "~" का उपयोग कैसे कर सकते हैं?


13

मैं $BASEअपनी सीडी में एक चर का उपयोग कैसे कर सकता हूं । मैंने निम्नलिखित की कोशिश की, लेकिन मुझे एक त्रुटि मिली

$ cd ~/z/repo_1_ruby_193/
23:23:57 durrantm Castle2012 /home/durrantm/z/repo_1_ruby_193 

$ BASE="~/z"
23:24:03 durrantm Castle2012 /home/durrantm/z/repo_1_ruby_193 

$ cd $BASE/repo_1_ruby_193
-bash: cd: ~/z/repo_1_ruby_193: No such file or directory
23:24:25 durrantm Castle2012 /home/durrantm/z/repo_1_ruby_193 

जवाबों:


25

में cd ~/z/उपयोग किए जा रहे टिल्ड विस्तार विस्तार करने के लिए ~अपने घर निर्देशिका में। में BASE="~/z", आप इसलिए नहीं हैं क्योंकि आपने ~चरित्र को उद्धृत किया है, इसलिए इसका विस्तार नहीं है। यही कारण है कि आपको एक संदेश मिल रहा है जो किसी भी नगण्य ~निर्देशिका के बारे में शिकायत करता है । इसका समाधान यह नहीं है BASE=~/zकि विस्तार को होने दिया जाए।


11

@ jw013 ने एक वैध स्पष्टीकरण और समाधान दिया है।

लेकिन कुछ मामले हो सकते हैं जब आप रास्तों को उद्धृत करना चाहते हैं, उदाहरण के लिए जब उनमें कई स्थान या विशेष चिह्न होते हैं। इस मामले में आपको $HOMEइसके बजाय का उपयोग करना चाहिए ~, अर्थात आपका BASE="~/z"बन जाएगा BASE="$HOME/z"और सही तरीके से काम करेगा , क्योंकि टेंडर विस्तार के विपरीत पैरामीटर प्रतिस्थापन की व्याख्या दोहरे उद्धरण चिह्नों में की जाती है।


5
ऐसा करने का एक तरीका है, लेकिन यह आवश्यक नहीं है। BASE=~/"quoted name"ठीक काम करता है, इसलिए जब तक ~अछूता रह जाता है।
hvd

4
@hvd: आपको वास्तव में स्लैश को भी अछूता छोड़ना होगा। BASE=~/"quoted name"काम करता है, लेकिन BASE=~"/quoted name"नहीं करता है।
गॉर्डन डेविसन

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