GNU स्क्रीन: स्क्रीन संलग्न नहीं है जब तक आदेश नहीं कर सकता?


10

मेरे पास निम्न स्क्रिप्ट है

screen -d -m -S $1                #start screen minimized
screen -S $1 -X stuff "$beast     
"                                 #stuff commands

जब तक मैं स्क्रीन संलग्न नहीं करता हूं, तो लगता है कि सामान का प्रभाव कुछ भी नहीं करेगा? ऐसा क्यों है और मैं इस स्क्रिप्ट को कैसे संशोधित कर सकता हूं इसलिए मुझे स्क्रीन संलग्न करने की आवश्यकता नहीं है?

जवाबों:


14

जब आप एक अलग मोड में स्क्रीन सत्र शुरू करते हैं ( screen -d -m), कोई विंडो नहीं चुनी जाती है, इसलिए बाद में भेजा गया इनपुट screen -X stuffकेवल खो जाता है। आपको स्पष्ट रूप से निर्दिष्ट करना होगा कि आप कीस्ट्रोक्स को विंडो 0 ( -p 0) में भेजना चाहते हैं । यह वैसे भी एक अच्छा विचार है, यदि आप किसी कारण से उस स्क्रीन सत्र में अन्य विंडो बनाने के लिए होते हैं।

screen -S "$1" -p 0 -X stuff "$beast$(printf \\r)"

( कुंजी printf \\rका कड़ाई से अनुकरण करने के लिए Return; कई नहीं बल्कि सभी कार्यक्रम एक नई रूपरेखा स्वीकार करते हैं \n)।


धन्यवाद! यह सही काम करता है। टॉपिक ऑफ होने के लिए सभी को खेद है
dukevin

मेरे लिए काम नहीं करता है।
टान्नर स्ट्रंक

2

यह हाल ही में unix.stackexchange.com पर एक प्रश्न का उत्तर देने की कोशिश करते हुए सामने आया ।

सारांश यह है कि स्क्रीन में डिफ़ॉल्ट चयनित विंडो नहीं होती है जब तक आप आकर्षित नहीं करते हैं, लेकिन गिल्स ने हमें दिखाया कि आप अपने स्क्रीन कमांड में तर्क जोड़कर किसी को कैसे चयनित होने के लिए मजबूर कर सकते हैं -p 0

व्यक्तिगत रूप से मैं स्विच करने की सलाह देता हूंtmux । यहाँ बताया गया है कि आप tmux में काम करने के लिए अपनी स्क्रीन कमांड को कैसे पोर्ट करेंगे:

tmux new-session -d -n $1
tmux send-keys -t $1 "$beast\n"
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.