शेल प्रॉम्प्ट में GNU स्क्रीन सत्र नाम और विंडो शीर्षक दिखा रहा है


11

क्या शेल के प्रॉम्प्ट में जीएनयू स्क्रीन सत्र का नाम और विंडो शीर्षक प्रस्तुत करने का कोई तरीका है (हमें बताएं, बैश प्रॉम्प्ट को परिभाषित किया गया है PS1)?

जवाबों:


14

स्क्रीन कुछ पर्यावरण चर ( screen(1) मैनपेज से) की आपूर्ति करती है :

STY              Alternate socket name.
WINDOW           Window number of a window (at creation time).

"निर्माण के समय" का अर्थ है कि यदि आप एक विंडो (स्क्रीन की numberकमांड का उपयोग करके ) को फिर से सेट करते हैं, तो शेल को परिवर्तन के बारे में नहीं बताया जाएगा और $ WINDOW अभी भी पहले विंडो नंबर के समान होगा।

आप कुछ इस तरह का उपयोग कर सकते हैं:

PS1='\u@\h(${STY}:${WINDOW}):\w$ '

1
उत्तम! यह वही है जिसे मैं देख रहा था। BTW, विंडो नंबर के बजाय विंडो शीर्षक प्राप्त करने का एक तरीका है?
Brandizzi

ऐसा नहीं है कि मुझे पता है, स्क्रीन के लिए कोई एपीआई नहीं है, और जब आप आदेश जारी करते हैं कि कोई आउटपुट नहीं है - यह स्क्रीन में वर्तमान विंडो पर जाता है। उदाहरण के लिए screen -xr 2466 -X windows
आर्सेगे

यद्यपि यह संभवतः रेनमरिंग केस के अंतर्गत आता है, क्या यह विंडो के नाम तक पहुंचने का एक तरीका है यदि इसके साथ सेट किया गया है Ctrl-a A?
थालिस के।

1
यदि जीएनयू screenको -Q(क्वेरी) विकल्प के साथ संकलित किया गया है , तो आप कुछ कमांड चला सकते हैं, जैसे कि titleऔर windowsस्टडआउट के लिए डेटा डिस्प्ले है, हालांकि, एक नई रूपरेखा के बिना।
जूल

3

मैं हमेशा सटीक स्क्रीन सत्र नामों का उपयोग करता हूं। फिर मैं स्क्रीन के STY env var को जोड़ सकता हूं, PS1 को न्यूमेरिक आईडी छीन कर (धन्यवाद dimo414)। मैं इसे घुंघराले ब्रेसिज़ या किसी भी चीज़ से नहीं सजाता क्योंकि मैं हमेशा एक सत्र में नहीं होता। सरल उदाहरण:

PS1='\u@\h ${STY#[0-9]*.} \w$ '

1

मैं इसका उपयोग करता हूं:

(`echo ${STY} | sed -e 's/[0-9]*\.//g'`:${WINDOW}:`screen -Q title`)

प्रक्रिया संख्या ${STY}
को विंडो संख्या में शामिल करता है (जैसा कि "निर्माण के समय" में उल्लेख किया गया है)
में विंडो शीर्षक शामिल है (जैसा कि लौटाया गया है screen -Q title)

टिप्पणियाँ:

  • पहली बार जब यह चलता है, तो screen -Qवापसी की प्रतीक्षा करता है
  • मैं सीए सीए के साथ विंडो शीर्षक सेट करता हूं और फिर प्रॉम्प्ट को अपडेट करने के लिए मेरा .profile स्रोत

5
के ${STY#[0-9]*.}माध्यम से पाइप की जरूरत से बचा जाता है का उपयोग करना sed
dimo414
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.