bash - शेलस्क्रिप्ट से स्क्रीन-शीर्षक सेट करें




title gnu-screen (7)

क्या शेल स्क्रिप्ट का उपयोग करके स्क्रीन टाइटल सेट करना संभव है?

मैंने कुछ मुख्य कमांड भेजने के बारे में सोचा जैसे ctrl + A shift - A Name enter

मैंने शेल स्क्रिप्ट में कीस्ट्रोक्स का अनुकरण करने के बारे में एक घंटे तक खोज की, लेकिन जवाब नहीं मिला।



आप निम्न पंक्तियों का उपयोग करके स्क्रीन / xterm शीर्षक सेट कर सकते हैं:

#!/bin/bash

mytitle="Some title"
echo -e '\033k'$mytitle'\033\\'

[अद्यतन] - अनुरोध के साथ मैं नीचे दिए गए @Espo द्वारा प्रस्तावित समाधान भी शामिल कर रहा हूँ:

आपके xterm संस्करण या आपके linux वितरण के आधार पर ऊपर की लाइन काम कर सकती है या नहीं भी हो सकती है और आप xterm-defaate आज़मा सकते हैं:

#!/bin/bash

mytitle="Some title"
echo -e '\033]2;'$mytitle'\007'

अधिक विवरण के लिए देखें: http://www.faqs.org/docs/Linux-mini/Xterm-Title.html#s3 या नीचे दिए गए @Espo द्वारा उत्तर देखें।


इस समस्या का मेरा समाधान एक बैश स्क्रिप्ट बनाना और इसे मेरी ~ / .bashrc फ़ाइल में जोड़ना था।

set-title() {
  ORIG==$PS1
  TITLE="\e];[email protected]\a"
  PS1=${ORIG}${TITLE}
}

अब जब मैं किसी भी बैश शेल सत्र में हूं, तो मैं "सेट-शीर्षक वांछित_टाइटल" टाइप करता हूं और यह "वांछित शीर्षक" में बदल जाता है। यह उबंटू के कई संस्करणों के लिए काम करता है, वर्तमान में काइनेटिक 16.04 पर

इसका समाधान मुझे here से मिला। मैं इसे फिर से खोज रहा था, यह नहीं मिल सका और सोचा कि मैं इसे यहाँ किसी के लिए भी दिलचस्पी के साथ पोस्ट करूँगा।


एस्पो के उत्तर में जोड़ने के लिए, xterm एस्केप सीक्वेंस को बैश PS1 चर पर भी लागू किया जा सकता है

ESC]0;stringBEL -- Set icon name and window title to string
ESC]1;stringBEL -- Set icon name to string
ESC]2;stringBEL -- Set window title to string

उदाहरण

PS1='\e]0;string\a'

पटकथा के नाम बदलने की पटकथा के निम्नलिखित तरीके हैं:

SSH का उपयोग करके सिस्टम में लॉग इन करने पर .ssh/config सेट निम्नलिखित सेटिंग्स को स्क्रीन शीर्षक स्वचालित रूप से सेट करता है:

Host *
  PermitLocalCommand yes
  LocalCommand [ "$TERM" == 'screen' ] && echo -ne "\033k%h\033\\" 

%h बजाय, जो आपके द्वारा कनेक्ट की जा रही मशीन के होस्टनाम का प्रतिनिधित्व करता है, आप %n उपयोग कर सकते हैं, जो कि मशीन से कनेक्ट करने के लिए आपके द्वारा उपयोग किया जाने वाला वास्तविक नाम / उपनाम है।

नोट: आपको लोकलहोस्ट% n और% h मापदंडों का उपयोग करने में सक्षम होने के लिए OpenSSH> = v5.1 की आवश्यकता है। LocalCommand की अधिक जानकारी के लिए 'man ssh_config' देखें।

स्वचालित रूप से शीर्षक को वापस करने के लिए, लोकलहोस्ट के होस्टनाम पर वापस जाएं, SSH सत्र को बंद करने के बाद, आप .bashrc में चर PS1 को तुरंत PS1 करने का अनुक्रम जोड़ सकते हैं:

