मैं एक शेल स्क्रिप्ट लिख रहा हूं और मैं स्क्रिप्ट में कमांड लिखना चाहूंगा लेकिन आउटपुट को अन्य कॉनसोल सत्रों में रीडायरेक्ट करूंगा। (kde का उपयोग करके)
मैं एक शेल स्क्रिप्ट लिख रहा हूं और मैं स्क्रिप्ट में कमांड लिखना चाहूंगा लेकिन आउटपुट को अन्य कॉनसोल सत्रों में रीडायरेक्ट करूंगा। (kde का उपयोग करके)
जवाबों:
सबसे पहले, उस संख्या की तलाश करें जो वर्तमान tty सत्र को पहचानती है; संख्या पर विचार करें X:
| terminal 1 | terminal 2 |
------------------------------------------------------
| $ tty | $ |
| /dev/pts/X | |
फिर, चयनित संख्या को लिखने के लिए दी गई संख्या का उपयोग करें:
| terminal 1 | terminal 2 |
------------------------------------------------------
| $ tty | $ echo "foo" > /dev/pts/X |
| /dev/pts/X | |
और यह उत्पादन करेगा:
| terminal 1 | terminal 2 |
------------------------------------------------------
| $ tty | $ echo "foo" > /dev/pts/X |
| /dev/pts/X | |
| foo | |
देर से लेकिन शायद बेहतर तो कभी नहीं ... :-)
mkfifo ~/MyOutput # Create the FIFO (Special file)
./MyScript.sh > ~/MyOutput # In the terminal/console 1
cat ~/MyOutput # In another tty/console
से info coreutils 'mkfifo invocation':
एक "FIFO" एक विशेष फ़ाइल प्रकार है जो संचार के लिए स्वतंत्र प्रक्रियाओं की अनुमति देता है। लिखने के लिए एक प्रक्रिया FIFO फाइल को खोलती है, और दूसरी पढ़ने के लिए, जिसके बाद डेटा गोले या अन्य जगहों पर सामान्य अनाम पाइप की तरह बह सकता है।
साइड नोट्स:
FIFOही प्रक्रिया (std out, std इरेट) के लिए एक से अधिक हो सकते हैं ।FIFOsतब तक यह सभी आउटपुट को रोक देगा। cat MyOutput >> NewRealFilecat MyOutputदूसरे टर्मिनल से भी उपयोग कर सकते हैं !FIFOs, तो प्रवाह को विलय कर दिया जाएगा (कोई प्राथमिकता नहीं कि उन कार्यक्रमों से अंतर करने के लिए जो उस पंक्ति से आते हैं)।ttyउन्हें पहचानने के लिए प्रत्येक टर्मिनल में कमांड का उपयोग करें:
$ tty
/dev/pts/0
$ tty
/dev/pts/1
इन TTYs को मानते हुए, पहले के स्टडआउट को दूसरे पर पुनर्निर्देशित करने के लिए, इसे पहले टर्मिनल में चलाएं:
exec 1>/dev/pts/1
नोट: अब हर कमांड आउटपुट pts / 1 पर दिखाई देगा
Pts / 0 के डिफ़ॉल्ट व्यवहार को रोकने के लिए:
exec 1>/dev/pts/0
प्रदर्शन के लिए यह वीडियो देखें ।