सवाल एड-एपीटी-रिपॉजिटरी से आउटपुट निकालें


मैं एक शेल स्क्रिप्ट लिखने की कोशिश कर रहा हूं जो स्वचालित रूप से मेरे लिए एक लैंप स्टैक सेट अप करेगा। लिपि में मेरे पास मौजूद लाइनों में से एक है:

add-apt-repository -y ppa:ondrej/php5-oldstable >> /tmp/output.txt

लेकिन कोशिश करें क्योंकि मैं हमेशा निम्नलिखित सामग्री को आउटपुट कर सकता हूं:

gpg: keyring `/tmp/tmpf0k2tr/secring.gpg' created
etc........

मैं वहां होना चाहता हूं नहीं जब मैं इस पीपीए को अपने भंडार में जोड़ने के लिए इस कमांड को चलाता हूं तो आउटपुट को स्क्रीन पर प्रदर्शित किया जाना चाहिए।


4
2017-09-04 22:27


मूल




जवाब:


आउटपुट पुनर्निर्देशन का प्रयोग करें /dev/null और शामिल हैं stderr उत्पादन।

add-apt-repository -y ppa:ondrej/php5-oldstable > /dev/null 2>&1
  • 2>&1 बाश को पुनर्निर्देशित करने के लिए बताएगा stderr सेवा मेरे stdout
  • command > file Stanza पुनर्निर्देशित करेगा stdout इस मामले में, एक फाइल के लिए /dev/null
  • /dev/null लिनक्स का ब्लैक होल है - आप वहां से कुछ भी वसूली नहीं कर पाएंगे।

परिणाम: आपके आदेश का पूर्ण चुप निष्पादन।

आपके अपडेट किए गए प्रश्न में आप एक फ़ाइल में सभी आउटपुट लॉग इन करना प्रतीत होता है। उस स्थिति में आप बस जोड़ सकते हैं 2>&1 आपकी वर्तमान रेखा में:

add-apt-repository -y ppa:ondrej/php5-oldstable >> /tmp/output.txt 2>&1

ऐसा इसलिए है क्योंकि आप देख रहे थे stderr टर्मिनल पर आउटपुट मुद्रित किया जा रहा है, जिसे आपको लॉग पर रीडायरेक्ट करने की आवश्यकता है (अन्यथा आप सभी त्रुटियों से चूक जाएंगे!)।


4
2017-09-04 22:34



@ ब्रायम यह ओपी को उनके प्रश्न में दिए गए आदेश पर आधारित है। मुझे लगता है कि यह उसके लिए काम करता है और उसकी लिपि चल रही है root यहाँ। सवाल आउटपुट के दमन के बारे में है, ए के बारे में नहीं काम न करने वाला आदेश। - gertvdijk
"stderr stdout" आह! वह चाल थी। हालांकि मैं कंसोल के लिए सभी आउटपुट वही था। हाइलाइट करने के लिए धन्यवाद कि सभी आउटपुट वास्तव में वही नहीं है। - John Crawford
@gertvdijk याद रखें कि लोगों को यह जानने के बिना कॉपी-पेस्ट करना पड़ता है कि कैसे, क्या, कब, कहाँ, आदि;)। - Braiam