2013-03-15 4 views
7

का आउटपुट आउटपुट मेरे पास संकलन के दौरान उत्पन्न सभी ऑब्जेक्ट फ़ाइलों को निकालने के लिए Makefile में rm *.o कमांड है। हालांकि कुछ त्रुटि जानकारी आउटपुट होगी यदि कुछ .o फ़ाइल मौजूद नहीं है। तो मैं त्रुटि सूचना आउटपुट को कैसे दबा सकता हूं?शैल - एकल आदेश

उत्तर

11

make के संदर्भ में, आउटपुट की तुलना में अधिक महत्वपूर्ण बात यह है कि आप विफलता के रूप में rm के परिणाम का इलाज नहीं करना चाहते हैं।

clean: 
    -rm *.o 2> /dev/null 
    rm -f *.o 2> /dev/null 

पहला तरीका एक ऋण चिह्न है, जो बताता है make वापसी कोड की अनदेखी करने के साथ आदेश उपसर्ग है: वहाँ इससे निपटने के लिए दो तरीके हैं। यह पसंदीदा है, make - विशिष्ट तरीका। दूसरा -f ध्वज का उपयोग करना है, जो केवल rm पर विशिष्ट है।

उस पर, आप 2> /dev/null के साथ आउटपुट को दबाने का विकल्प चुन सकते हैं या नहीं।

2

rm -f *.o

या

rm *.o >& /dev/null

+0

आपको '> और' नोटेशन से सावधान रहना चाहिए। यह 'बाश' में ठीक काम करेगा लेकिन 'डैश 'में काम नहीं करेगा। चूंकि प्रश्न में टैग दिए जाने के बाद 'डैश' पूरी तरह मान्य है, इसलिए '> &' का उपयोग करना उचित नहीं है। –

6

दुर्लभ मामलों में, यह भी /dev/null को आउटपुट पुनर्निर्देशित करने के लिए आवश्यक हो सकता है। आप शायद rm *.o > /dev/null 2>&1 करना चाहते हैं। > /dev/null भाग /dev/null पर stdout भेजता है और 2>&1 कहता है कि जहां भी stdout जा रहा है वहां stderr भेजना है।

+0

मुझे विश्वास नहीं है कि 'आरएम' मानक आउटपुट का उपयोग करता है। – chepner

+0

निर्भर करता है कि आरएम को आरएम-वी के लिए अलिया किया गया है या नहीं। ज्यादातर सिस्टम ऐसा नहीं करते हैं, शायद यह एक आदत है जिसे मैंने बहुत समय पहले उठाया था जब कुछ डिस्ट्रो ने सोचा था कि यह एक अच्छा विचार था। – Steve

+0

मुझे लगता है कि बीएसडी मैन पेज का उल्लेख है कि ऐतिहासिक कार्यान्वयन मानक आउटपुट पर संकेत देगा। – chepner

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