मैं इसमें एम्परसेंड के साथ एक उप-निर्देशिका नाम से कैसे बच सकता हूं?


9

एक कोर्नशेल चलाना और एक निर्देशिका पेड़ को पार करने की कोशिश करना। निम्नानुसार उप-निर्देशिका के लिए सीडी करना चाहते हैं:

 -3ab_&_-3dc.img

मेरा प्रश्न यह है कि क्या मुझे इस नाम के एम्परसेंड से बचने की आवश्यकता है? मैंने सफलता के बिना डबल-कोट्स और बैकस्लैश के विभिन्न संयोजनों की कोशिश की है।

जवाबों:


11

के लिए &(या किसी भी अन्य चरित्र, आप दो सरल संभावनाओं की है।

  • पूरी बात के आसपास एकल उद्धरण रखो: ' -3ab_&_-3dc.img'
  • प्रत्येक परेशान चरित्र से पहले एक बैकस्लैश डालें: -3ab_\&_-3dc.img

दो अपवाद हैं:

  • एकल उद्धरण विधि एकल उद्धरण के लिए काम नहीं करती है। बैकस्लैश एकल उद्धरणों के भीतर विशेष नहीं है, इसलिए आप सीधे या तो इसका उपयोग नहीं कर सकते हैं। आप जो भी कर सकते हैं वह एकल-उद्धृत स्ट्रिंग को समाप्त कर सकते हैं, तुरंत बैकस्लैश प्लस एकल उद्धरण का उपयोग करें, और एकल उद्धरण को पुनरारंभ करें। उदाहरण के लिए, यदि निर्देशिका का नाम है foo'bar\qux: cd 'foo'\''bar\qux'। आप इसे इस तरह से याद कर सकते हैं: एकल उद्धरण के अंदर, '\''आपको एक ही उद्धरण मिलता है।
  • बैकस्लैश मेथड newlines के लिए काम नहीं करता है: बैकस्लैश-न्यूलाइन को केवल अनदेखा किया जाता है। आपको एक न्यूलाइन के आसपास सिंगल कोट्स लगाने की जरूरत है।

आप दोहरे उद्धरण चिह्नों का भी उपयोग कर सकते हैं, लेकिन फिर आपको कुछ पात्रों से पहले एक बैकस्लैश डालना होगा। एकल उद्धरण अधिक सरल हैं।

यहां एक अतिरिक्त कठिनाई है, जो यह है कि निर्देशिका का नाम डैश से शुरू होता है। वह पात्र cdकमांड को बताता है (जैसे लगभग हर कमांड) जो एक विकल्प का अनुसरण करता है। डैश केवल कमांड के लिए शेल के लिए विशेष नहीं है, इसलिए उद्धरण इसे प्रभावित नहीं करेंगे। आपके पास एक तर्क पारित करने के दो तरीके हैं जो एक विकल्प के रूप में व्याख्या किए बिना एक कमांड को डैश के साथ शुरू होता है:

  • इस तर्क को व्यक्त करने का दूसरा तरीका खोजें। एक फ़ाइल नाम के लिए, ./सामने जोड़ना अभी भी उसी फ़ाइल को नामित करता है।
  • तर्क --पहले रखो । यह विकल्प की तलाश को रोकने के लिए कमांड को बताता है।

तो यहाँ कुछ तरीके हैं जिनसे आप इस उपनिर्देशिका में बदल सकते हैं:

cd -- '-3ab_&_-3dc.img'
cd -- -3ab_\&_-3dc.img
cd ./-3ab_\&_-3dc.img
cd './-3ab_&_-3dc.img'

धन्यवाद। सोचा मैंने उस प्रारूप को भी आजमाया था, लेकिन मैं एम्परसैंड (अपने तीसरे उदाहरण में) से बचना भूल गया। जब मैंने किया, तो यह काम किया।
RCINICT

5

एम्परसेंड को भागने की जरूरत है, लेकिन आपके पास जो समस्या -है वह एम्परसेंड के बजाय प्रमुख के साथ होने की संभावना है । अग्रणी -बना सीडी आपको लगता है कि आप विकल्पों में से गुजर रहे हैं। आप इसके द्वारा काम कर सकते हैं ./:

cd './-3ab_&_-3dc.img'

&निश्चित रूप से एक समस्या है। के लिए के रूप में -, यह खोल पर निर्भर करता है। Zsh cdएक निर्देशिका के साथ शुरू करने के लिए काफी खुश है -। हालांकि बैश नहीं है।
पैट्रिक

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