मैं एक कमांड के आउटपुट को एक साथ दो अन्य कमांड के इनपुट में कैसे पाइप कर सकता हूं?
मैं एक कमांड के आउटपुट को एक साथ दो अन्य कमांड के इनपुट में कैसे पाइप कर सकता हूं?
जवाबों:
ऐसा लगता है कि tee
कमान वही करेगी जो आप चाहते हैं।
कुंजी का उपयोग करना है
>( )
के लिए प्रक्रिया प्रतिस्थापन । साथ tee
, निम्नलिखित पैटर्न का उपयोग करें:
tee >(proc1) >(proc2) >(proc3) | proc4
इसलिए यदि आप ls
दो अलग-अलग grep
कार्यक्रमों के लिए इनपुट के आउटपुट का उपयोग करना चाहते हैं, तो प्रत्येक grep
को अलग-अलग फ़ाइलों में आउटपुट सहेजें , और सभी परिणामों के माध्यम से पाइप less
करें, कोशिश करें:
ls -A | tee >(grep ^[.] > hidden-files) >(grep -v ^[.] > normal-files) | less
वसीयतनामे के परिणाम ls -A
" grep
s " दोनों में डाले जाएंगे । फ़ाइल 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
, grep
s के आउटपुट ls -A
को प्रतिस्थापित करने के बजाय आउटपुट में जोड़ा जाएगा ।
"टी" का उपयोग करें।
उदाहरण:
grep someSearchString someFile | tee /dev/tty | wc -l > grepresult
यह grep कमांड का आउटपुट टर्मिनल और wc दोनों को भेजेगा (जिसका आउटपुट बदले में फाइल grepresult में रीडायरेक्ट होता है)।
"टी" को विकिपीडिया लेख टी (कमांड) में समझाया गया है । केंद्रीय है: "टी कमांड मानक इनपुट पढ़ता है, फिर अपनी सामग्री को मानक आउटपुट पर लिखता है और साथ ही इसे निर्दिष्ट फ़ाइल (चर) या चर में कॉपी करता है।"