export PS1='you_favorite_PS1_here'
if [ "$TERM" == 'screen' ]; then
    export PS1=${PS1}'\[\033k\h\033\\\]'
fi

ये ट्रिक्स खासतौर पर तब उपयोगी होती हैं, जब एक .screenrc का उपयोग किया .screenrc , जो आपको दिखाता है कि आप वर्तमान में किस स्क्रीन 'टैब' में काम कर रहे हैं। इस काम को पाने के लिए। .screenrc को निम्न के जैसा कुछ जोड़ें:

caption always "%{= kY}%-w%{= Yk}%n %t%{-}%+w%{ kG} %-= @%H - %LD %d %LM - %c"

http://www.faqs.org/docs/Linux-mini/Xterm-Title.html#s3

xterm क्रम से बच जाते हैं

विंडो और आइकन के टाइटल को एक्सटर्म एस्केप सीक्वेंस का उपयोग करके रनिंग एक्सटर्म में बदला जा सकता है। इस क्रम में निम्नलिखित क्रम उपयोगी हैं:

  • ESC]0;stringBEL - स्ट्रिंग के लिए आइकन का नाम और विंडो शीर्षक सेट करें
  • ESC]1;stringBEL - स्ट्रिंग के लिए आइकन का नाम सेट करें
  • ESC]2;stringBEL - स्ट्रिंग को विंडो टाइटल सेट करें

जहां ESC एस्केप कैरेक्टर (\ 033) है, और BEL बेल कैरेक्टर (\ 007) है।

Xterm में इनमें से किसी एक क्रम को प्रिंट करने से विंडो या आइकन शीर्षक बदल जाएगा।

नोट: ये क्रम अधिकांश xterm डेरिवेटिव्स पर लागू होते हैं, जैसे कि nxterm, color-xterm और rxvt। अन्य टर्मिनल प्रकार अक्सर विभिन्न पलायन का उपयोग करते हैं; उदाहरण के लिए परिशिष्ट देखें। Xterm से बचने के क्रम की पूरी सूची के लिए फ़ाइल ctlseq2.txt देखें, जो xterm वितरण, या xterm.seq के साथ आती है, जो rxvt वितरण के साथ आती है।

भागने के क्रम मुद्रण

इस शेल के जीवन भर के लिए स्थिर रहने वाली जानकारी के लिए, जैसे कि होस्ट और यूज़रनेम, यह शेल आरसी फ़ाइल में भागने की स्ट्रिंग को प्रतिध्वनित करने के लिए पर्याप्त होगा:

    echo -n "\033]0;${USER}@${HOST}\007"

उपयोगकर्ता नाम @ hostname जैसे शीर्षक का उत्पादन करना चाहिए, शेल चर $ USER और $ HOST को सही ढंग से सेट किया गया है। इको के लिए आवश्यक विकल्प शेल द्वारा भिन्न हो सकते हैं (नीचे उदाहरण देखें)।

शेल के जीवनकाल के दौरान बदल सकने वाली जानकारी के लिए, जैसे कि वर्तमान कार्यशील निर्देशिका, इन पलायनों को वास्तव में हर बार शीघ्र परिवर्तन लागू करने की आवश्यकता होती है। इस तरह से स्ट्रिंग आपके द्वारा जारी किए गए प्रत्येक कमांड के साथ अपडेट की जाती है और वर्तमान वर्किंग डायरेक्टरी, उपयोगकर्ता नाम, होस्टनाम आदि जैसी सूचनाओं पर नज़र रख सकती है। कुछ गोले इस उद्देश्य के लिए विशेष कार्य प्रदान करते हैं, कुछ नहीं और हमें शीर्षक अनुक्रम सम्मिलित करना होगा सीधे स्ट्रिंग में। इसका वर्णन अगले भाग में किया गया है।


set_screen_title ()
{
    echo -ne "\ek$1\e\\"
}




xterm