मैं एक कमांड के आउटपुट को एक साथ दो अन्य कमांड के इनपुट में कैसे पाइप कर सकता हूं?
मैं एक कमांड के आउटपुट को एक साथ दो अन्य कमांड के इनपुट में कैसे पाइप कर सकता हूं?
जवाबों:
ऐसा लगता है कि 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को प्रतिस्थापित करने के बजाय आउटपुट में जोड़ा जाएगा ।
"टी" का उपयोग करें।
उदाहरण:
grep someSearchString someFile | tee /dev/tty | wc -l > grepresult
यह grep कमांड का आउटपुट टर्मिनल और wc दोनों को भेजेगा (जिसका आउटपुट बदले में फाइल grepresult में रीडायरेक्ट होता है)।
"टी" को विकिपीडिया लेख टी (कमांड) में समझाया गया है । केंद्रीय है: "टी कमांड मानक इनपुट पढ़ता है, फिर अपनी सामग्री को मानक आउटपुट पर लिखता है और साथ ही इसे निर्दिष्ट फ़ाइल (चर) या चर में कॉपी करता है।"