मैं टर्मिनल शीर्षक सेट करना चाहता हूं, user@host
इसलिए मैं आसानी से बता सकता हूं कि मैं विंडो शीर्षक से किस मशीन से जुड़ा हुआ हूं। क्या SSH या GNOME टर्मिनल से ऐसा करने का कोई तरीका है?
मैं टर्मिनल शीर्षक सेट करना चाहता हूं, user@host
इसलिए मैं आसानी से बता सकता हूं कि मैं विंडो शीर्षक से किस मशीन से जुड़ा हुआ हूं। क्या SSH या GNOME टर्मिनल से ऐसा करने का कोई तरीका है?
जवाबों:
हाँ। यहाँ 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
सेटिंग्स सेट करके ।
इसके अतिरिक्त, आप जांच कर सकते हैं:
\h
उस प्रॉम्प्ट में केवल $SSH_CLIENT
गैर-रिक्त होने पर डालें ।
\[\e]2;\u@\h\a
:। (उस जानकारी के साथ मेरी प्रतिक्रिया भी संपादित करें)
यहां 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 उपयोगकर्ता नाम होस्टनाम
मेरे लिए निम्नलिखित काम करता है (शायद केवल सूक्ति-टर्मिनल पर):
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
उस मशीन में लॉग इन करते समय मानक का उपयोग करते हैं , और (चूंकि हमारे घर निर्देशिका सर्वर, एलडीएपी खातों पर हैं) मुझे जो भी मशीन में लॉग ऑन किया जाता है, उस पर मुझे कार्यक्षमता मिलती है।
यह उपनाम संस्करण है
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'