कैसे इस नाम के साथ एक निर्देशिका में सीडी "-2" (हाइफ़न के साथ शुरू)?


169

मेरे पास एक निर्देशिका है जिसका नाम है:

-2

मैं इसमें सीडी चाहता हूं लेकिन सीडी शिकायत करता है:

bash: cd: -2: invalid option

कोई सफलता नहीं के साथ, मैंने कोशिश की है:

cd "-2"
cd '-2'
cd \-2

कोई भी समाधान?

संपादित करें: सर्वर पर उपलब्ध कोई फ़ाइल ब्राउज़र जैसे mc, आदि।


जवाबों:


272

कम से कम दो तरीके:

  1. --तर्क का उपयोग करें ।

    cd -- -2
    

    यह GNU टूल के लिए एक कन्वेंशन कॉमन का उपयोग करता है जो --कमांड लाइन विकल्प के रूप में दिखाई देने वाली किसी भी चीज़ का इलाज नहीं करता है ।

    एक टिप्पणीकार के रूप में , इस सम्मेलन को पोसिक्स मानक में भी परिभाषित किया गया है :

    डिफ़ॉल्ट व्यवहार: जब इस अनुभाग को "कोई नहीं" के रूप में सूचीबद्ध किया गया है, तो इसका मतलब है कि कार्यान्वयन को किसी विकल्प का समर्थन करने की आवश्यकता नहीं है। मानक उपयोगिताओं जो विकल्पों को स्वीकार नहीं करते हैं, लेकिन जो ऑपरेंड स्वीकार करते हैं, "--"उन्हें खारिज किए जाने वाले पहले तर्क के रूप में पहचाना जाएगा।

    पहचानने की आवश्यकता "--"इसलिए है क्योंकि अनुरूप अनुप्रयोगों को किसी भी मनमाने विकल्प से अपने ऑपरेंड को ढालने का एक तरीका चाहिए जो कार्यान्वयन विस्तार के रूप में प्रदान कर सकता है। उदाहरण के लिए, यदि मानक उपयोगिता फू को कोई विकल्प नहीं के रूप में सूचीबद्ध किया गया है, और एप्लिकेशन को इसे एक अग्रणी हाइफ़न के साथ एक मार्गनाम देने के लिए आवश्यक है, तो यह सुरक्षित रूप से कर सकता है:

    foo -- -myfile
    

    और एक्सटेंशन के रूप में इस्तेमाल होने वाली एम के साथ किसी भी समस्या से बचें ।

    साथ ही :

    दिशानिर्देश 10:
    तर्क --को विकल्प के अंत का संकेत देने वाले परिसीमन के रूप में स्वीकार किया जाना चाहिए। किसी भी निम्नलिखित तर्क को ऑपरेंड के रूप में माना जाना चाहिए, भले ही वे '-'चरित्र से शुरू हों । --तर्क के लिए एक विकल्प के रूप में या एक संकार्य के रूप में नहीं किया जाना चाहिए।

  2. स्पष्ट रूप से पथ निर्दिष्ट करें:

    cd ./-2
    

    यह वर्तमान निर्देशिका ( .) को प्रारंभिक बिंदु के रूप में स्पष्ट रूप से नामित करने का मार्ग निर्दिष्ट करता है ।

    cd $(pwd)/-2
    cd /absolute/path/to/-2
    

    ये उपरोक्त रूपांतर हैं। ऐसी विविधताओं की कोई भी संख्या संभव हो सकती है; मैं इसे उन सभी की खोज करने के लिए पाठक को एक अभ्यास के रूप में छोड़ दूँगा।


23
यह सिर्फ GNU नहीं है, यह POSIX मानक का हिस्सा है। 1.11 उपयोगिता देखें डिफॉल्ट और 12.2 यूटिलिटी सिंटैक्स दिशानिर्देश (दिशानिर्देश # 10)। से cdपेज " cdउपयोगिता के लिए ... खंड 12.2 अनुरूप होगा"।
डायट्रिच एप्प

अब मैं बस एक निर्देशिका नाम के लिए सीडी पर उत्सुक हूँ -!
सर्गियोल

2
@sergiol उसी तरह।
माइकल हैम्पटन

1
@ArtB: नहीं। उद्धरण केवल फ़ील्ड विभाजन को प्रभावित करता है। तो "hello world"एक तर्क है लेकिन hello worldदो है, और "-2"जैसा है वैसा ही है -2
डिट्रीच एप ईपी

1
@sergiol: या तो cd -- --या cd ./--काम करना चाहिए।
कीथ थॉम्पसन


26

यदि वर्तमान निर्देशिका में '-2' है तो यह काम करेगा।

    cd ./-2

आप टाइप करके और टैब दबाकर स्वत: पूर्ण हो सकते हैं।


11

cd /home/...../-2 भी काम करता है। पहुंचने का पूरा रास्ता दें।


7

पूरक करने के लिए, यदि आप इस निर्देशिका को निकालना / हटाना चाहते हैं, तो आप निम्नलिखित कमांड का उपयोग कर सकते हैं:

rm -r -- -2

... और सिर्फ पूरक के लिए, मैं ऐसा कभी नहीं करूंगा, बल्कि मैं एमसी जैसे ग्राफिकल टूल का उपयोग करूंगा या पहले निर्देशिका का नाम बदल दूंगा।
निक

-1

मुझे पता है कि इस सवाल का जवाब पहले ही दिया जा चुका है। अगर किसी के पास मेरी जैसी स्थिति है, तो यह उनके लिए है:

मैंने एक जावा ऐप चलाया और यह एक ऐसी निर्देशिका की तलाश कर <path>रहा था, जिसके बारे में मुझे लगता था कि मैं ऐप को चलाने से पहले उसे उचित पथ से बदल दूंगा। हालाँकि, मैं ऐसा करना भूल गया। ऐप ने एक डायरेक्टरी बनाई जिसका नाम है <path>

मैंने कोशिश की cd <path>- मुझे त्रुटि "-बश: अप्रत्याशित टोकन के पास सिंटैक्स त्रुटि" यहां दिए गए सुझाव के आधार पर (मैं समझता हूं कि इसकी निर्देशिका के साथ शुरू करने के लिए - और नहीं <) मैंने कोशिश की cd -- <path>। हालाँकि, मुझे वही त्रुटि मिली।

जब मैंने कोशिश की cd \<path>\- यह काम किया!

पृष्ठभूमि की जानकारी:

"<" और ">" प्रतीकों का उपयोग STDIN और STDOUT को पुनर्निर्देशित करने के लिए किया जाता है, इसलिए उन्हें शेल को पुनर्निर्देशित नहीं करने के लिए खोल देने के लिए भाग निकलने की आवश्यकता होती है।

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