2011-11-08 10 views
60

उदाहरण:कमांड लाइन पैरामीटर में "-" (एक डैश) का जादू क्या है?

  • एक आईएसओ छवि बनाएँ और एक सीडी के लिए सीधे इसे जला।

    mkisofs -V Photos -r /home/vivek/photos | cdrecord -v dev=/dev/dvdrw -

  • पिछले निर्देशिका को बदलें।

    cd -

  • बंदरगाह 12345 और यह करने के लिए भेजा अनटार डेटा पर सुनो।

    nc -l -p 12345 | tar xvzf -

पानी का छींटा का उद्देश्य क्या है और मैं इसे कैसे प्रयोग करते हैं?

उत्तर

71

यदि आप tar कमांड के अंत में नग्न - का मतलब है, तो यह कई आदेशों पर आम है जो फ़ाइल का उपयोग करना चाहते हैं।

यह आपको वास्तविक फ़ाइल नाम के बजाय मानक इनपुट या आउटपुट निर्दिष्ट करने की अनुमति देता है।

यह आपके पहले और तीसरे उदाहरण के मामले में है। उदाहरण के लिए, cdrecord कमांड मानक इनपुट (mkisofs द्वारा उत्पादित आईएसओ छवि स्ट्रीम) ले रहा है और इसे सीधे /dev/dvdrw पर लिख रहा है।

cd कमांड के साथ, हर बार जब आप निर्देशिका बदलते हैं, तो यह उस निर्देशिका को संग्रहीत करता है जो आप से आए थे। यदि आप cd विशेष - "निर्देशिका नाम" के साथ करते हैं, तो यह वास्तविक की बजाय याद की गई निर्देशिका का उपयोग करता है। आप आसानी से दो निर्देशिकाओं के बीच स्विच कर सकते हैं।

अन्य आदेश -विभिन्न विशेष मान के रूप में व्यवहार कर सकते हैं।

+0

मेरे लिए स्पष्ट, बहुत बहुत धन्यवाद। – chemila

+4

नोट आप गिट शाखाओं के लिए '-' का भी उपयोग कर सकते हैं, यानी आप अपनी पिछली शाखा में वापस 'गिट चेकआउट' – snappieT

+3

के साथ स्विच कर सकते हैं जहां टैर डॉक्स में यह समझाता है कि यह समर्थित है? मुझे कैसे पता चलेगा कि कौन से कमांड इसका समर्थन करते हैं? –

4

इसका मतलब प्रोग्राम की मानक इनपुट स्ट्रीम का उपयोग करना है।

cd के मामले में, इसका मतलब कुछ अलग है - पूर्व कार्यशील निर्देशिका में बदलें।

11

यह जादू नहीं है। कुछ आदेश - की व्याख्या करते हैं क्योंकि उपयोगकर्ता stdin से पढ़ना चाहते हैं या stdout लिखना चाहते हैं; खोल के बारे में इसके बारे में कुछ खास नहीं है।

+6

'सीडी -' के मामले में छोड़कर; 'bash (1) 'हैंडल' cd -' जैसा कि आपने 'cd $ OLDPWD' लिखा था। – sarnold

+4

@ कर्नाल्ड लेकिन बिंदु एक जैसा है, 'सीडी' - एक शेल अंतर्निहित कमांड - एक डैश स्वयं को व्याख्या करता है। नहीं "जादू" :-) –

+1

@pst, निश्चित रूप से, कोई जादू नहीं (यह सब सिर्फ कोड है :), लेकिन खोल के बारे में कुछ खास _is_ है। – sarnold

5

जादू सम्मेलन में है। सहस्राब्दी के लिए, लोगों ने तर्कों से विकल्पों को अलग करने के लिए '-' का उपयोग किया है, और फ़ाइल नाम में '-' का उपयोग किया है, जिसका मतलब है कि स्टडीन या स्टडआउट का अर्थ उचित है। सम्मेलन की शक्ति को कम मत समझो!

5

- का अर्थ है कि प्रत्येक कमांड का मतलब क्या है। कई आम सम्मेलन हैं, और आपने उनमें से अधिकांश के उत्तरों को अन्य उत्तरों में देखा है, लेकिन उनमें से कोई भी 100% सार्वभौमिक नहीं है।

- चरित्र के बारे में कुछ भी नहीं है जादू जहाँ तक खोल का सवाल है (सिवाय इसके कि खोल ही है, और cd और echo की तरह अपने में निर्मित आदेशों में से कुछ है, यह पारंपरिक तरीकों से उपयोग करें) नहीं है। कुछ वर्ण, जैसे \, ', और ", "जादुई" हैं, जहां वे प्रकट होते हैं, विशेष अर्थ रखते हैं। ये "शैल मेटाएक्टैक्टर्स" हैं। - ऐसा नहीं है।

यह देखने के लिए कि दिए गए आदेश -, का उपयोग उस आदेश के लिए दस्तावेज़ पढ़ें।

संबंधित मुद्दे