गैर-मौजूदा फ़ाइल खोलने पर बिल्ली अलग त्रुटि देती है


22

निम्न दोनों आदेश एक गैर-मौजूदा फ़ाइल को खोलने का प्रयास करते हैं foo, लेकिन त्रुटि संदेश थोड़े अलग हैं। क्या कारण हो सकता है?

$ cat foo
cat: cannot open foo
$ cat < foo
-bash: foo: No such file or directory

12
दोस्तों, कृपया केवल प्रारूपण के आधार पर पदों को कम न करें, खासकर नए लोगों से आने वाले पदों के लिए। यहाँ, यह एक बहुत ही वैध प्रश्न है।
स्टीफन चेजलस

21
इसके cat < foodबजाय होना चाहिएcat < foo
ट्यूलेंस कोरडोवा

6
@ टुलेंसकोर्डोवा या, कुछ संस्कृतियों में food < cat;)
डिप्रेस्डैनियल


1
केवल पहली त्रुटि से आता है cat। अब, मुझे आश्चर्य है कि दूसरा संदेश कहां से आता है, यह देखते हुए कि यह इसके साथ शुरू होता है bash:...
दिमित्री ग्रिगोरीव

जवाबों:


30
cat foo

यह catतर्क के साथ कमांड चलाता है foo। ऑनस्क्रीन छपी त्रुटि पूरी तरह से कमांडर के प्रोग्रामर द्वारा तय किए गए पर निर्भर करती है।

cat < foo 

यह बैश स्टड पुनर्निर्देशन का उपयोग करके कमांड fooको फ़ाइल की सामग्री को खिलाता है । यदि फ़ाइल मौजूद नहीं है, तो यह बैश है जो इसके बारे में शिकायत करता है।cat


20

में $ cat fooखोल (यहाँ बैश) कार्यान्वित catकमान और पैरामीटर गुजरता है foo। बिल्ली कार्यक्रम उस पैरामीटर को फ़ाइल नाम के रूप में व्याख्या करने के लिए चुनता है - और फ़ाइल को खोलने की कोशिश करता है। आपके द्वारा देखी गई त्रुटि बिल्ली प्रोग्राम से है जो (स्वाभाविक रूप से) फ़ाइल को नहीं खोल सकती है।

संस्करण $ cat < fooएक पुनर्निर्देशन है जिसे शेल द्वारा नियंत्रित किया जाता है। <एक शेल ऑपरेटर है जो शेल को एक फ़ाइल खोलने का निर्देश देता है और इसे स्टड पर रीडायरेक्ट करता है। फ़ाइल मौजूद नहीं है इसलिए आपको "ऐसी कोई फ़ाइल नहीं" मिलती है। इस बार त्रुटि शेल (बैश) से आती है और थोड़ी अलग दिखती है।

यही कारण है कि आप 2 अलग-अलग त्रुटियों को देखते हैं। कारण समान है - लेकिन यह 2 अलग-अलग कार्यक्रमों (बिल्ली और मार) से है।


18
यदि पुनर्निर्देशन विफल रहता है cat < foo, तो सं cat। वह (और लगातार त्रुटि संदेश होना) एक कारण है कि जहां संभव हो, पुनर्निर्देशन का उपयोग करना अक्सर बेहतर होता है। इसके अलावा cat < in > outबनाम पर विचार करें cat in > outजहां पूर्व रोकता outहै अगर inवह मौजूद नहीं है तो ओवरराइड करने से रोकता है (शेल फेल < inपुनर्निर्देशन के ठीक बाद कमांड को रद्द करता है और अगले > outपुनर्निर्देशन नहीं करता है , अकेले आह्वान करें cat)।
स्टीफन चेज़लस

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