क्या मैं जिस होस्ट से जुड़ा हूँ उसके लिए "उपयोगकर्ता @ होस्ट" के लिए गनोम टर्मिनल का शीर्षक सेट करना संभव है?


22

मैं टर्मिनल शीर्षक सेट करना चाहता हूं, user@hostइसलिए मैं आसानी से बता सकता हूं कि मैं विंडो शीर्षक से किस मशीन से जुड़ा हुआ हूं। क्या SSH या GNOME टर्मिनल से ऐसा करने का कोई तरीका है?

जवाबों:


20

हाँ। यहाँ PS1 का उपयोग करके बैश के लिए एक उदाहरण दिया गया है जो डिस्ट्रो-अज्ञेयवादी होना चाहिए:

विशेष रूप से, भागने का क्रम \[\e]0; __SOME_STUFF_HERE__ \a\]ब्याज का है। मैंने इसे अधिक स्पष्टता के लिए एक अलग चर में सेट करने के लिए संपादित किया है।

# uncomment for a colored prompt, if the terminal has the capability; turned
# off by default to not distract the user: the focus in a terminal window
# should be on the output of commands, not on the prompt
force_color_prompt=yes

if [ -n "$force_color_prompt" ]; then
    if [ -x /usr/bin/tput ] && tput setaf 1 >&/dev/null; then
        # We have color support; assume it's compliant with Ecma-48
        # (ISO/IEC-6429). (Lack of such support is extremely rare, and such
        # a case would tend to support setf rather than setaf.)
        color_prompt=yes
    else
        color_prompt=
    fi
fi

TITLEBAR='\[\e]0;\u@\h\a\]'
# Same thing.. but with octal ASCII escape chars
#TITLEBAR='\[\033]2;\u@\h\007\]'

if [ "$color_prompt" = yes ]; then
    PS1="${TITLEBAR}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\W\[\033[00m\]\$ "
else
    PS1="${TITLEBAR}\u@\h:\W\$ "
fi
unset color_prompt force_color_prompt

यह भी ध्यान दें कि xterm का शीर्षक सेट करने के कई तरीके हो सकते हैं, यह निर्भर करता है कि आप किस टर्मिनल प्रोग्राम का उपयोग कर रहे हैं, और कौन सा शेल। उदाहरण के लिए, यदि आप केडीई के कंसोल का उपयोग कर रहे हैं, तो आप शीर्षक सेटिंग को ओवरराइड कर सकते हैं Settings-> Configure Profiles-> Edit Profile-> Tabsऔर Tab title formatऔर Remote tab title formatसेटिंग्स सेट करके ।

कोनोलास टाइटलबार सेटिंग्स डायलॉग

इसके अतिरिक्त, आप जांच कर सकते हैं:


तो क्या मुझे इसे उन सभी सर्वरों पर सेट करने की आवश्यकता है जिन्हें मैं अपने स्थानीय मशीन पर या उससे कनेक्ट कर रहा हूं?
नातुल्ली काया

@TKKocheran: आपको प्रत्येक मशीन पर ऐसा करने की आवश्यकता है जहां आप एक शेल चला रहे हैं। यदि आप इसे केवल दूरस्थ लॉगिन के लिए करना चाहते हैं, तो \hउस प्रॉम्प्ट में केवल $SSH_CLIENTगैर-रिक्त होने पर डालें ।
गिलेस एसओ-

@ टीके: हां, आपको इसे उन सभी सर्वरों पर सेट करना होगा जिन्हें आप कनेक्ट करते हैं। PS1 चर आपके वर्तमान शेल (एक दूरस्थ होस्ट पर भी) के लिए स्थानीय है, टर्मिनल प्रोग्राम नहीं (यानी: सूक्ति-टर्मिनल)
ट्रिनिट्रॉनएक्स

