জিনোম টার্মিনালের শিরোনামটি "ইউজার @ হোস্ট" -র কাছে সেট করা সম্ভব যে আমি যে হোস্টের সাথে সংযুক্ত আছি?


22

আমি টার্মিনাল শিরোনামটি সেট করতে চাই user@hostযাতে আমি উইন্ডো শিরোনাম থেকে কোন মেশিনে সংযুক্ত রয়েছি তা সহজেই বলতে পারি। এসএসএইচ বা জিনোম টার্মিনাল থেকে এটি করার কোনও উপায় আছে কি?

উত্তর:


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

আপনি যে টার্মিনাল প্রোগ্রামটি ব্যবহার করছেন এবং কোন শেল তার উপর নির্ভর করে এক্সটার্মের শিরোনাম নির্ধারণের অনেকগুলি উপায় থাকতে পারে তাও নোট করুন। উদাহরণস্বরূপ, আপনি যদি কে-ডি-ই-এর কনসোল ব্যবহার করছেন তবে আপনি Settings-> Configure Profiles-> Edit Profile-> Tabsগিয়ে সেটিংস Tab title formatএবং Remote tab title formatসেটিংস সেট করে শিরোনাম সেটিংটি ওভাররাইড করতে পারেন ।

কনসোল শিরোনামবার সেটিংস ডায়ালগ

অতিরিক্ত হিসাবে, আপনি চেক আউট করতে পারেন:


সুতরাং আমি যে সমস্ত সার্ভারের সাথে সংযোগ করছি সেগুলি বা আমার নিজস্ব স্থানীয় মেশিনে আমার এটি সেট করার দরকার নেই?
নাফটুলি কে

@ টি কেকোচেরান: আপনি যেখানে শেল চালাচ্ছেন প্রতিটি মেশিনে আপনাকে এটি করা দরকার। আপনি যদি কেবল এটি দূরবর্তী লগইনগুলির জন্য করতে চান \hতবে কেবলমাত্র $SSH_CLIENTফাঁকা না থাকলে প্রম্পটে রাখুন ।
গিলস 21'19

@ টি কে: হ্যাঁ, আপনার সাথে সংযুক্ত হওয়া সমস্ত সার্ভারে আপনাকে এটি সেট করতে হবে। PS1 ভেরিয়েবলটি আপনার বর্তমান শেলের (এমনকি একটি দূরবর্তী হোস্টেও) স্থানীয়, টার্মিনাল প্রোগ্রাম নয় (যেমন: জিনোম-টার্মিনাল)
ত্রিনিট্রনএক্স 21

আমি ধরে নিয়েছি যে এটি ডেবিয়ান না চালিয়ে সার্ভারগুলিতে আলাদাভাবে প্রয়োগ হবে। চলমান সার্ভারগুলির সরবরাহের জন্য আপনি কি নিজের উত্তর সম্পাদনা করতে পারবেন, যাক, ফেডোরা / রেড হ্যাট ডেরিভেটিভস?
নাফটুলি কে

1
@TK: আমি উবুন্টু 11.04 মেশিন থেকে বিভিন্ন হোস্ট এই SSH ব্যবহার করে পরীক্ষিত ... সুতরাং শিরোনাম দণ্ড সঠিকভাবে সেখানে ছিল ... যদি কাজ না করে, সামনের এই ক্রম যোগ করার চেষ্টা: \[\e]2;\u@\h\a। (সেই তথ্যের সাথে আমার প্রতিক্রিয়াটিও সম্পাদিত হয়েছে)
ত্রিনিট্রনএক্স

3

এখানে আমি ব্যবহার করি এমন এসএসএইচ বাশ স্ক্রিপ্টের একটি সংস্করণ যা দূরবর্তী সার্ভারে কোনও পরিবর্তন না করেই রিমোট সার্ভারের শিরোনাম এবং কমান্ড প্রম্পট সেট করে।

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 ব্যবহারকারীর নাম হোস্ট-নেম করে কল করতে পারেন


আমি সন্দেহ করি এসএসএস লগইনের পরে অন্য বাশ সেশন শুরু করার সময় এটি কাজ করে (উদাহরণস্বরূপ পর্দা ব্যবহার করার সময়)
লরেন্স রিটভেल्ड

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'
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.