2012-05-03 15 views
8

मैं अपने .bashrc में एक स्क्रिप्ट को कॉल करता हूं, जब मैं टर्मिनल खोलता हूं तो मेरे पास नए संदेशों की संख्या मुद्रित करने के लिए, मैं चाहता हूं कि यह कॉल अवरुद्ध न हो क्योंकि यह कॉल अवरुद्ध हो नेटवर्क और कभी-कभी कुछ सेकंड लेते हैं जिसका अर्थ है कि जब तक यह पूरा नहीं हो जाता है तब तक मैं टर्मिनल का उपयोग नहीं कर सकता।बैश "और" प्रिंटिंग के बिना "[1] + हो गया"

लेकिन अगर मैं डाल:

mailcheck & 

मेरी bashrc में, यह ठीक काम करता है। लेकिन फिर एक खाली पंक्ति प्रिंट और जब मैं एंटर दबाएं मेरे पास है और यह

[1]+ Done     ~/bin/mailcheck 

यह बहुत गंदा है वहाँ इस के चारों ओर एक रास्ता है प्रिंट?/Dev को

+0

क्या एक अंतर्दृष्टिपूर्ण प्रश्न !! +1 –

उत्तर

9

यही संदेश mailcheck से नहीं आ रही है, यह पार्टी के काम पर नियंत्रण कह से है:

(exec mailcheck &) 
+0

क्यों न केवल 'मेलचेक और अस्वीकार'? –

2

कोशिश पाइपिंग stderr/बातिल

mailcheck & 2>/dev/null 

में कुछ मिनट के लिए इसके बारे में सोच रही थी, एक और तरीका है लिखने का उपयोग हो सकता है।
पृष्ठभूमि कार्य के आउटपुट को अपने आप में पाइप करें, इस तरह यह किसी भी समय पूरा हो सकता है और आप stdout के साथ-साथ stderr से किसी भी अतिरिक्त आउटपुट को बिन कर सकते हैं।

mailcheck | write $(whoami) & > /dev/null 
+0

कोई खेद नहीं होना चाहिए था कि मैंने कोशिश की है, ऐसा लगता है कि यह stderr –

+0

stderr नहीं होना चाहिए क्योंकि यह कोई त्रुटि नहीं है। चूंकि यह पृष्ठभूमि में चल रहा है, यह सिर्फ आपको यह बताना है कि प्रक्रिया सफलतापूर्वक समाप्त हो गई है। शायद stdout? –

+0

यह कोई अच्छा नहीं है, मुझे यह समझ में नहीं आता है, अगर यह stdout या stderr नहीं है यह क्या है? –

3

आप इस तरह अपनी स्क्रिप्ट कॉल कर सकते हैं:

(mailcheck &) 
+0

अभी भी कोई अच्छा नहीं है: [1] + पूर्ण हो गया ~/bin/mailcheck –

+0

यह मेरे परीक्षण में ठीक काम कर रहा है। जब मैं अपने .bashrc में एक स्क्रिप्ट कॉल शामिल करता हूं तो मुझे अगली बार लॉग-इन करते समय कोई 'संपन्न' संदेश नहीं मिलता है। – anubhava

+0

हाँ क्षमा करें, आपका सही मैंने ब्रैकेट –

4

यह काम करने के लिए लगता है आप अपने पृष्ठभूमि की नौकरी के बारे में। इससे बचने का तरीका यह है कि आप इसे नौकरी नियंत्रण से प्रबंधित नहीं करना चाहते हैं:

mailcheck & 
disown $! 
+0

की आवश्यकता नहीं है, यह पुनर्निर्देशन के बिना काम करता है। –

+0

@ डेनिस: अच्छी तरह से देखा - मैं पुनर्निर्देशन ले जाऊंगा। –

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