क्या एक कमांड के आउटपुट को दो अन्य कमांडों तक पहुंचाया जा सकता है?


27

मैं एक कमांड के आउटपुट को एक साथ दो अन्य कमांड के इनपुट में कैसे पाइप कर सकता हूं?


4
हाँ। इस स्टैकओवरफ़्लो प्रश्न को देखें: stackoverflow.com/questions/670784/…
ब्लेयर कॉनराड

जवाबों:


56

ऐसा लगता है कि teeकमान वही करेगी जो आप चाहते हैं।

कुंजी का उपयोग करना है

>( )

के लिए प्रक्रिया प्रतिस्थापन । साथ tee, निम्नलिखित पैटर्न का उपयोग करें:

tee >(proc1) >(proc2) >(proc3) | proc4

इसलिए यदि आप lsदो अलग-अलग grepकार्यक्रमों के लिए इनपुट के आउटपुट का उपयोग करना चाहते हैं, तो प्रत्येक grepको अलग-अलग फ़ाइलों में आउटपुट सहेजें , और सभी परिणामों के माध्यम से पाइप lessकरें, कोशिश करें:

ls -A | tee >(grep ^[.] > hidden-files) >(grep -v ^[.] > normal-files) | less

वसीयतनामे के परिणाम ls -A" greps " दोनों में डाले जाएंगे । फ़ाइल hidden-filesमें पहले के आउटपुट से सामग्री होगी grep, और normal-filesदूसरे के परिणाम होंगे grepसभी फाइलें पेजर में दिखाई जाएंगी less संपादित करें : क्या आप में देख lessरहा है एक ही सटीक उत्पादन की ls -A, न करने का परिणाम grepहै। आप से उत्पादन को संशोधित करना चाहते हैं ls -Aके लिए less, (उदाहरण के अदला-बदली के क्रम इतना सामान्य फ़ाइलें छिपा लोगों से पहले सूचीबद्ध होते हैं) तो यह प्रयास करें:

ls -A | tee >(grep ^[.]) >(grep -v ^[.]) >/dev/null | less

इसके बिना >/dev/null, greps के आउटपुट ls -Aको प्रतिस्थापित करने के बजाय आउटपुट में जोड़ा जाएगा ।

स्रोत


3
यह एक बहुत अच्छा है!
ha

3
+1 क्योंकि शेल स्क्रिप्टिंग के 10 साल बाद भी, मैंने यह कभी नहीं देखा!
जटिमर्बरन

6

"टी" का उपयोग करें।

उदाहरण:

grep someSearchString someFile | tee /dev/tty | wc -l > grepresult

यह grep कमांड का आउटपुट टर्मिनल और wc दोनों को भेजेगा (जिसका आउटपुट बदले में फाइल grepresult में रीडायरेक्ट होता है)।

"टी" को विकिपीडिया लेख टी (कमांड) में समझाया गया है । केंद्रीय है: "टी कमांड मानक इनपुट पढ़ता है, फिर अपनी सामग्री को मानक आउटपुट पर लिखता है और साथ ही इसे निर्दिष्ट फ़ाइल (चर) या चर में कॉपी करता है।"

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.