हार्डस्टैटस में स्क्रीन का सत्र नाम कैसे शामिल करें?


17

मैं विभिन्न परियोजनाओं के लिए अलग-अलग स्क्रीन सत्र का उपयोग करता हूं। की तरह स्क्रीन शुरू screen -S project1। अब, मैं हार्डस्टैटस लाइन में 'प्रोजेक्ट 1' का उल्लेख करना चाहूंगा।

सत्र का नाम पर्यावरण चर STY से प्राप्त किया जा सकता है STY=13539.project1:।
लेकिन इसे स्क्रीन में कैसे लाया जाए? मैंने हार्डस्टैटस में backtick कमांड और% `की कोशिश की है, लेकिन मुझे यह सही नहीं लगता।

मैंने क्या किया:

.screenrc:

hardstatus string '%H:%`'
backtick 0 30 30 echo $STY

कोई भाग्य नहीं, खाली% `।

backtick 0 30 30 sessionname

अभी भी कोई किस्मत नहीं, सत्रनाम: नहीं मिला

जवाबों:


18

आप इस स्ट्रिंग को (अतिरिक्त जानकारी के साथ, यदि वांछित हो) अपने में शामिल कर सकते हैं $PS1:

\[\e]0;$STY\007

चर के मूल्यांकन में देरी के लिए एकल उद्धरण के अंदर। फिर इसे अपने में जोड़ें ~/.screenrc:

hardstatus string '%H:%h'

दुर्भाग्य से, यह इस सुविधा के लिए पैदा होने वाले आदेशों के वातावरण में screenसेट नहीं होता है ।$STYbacktick

एक विकल्प, ऊपर के बजाय एक:

hardstatus string '%H:%`'
backtick 0 30 30 sh -c 'screen -ls | grep --color=no -o "$PPID[^[:space:]]*"'

इसका लाभ यह है कि यह sessionnameकमांड का उपयोग करके किए गए परिवर्तनों का अनुसरण करता है । पहला विकल्प नहीं है।

संपादित करें:

से यहाँ :

चूँकि $ STY स्क्रीन स्रोतों पर अभी तक सेट नहीं किया गया है। स्क्रीनबास्क, आप इस ट्रिक का उपयोग अपने .screenrc में कर सकते हैं:

    screen 
    screen $SHELL -c 'screen -X caption always "$STY"' 

यानी पहली विंडो में स्क्रीन कमांड भेजें।


1
उस समाधान के लिए जो इसके साथ शुरू होता है backtick: (1.) backtickबैश बिलिन है? ग्नू-स्क्रीन कमांड? एक द्विआधारी निष्पादन योग्य? क्या कोई मैन पेज है? (२.) मुझे पता है कि यह काम करता है क्योंकि मैंने इसकी कोशिश की थी, लेकिन जब आपको लगता है कि दो-लाइन कमांड को कैसे निष्पादित किया जाता है जब यह लगता है कि gnu- स्क्रीन .screenrcसिंटैक्स को hardstatusकमांड के लिए एक लाइन की आवश्यकता है ? (3.) मैं सत्र के नाम के बाद कुछ पाठ को लागू करने की अनुमति देने के लिए आपकी आज्ञा को कैसे संशोधित करूंगा?
ट्रेवर बॉयड स्मिथ

@TrevorBoydSmith: backtickएक screenकमांड है। इसके लिए मैन पेज में खोजें screen। यदि आप जो पूछ रहे हैं उसके बाकी हिस्सों के बारे में एक नया प्रश्न पोस्ट करें तो यह सबसे अच्छा हो सकता है। मुझे नहीं लगता कि हार्डस्टैटस आउटपुट ऑन-स्क्रीन दो लाइनों पर कब्जा कर सकता है। आप मेरे उदाहरण में जो कर रहे हैं उसे करने के बजाय sedया उपयोग कर सकते हैं और कुछ अतिरिक्त पाठ भी जोड़ सकते हैं। awkgrepgrep
अगली सूचना तक रोक दिया गया।

जब मैंने कहा कि "दो लाइन" मुझे जो मैं चाहता था उसे आराम करने दो, मुझे हार्डस्टैटस के लिए दो लाइन डिस्प्ले नहीं चाहिए। मैं %` और backtickअलग-अलग लाइनों पर होने के कारण भ्रमित था ... वे संबंधित नहीं दिखते थे, लेकिन अब जब मैंने दस्तावेज़ को पढ़ा तोbacktick मैंने देखा कि दोनों संबंधित / आवश्यक / वैध-वाक्य-विन्यास (यद्यपि अजीब वाक्यविन्यास IMO) हैं।
ट्रेवर बॉयड स्मिथ

3

मेरे लिए यह आसानी %Sसे हार्डस्टैटस में डालने के साथ काम करता है ।

MWE (.screenrc):

hardstatus on
hardstatus alwayslastline
hardstatus string "%S"

हालाँकि, यह बिना आईडी के सत्र का नाम प्रदर्शित करता है (जैसे ${STY#*.}); अपने उदाहरण में: project1

( संपूर्णता के लिए यहां और यहां अन्य सवालों के समान उत्तर )।


2
FYI करें, "% S" गनु-स्क्रीन के नए संस्करणों पर काम करता है (मेरे लिए फेडोरा 21 संस्करण पर काम करता है) लेकिन पुराने संस्करण नहीं (मेरे लिए CentOS 6 संस्करण पर काम नहीं करता है)।
ट्रेवर बॉयड स्मिथ
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.