2015-09-03 7 views
10

मैं बैश कमांड ls के साथ त्रुटि संदेशों को कैसे दबा सकता हूं?`ls` के त्रुटि संदेश को कैसे हल किया जाए?

उदाहरण:

वहाँ राह में केवल JPG फ़ाइलें हैं। शैल-कमान (बैश)

ls *.zip 

त्रुटि संदेश

वहाँ के लिए दबाने त्रुटि संदेश एक विकल्प है देता है? मैं इस आदेश का उपयोग बैश-स्क्रिप्ट में करना चाहता हूं जो इस संदेश को प्रदर्शित नहीं करना चाहता। stdout और stderr को

+5

आप 'ls' उपयोग कर रहे हैं पर कार्रवाई करने के फ़ाइल नामों की सूची प्राप्त करने के लिए, [ऐसा नहीं] (http://mywiki.wooledge.org/ParsingLs)। – chepner

+2

आप 'shopt -s nullglob' का उपयोग कर सकते हैं ताकि ग्लोब शून्य हो जाए। बेशक यह एलएस के साथ बहुत अच्छी तरह से काम करेगा, क्योंकि यह निर्देशिका में सभी फाइलें वापस करेगा। यह * काम करेगा * अगर आप त्रुटि संदेश को दबाने के लिए * .zip' – user000001

+2

में फ़ाइल के लिए कुछ उपयोग करते हैं, तो बस * stsr * से '/ dev/null' को रीडायरेक्ट करें, जैसा कि' ls * .zip 2>/dev/null में है ' –

उत्तर

21

ls आउटपुट ताकि आप bash redirection उपयोग कर सकते हैं त्रुटि उत्पादन फेंक।

ls *.zip 2>/dev/null 
+0

आपके तेज़ उत्तर के लिए धन्यवाद। उत्तम! – Peter

5
$ ls *.zip 2>/dev/null 

/dev/बातिल को stderr पर किसी भी त्रुटि संदेश (यानी आप उन्हें देख नहीं होगा)

नोट वापसी मान ($? द्वारा दिए गए) redirect होगा अभी भी त्रुटि है कि प्रतिबिंबित करेगा हुई।

1

त्रुटि संदेश को दबाने के लिए और निकास स्थिति शून्य संलग्न करें || सच है, उदाहरण के लिए:

$ ls *.zip && echo hello 
ls: cannot access *.zip: No such file or directory 
$ ls *.zip 2>/dev/null && echo hello 
$ ls *.zip 2>/dev/null || true && echo hello 
hello 

$ touch x.zip 
$ ls *.zip 2>/dev/null || true && echo hello 
x.zip 
hello 
संबंधित मुद्दे