আমি টার্মিনাল শিরোনামটি সেট করতে চাই user@host
যাতে আমি উইন্ডো শিরোনাম থেকে কোন মেশিনে সংযুক্ত রয়েছি তা সহজেই বলতে পারি। এসএসএইচ বা জিনোম টার্মিনাল থেকে এটি করার কোনও উপায় আছে কি?
আমি টার্মিনাল শিরোনামটি সেট করতে চাই user@host
যাতে আমি উইন্ডো শিরোনাম থেকে কোন মেশিনে সংযুক্ত রয়েছি তা সহজেই বলতে পারি। এসএসএইচ বা জিনোম টার্মিনাল থেকে এটি করার কোনও উপায় আছে কি?
উত্তর:
হ্যাঁ। 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
ফাঁকা না থাকলে প্রম্পটে রাখুন ।
\[\e]2;\u@\h\a
। (সেই তথ্যের সাথে আমার প্রতিক্রিয়াটিও সম্পাদিত হয়েছে)
এখানে আমি ব্যবহার করি এমন এসএসএইচ বাশ স্ক্রিপ্টের একটি সংস্করণ যা দূরবর্তী সার্ভারে কোনও পরিবর্তন না করেই রিমোট সার্ভারের শিরোনাম এবং কমান্ড প্রম্পট সেট করে।
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
সেই মেশিনে লগ ইন করার সময় মানকটি ব্যবহার করেন এবং (যেহেতু আমাদের হোম ডিরেক্টরিগুলি সার্ভারে রয়েছে, এলডিএপি অ্যাকাউন্টগুলি) আমি যে কোনও মেশিনে লগ ইন করেছি তার কার্যকারিতা পেয়েছি।