मेरे लेखन के समय, स्वीकृत उत्तर का सिंटैक्स अधिकांश के लिए गलत था, यदि सभी नहीं, बॉर्न-व्युत्पन्न गोले, सहित bash। मैंने शीर्ष को संपादित करने का सुझाव दिया और इसे ठीक करने के लिए उत्तर दिया, लेकिन मैं यह सब अन्य जानकारी जोड़ने के लिए भी इच्छुक था, और यह एक संपादन के बजाय एक फिर से लिखना होगा।
आप कंपाउंड कमांड का उपयोग कर सकते हैं:
{ grep ...; bzgrep ...; } >file
.. के लिए सब-सब्सक्रिप्शन (घुंघराले ब्रेसिज़ के बजाय कोष्ठक पर ध्यान दें):
(grep ...; bzgrep ...) >file
.. आज्ञाओं को समूह। उप-स्तरीय तरीके में अच्छे वाक्यविन्यास हैं (व्हॉट्सएप की कमी के अधिक क्षमा करने और आपको अंतिम अर्धविराम को छोड़ने की अनुमति देता है), लेकिन यह या तो एक नई प्रक्रिया की तलाश करता है, या आदेशों को स्वच्छ वातावरण में चलाने के लिए "ढोंग" करता है। आप जो करना चाहते हैं, उसके आधार पर दोनों के फायदे हैं, जो यहां कोई फर्क नहीं पड़ता, लेकिन अगर आप शेल के साथ अधिक प्रवीणता चाहते हैं, तो यह देखने लायक है।
नोट: आप इन ट्रिक्स के साथ भी पाइपलाइनिंग का उपयोग कर सकते हैं, ताकि आप कुछ इस तरह से कर सकें:
{ grep ...; bzgrep ...; } | less
पुनश्च यदि आप अपने संयुक्त आउटपुट में मैचों के आदेश के बारे में परवाह नहीं करते हैं, तो आप &दो कमांडों के बीच एक का उपयोग कर सकते हैं , जैसे { grep ... & bzgrep ...; }:। फिर दो कमांड एक साथ चलते हैं: grepलॉन्च हो जाता है और शेल इसे पृष्ठभूमि में रखता है, फिर शेल रन करेगा bzgrep। (लेकिन फ़ाइल पुनर्निर्देशन और फ़ाइल स्ट्रीम बफ़रिंग को शामिल करने वाले स्पष्टीकरण के साथ एक छोटा सा कैविएट है, जो आउटपुट फ़ाइल में लाइनों के एक बहुत छोटे हिस्से को संभावित रूप से विभाजित / विभाजित करने का कारण बनता है: क्या आप देखेंगे कि यह इस पर निर्भर करेगा कि आपका grep, bzgrep, और libc stdio.hफ़ंक्शंस कार्यान्वित किए जाते हैं। अधिकांश कार्यान्वयन में, मेरा मानना है कि फ़ाइल पर रीडायरेक्ट करने से पहले कमांड को पाइप करने से समस्या से बचा जा सकता है, इसलिए आप { foo & bar; } | cat - >fileवर्कअराउंड के रूप में कर सकते हैं ।)