मुझे लगता है कि यह डेबियन नहीं चलाने वाले सर्वरों पर अलग तरह से लागू होगा। क्या आप चल रहे सर्वरों को प्रदान करने के लिए अपना जवाब संपादित कर सकते हैं, आइए बताते हैं, फेडोरा / रेड हैट डेरिवेटिव?
नातुल्ली काया

1
@TK: मैंने इसे उबंटू 11.04 मशीन से विभिन्न होस्ट्स के लिए SSH का उपयोग करके परीक्षण किया ... इसलिए शीर्षक बार को सही ढंग से वहां सेट किया गया था ... यदि यह काम नहीं करता है, तो इस अनुक्रम को सामने से जोड़ने का प्रयास करें \[\e]2;\u@\h\a:। (उस जानकारी के साथ मेरी प्रतिक्रिया भी संपादित करें)
ट्रिनिट्रॉनएक्स

3

यहां SSH बैश स्क्रिप्ट का एक संस्करण है जो मैं उपयोग करता हूं जो रिमोट सर्वर का शीर्षक सेट करता है और रिमोट सर्वर में कोई भी बदलाव किए बिना कमांड प्रॉम्प्ट।

my_ssh.sh:

#!/bin/bash
SETTP='MY_PROMPT="$HOSTNAME:$PWD\$ "'
SETTP="$SETTP;"'MY_TITLE="\[\e]0;$HOSTNAME:$PWD\a\]"'
SETTP="$SETTP;"'PS1="$MY_TITLE$MY_PROMPT"'
ssh -t $1@$2 "export PROMPT_COMMAND='eval '\\''$SETTP'\\'; bash --login"

आप इसे कॉल कर सकते हैं ।/my_ssh.sh उपयोगकर्ता नाम होस्टनाम


मुझे शक है कि ssh लॉगइन के बाद एक और बैश सत्र शुरू करने पर यह काम करता है (जैसे कि स्क्रीन का उपयोग करते समय)
लॉरेंस रिटवेल्ड

1

मेरे लिए निम्नलिखित काम करता है (शायद केवल सूक्ति-टर्मिनल पर):

comp@home$ cat /usr/bin/ssh
#!/bin/bash    
echo -ne "\033]0;${1}\007"
ssh_bkup "$@"

जहां ssh_bkup कमांड एक बदले हुए नाम के साथ सिर्फ मूल 'ssh' है, जिसे इको कमांड के बाद वर्तमान टर्मिनल का शीर्षक बदलने के बाद सही कहा जाता है।


एक उपनाम समाधान कुछ गैर-मानक के लिए कमांड का नाम बदलने से बेहतर नहीं होगा?
एक्स तियान

यह मेरे लिए ठीक काम करता है, ग्नोम-टर्मिनल भी। ~/binमेरे मार्ग में प्राथमिकता है, इसलिए मैंने आपकी स्क्रिप्ट को अपने में रखा ~/bin/ssh। अंतिम पंक्ति स्पष्ट रूप से कॉल करती है /usr/bin/ssh। इस तरह, अन्य उपयोगकर्ता अभी भी sshउस मशीन में लॉग इन करते समय मानक का उपयोग करते हैं , और (चूंकि हमारे घर निर्देशिका सर्वर, एलडीएपी खातों पर हैं) मुझे जो भी मशीन में लॉग ऑन किया जाता है, उस पर मुझे कार्यक्षमता मिलती है।
गौथियर

गुड कॉल, @ गौथियर। एक बेहतर उपाय लगता है।
यूरी मैनकोव्स्की

0

यह उपनाम संस्करण है

SETTP='MY_PROMPT="$HOSTNAME:$PWD\$ "'
SETTP="$SETTP;"'MY_TITLE="\[\e]0;$HOSTNAME:$PWD\a\]"'
SETTP="$SETTP;"'PS1="$MY_TITLE$MY_PROMPT"'
SETPC="export PROMPT_COMMAND='eval '\\''$SETTP'\\'; bash --login"

alias myssh='function _myssh(){ ssh -t $1@$2 $SETPC; };_myssh'
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.