लिनक्स / डेबियन - Moreutils में 'पेशाब' क्या करता है?


21

मैंने हाल ही में डेबियन (और उबंटू) में 'मोरटाइल' पैकेज की खोज की । यह सुविधाजनक यूनिक्स उपकरणों का एक संग्रह है।

आदेशों में से एक 'पेशाब' है। आदमी पृष्ठ कहता है:

पेशाब टी की तरह होता है लेकिन पाइप के लिए।

हालाँकि यह एक छोटा आदमी पृष्ठ है, मैंने इसके बारे में एक बग दर्ज किया है । क्या किसी को पता है कि यह क्या करता है, इसका उपयोग कैसे करना है, कोई इसका उपयोग क्यों करेगा?

जवाबों:


29

यहाँ आप पेशाब के साथ क्या कर सकते हैं:

seq 5 -1 1 > file
cat file |pee 'sort -u > sorted' 'sort -R > unsorted'

तो पेशाब फाइलों के बजाय शेल पाइपों के साथ काम करता है।

बैश को पेशाब की जरूरत नहीं है, यह शेल कमांड को फाइल के रूप में खोल सकता है:

cat file |tee >(sort -u > sorted) >(sort -R > unsorted)

1
क्या यह फ़ाइल नाम जॉकर्स के साथ काम करेगा? देखें zgp.org/~dmarti/tips/git-multiple-post-receive-hooks - पेशाब को गुणा करने के लिए प्रयोग किया जाता है stdinऔर हर लिपि को फिल् म पैटर्न को मैथून देने के लिए इस्तेमाल किया जा सकता है, क्या शुद्ध घूस ऐसा कर सकता है? AFAIU यह ब्रैकेट के अंदर तारांकन का विस्तार करेगा जैसे कुछ tee >(app1 app2 app3 app4)ऐसा नहीं >(app1) >(app2) >(app3) >(app4)है जो कि आपका उत्तर नहीं दिखाता है
Arioch 'The

@ एरिक, बैश सिंटैक्स हुक-जोकर तकनीक के साथ काम नहीं करेगा। बस अधिक जानकारी स्थापित करें।
तोबू


1
टी के ऊपर पेशाब करने का असली फायदा यह है कि यह प्रत्येक उप प्रक्रिया से स्टडआउट को पेशाब के स्टडआउट पर भेजता है। यदि आप इसे सहेजना चाहते हैं, तो टी के साथ आपको प्रत्येक प्रक्रिया को एक फ़ाइल में पुनः निर्देशित करने की आवश्यकता है, लेकिन पेशाब के साथ आपको केवल स्टडआउट को बचाने की आवश्यकता है। निश्चित रूप से केवल तभी समझ में आता है जब प्रत्येक उप कमांड एक समान स्वरूपित चीज़ का उत्पादन कर रहा हो। जैसे अगर आप समझ नहीं पा रहे हैं कि आप किस तरह से या नियमित भावों में हो सकते हैं cat file | pee 'grep this' 'grep that' > lines.with.this.or.that.txt... टी का उपयोग करके आपको बस fileस्टेचआउट पर कॉपी मिल जाएगी ।
underrun


16

यह समझना आसान है कि क्या आपने पहले प्रयोग किया है tee। यह उपयोगी पुराना टूल मानक इनपुट लेता है और कई फाइलों को लिखता है, साथ ही मानक आउटपुट। निम्नलिखित:

echo "Hello world" | tee one two

दो फाइलें बनाएंगे, नाम oneऔर two, दोनों स्ट्रिंग युक्त Hello world। यह आपके टर्मिनल पर भी प्रिंट होगा।


अब peeएक समान कार्य करता है, लेकिन आउटपुट को कई फाइलों में रीडायरेक्ट करने के बजाय इसे कई सेकेंडरी कमांड, अला पाइप पर रीडायरेक्ट करता है। यह teeसम्मान से थोड़ा अलग है कि यह मूल स्टडआउट को नहीं भेजता है क्योंकि यह माध्यमिक कमांड के आउटपुट के साथ संयोजन करने में कोई मतलब नहीं होगा। निम्नलिखित बहुत सरल उदाहरण:

echo "Hello world" | pee cat cat

Hello worldअपने टर्मिनल पर दो बार स्ट्रिंग का उत्पादन करेगा । ऐसा इसलिए है क्योंकि catमानक आउटपुट प्राप्त करने के दो उदाहरणों में से प्रत्येक और वह catकरता है जो प्रिंट करता है।

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