অন্য মেশিনে এসএসএইচ রিমোট লগিংয়ের পরে টার্মিনাল শিরোনাম ঠিক করুন


18

এখনই আমি আমার টার্মিনাল বারগুলির শিরোনাম পরিবর্তন করতে একটি লাইন পার্ল কোড ব্যবহার করছি,

print("\e]0;@ARGV\7");

তবে প্রতিবার আমি অন্য কোনও রিমোট মেশিনে ঝাঁকুনির পরে, শিরোনামটি হোস্ট দ্বারা পরিবর্তন করা হবে (যার দ্বারা আমি বিশেষত বিরক্ত নই)। তবে আমি সংযোগ থেকে প্রস্থান করার পরে, পরিবর্তিত শিরোনামটি রয়ে গেছে। এই সমাধানের জন্য একটি উপায় আছে কি? স্থানীয়ভাবে অপারেশন করার সময় মূলত আমি আমার টার্মিনালের জন্য একটি নির্দিষ্ট শিরোনাম চাই।

আমি প্রাথমিকভাবে সেন্টফেস বা ডেবিয়ান এর অধীনে xfce টার্মিনাল এবং টার্মিনেটর ব্যবহার করি। ধন্যবাদ।

সম্পাদনা

আর একটি সূক্ষ্মতা হ'ল, সমস্ত টার্মিনালগুলির একই নাম থাকা সত্ত্বেও, আমি উড়ানের দিকে তাদের শিরোনামগুলি সম্পাদনা করার স্বাধীনতা অর্জন করতে পছন্দ করব তবে এসএসএইচ অধিবেশনটি কেবল আমার সম্পাদিত বিষয়টি পরিবর্তন করতে নিষেধ করেছে।

উত্তর:


6

আমি উইন্ডো শিরোনাম সম্পর্কে জানি না, তবে আমি আমার সিস্টেমটি একটি ssh সেশন বন্ধ করার বিষয়ে কিছু করার চেষ্টা করছি। আসলে, ssh সেশনটি সমাপ্ত করার পরে। সংক্ষেপে: এটি এর মতো কাজ করে না। মূলত আপনার তিনটি পছন্দ রয়েছে:

  1. Ssh এর চারপাশে একটি মোড়ক লিখুন, অর্থাত্ একটি এক্সিকিউটেবল শেল স্ক্রিপ্ট যা আপনার $ PATH -এর sshচেয়ে বেশি অগ্রাধিকার নেয় /usr/bin/sshযা exec /usr/bin/ssh $@এর মাঝখানে কোথাও লাইন ধারণ করে । এটি আপনার শেল আপনাকে কার্যকর এসএসএস বাইনারি চালানোর আগে এবং তার পরে কিছুটা স্টাফ করতে সক্ষম করে, এবং সর্বনিম্ন পর্যন্ত রাখে।

  2. আপনাকে কোনও ক্লিনআপ হুক সরবরাহ করার জন্য আপনার পছন্দের এসএসএইচ উত্সগুলির বিরুদ্ধে একটি প্যাচ লিখুন যা কমান্ডলাইন বা কিছু কনফিগার-সেটিংয়ের মধ্য দিয়ে পাস করা শেল কমান্ড কার্যকর করে। আমরা এটাই চাই

  3. আছে PROMPT_COMMANDআউটপুট মূল্যায়ন history। মূলত 1 এ আরও জেনেরিক এবং আরও কুরুচিপূর্ণ পদ্ধতির।


মূলত আমি বর্তমান শিরোনামটি দখল করতে এবং এসএসএইচ সেশনের আগে এটি সংরক্ষণ করার জন্য একটি সাধারণ স্ক্রিপ্ট লিখেছিলাম, তারপরে শিরোনামটি পুনরুদ্ধার করব।
nye17

4
@ nye17 আপনি কি আপনার সমাধান স্ক্রিপ্ট পোস্ট করতে পারেন যা আপনি ব্যবহার করেছেন?
রেগ মেমি

আমি আমার সমাধানের স্ক্রিপ্টটি নীচে পোস্ট করেছি। @ nye17 কী করেছে তার একটি ঘনিষ্ঠ মিল হওয়া উচিত। unix.stackexchange.com/a/341277/112190
ফায়াত

7

সমাধান: ssh এবং su কমান্ডের পরে কিছু করার জন্য কিছু ফাংশন ~ / .bashrc যুক্ত করুন

function title()
{
   # change the title of the current window or tab
   echo -ne "\033]0;$*\007"
}

function ssh()
{
   /usr/bin/ssh "$@"
   # revert the window title after the ssh command
   title $USER@$HOST
}

function su()
{
   /bin/su "$@"
   # revert the window title after the su command
   title $USER@$HOST
}

দ্রষ্টব্য: ash / .bashrc এ সম্পাদনার পরে বাশ পুনরায় চালু করুন

উদাহরণ:

# title is "user1@boxA"
ssh boxB  # auto changes title while on boxB to "user1@boxB"
exit
# title returns back to "user1@boxA" because of our title call in ssh()
su - user2 # auto changes title while switched user to user2: "user2@boxA"
exit
# title returns back to "user1@boxA" because of our title call in su()

আশা করি এইটি কাজ করবে.


revertআপনি যেটি আগে ছিলেন তা যাচাই না করে বলে আপনি কিছুটা ভুল বলেছেন ... আপনি যদি পূর্বের মানটি অনুসন্ধান করে এবং সংরক্ষণ করেন তবে ;-)
২৩:১০

4

আপনার স্থানীয় শেল dotfile (যেমন কনফিগার করুন $PROMPT_COMMANDমধ্যে ~/.bashrcউপযুক্তভাবে টার্মিনাল শিরোনাম সেট করতে, একই প্রক্রিয়া ব্যবহার করে)।

উদাহরণ স্বরূপ:

export PROMPT_COMMAND="printf '\e]0;bash\7\n'"

1. প্রম্পট_কমন্ডে আপনার টার্মিনাল উইন্ডোর শিরোনাম করার কিছুই নেই, তাই না? আমি প্রম্পট_কম্যান্ড সেট আপ করেছি তবে কেবল প্রম্পটের জন্য। ২. এসএসএস লগিং থেকে বেরিয়ে আসার পরে আমার স্থানীয় সেটিংটি স্মরণ এবং সক্রিয় করার জন্য আমার এখনও একটি ব্যবস্থা প্রয়োজন।
nye17

প্রম্পট কমান্ডটি সহজেই আপনার টার্মিনালের শিরোনাম বারটির নতুন নামকরণের জন্য প্রয়োজনীয় পালানোর ক্রমটি বের করে দেয়। :)
মনিকা

তবে আমি প্রতিটি একক অধিবেশন একই নাম রাখার পরিবর্তে, যে টার্মিনালটি চাই তার নামকরণের স্বাধীনতাও চাই। অনুশীলনে, আমি মূলত টার্মিনাল শিরোনাম ম্যানুয়ালটি সম্পাদনা করি এবং আশা করি যে টার্মিনালটি এসএসএইচ লগইন / লগআউট করার পরেও স্থির শিরোনাম পেয়ে থাকবে। এটা কি কোন মানে আছে?
nye17

1
সুতরাং একটি পরিবর্তনশীল মধ্যে পছন্দসই শিরোনাম রাখুন, এবং যে আউটপুট।
ইগনাসিও ওয়াজকেজ-আব্রামস

নাল শিরোনাম (উদাহরণস্বরূপ export PROMPT_COMMAND="printf '\e]0;\7\n'") সেট করতে যদি আপনি এই টার্মিনাল অব্যাহতি ক্রমটি ব্যবহার করেন তবে আপনার টার্মিনাল এমুলেটরটি উইন্ডো শিরোনামটি যথাযথ হিসাবে সেট করতে পারে। আপনি যখন টার্মিনাল শিরোনাম সেট করে এমন কোনও দূরবর্তী হোস্টের কাছে যান, তখন আপনার টার্মিনাল এমুলেটর সেই শিরোনামটি প্রদর্শন করবে এবং আপনি যখন লগআউট করবেন তখন এটি নিজের শিরোনাম ব্যবহার করে ফিরে যাবে। অন্ততপক্ষে, ম্যাকস টার্মিনাল অ্যাপ্লিকেশনটি এভাবেই কাজ করে।
মৃন্ময়

3

এই লাইনগুলিকে ~ / .bashrc এ যুক্ত করুন

# If this is an xterm set the title to user@host:dir
case "$TERM" in
xterm*|rxvt*)
    PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1"

    ;;
*)
    ;;
esac

ডিবিয়ান ভিত্তিক লিনাক্সগুলির সাথে ভাল কাজ করে


1
যদিও এটি শিরোনামটি সেট করে না ...
বনাঙ্গুইন

এটি সাধারণত ব্যবহারের PROMPT_COMMANDপরিবর্তে ব্যবহার করা আরও ভাল কাজ করে PS1, কারণ আপনাকে \[ \]বন্ধনী অন্তর্ভুক্ত করতে হবে না এবং এটি কিছু উদ্ধৃতি অপসারণ করতে পারে।
ক্রিস পেজ

2

একটি সমাধান হ'ল ssh'ing এর আগে টার্মিনাল ভেরিয়েবলটি vt100 এ পরিবর্তন করা, যেমন রান করুন

export TERM=vt100

এটি কাজ করে কারণ সাধারণত ইনিশিয়ালাইজেশন স্ক্রিপ্টগুলি টার্মিনাল ভেরিয়েবলের দিকে তাকায় এবং কেবলমাত্র এটি xterm এর শিরোনাম পরিবর্তন করে। আপনি বিকল্প স্ক্রিন, রঙ এবং সম্ভবত অন্য কিছু অভিনব বৈশিষ্ট্যগুলি হারিয়ে যেতে পারেন যা আপনি প্রশংসা করতে পারেন বা নাও করতে পারেন।

আপনি যদি স্থানীয় টার্মিনালটিকে xterm হিসাবে রাখতে চান তবে উড়ানের দিকে টার্মিনাল ভেরিয়েবল পরিবর্তন করতে ওরফে ssh পছন্দ করুন

alias ssh='TERM=vt100 /usr/bin/ssh'

এটি জিনিসগুলি প্রদর্শিত হওয়ার পদ্ধতি পরিবর্তন করে। রঙগুলি দেখানো হয় না
এনপিকে

0

আমি আমার PSB ফাইলগুলিতে আমার PS1 এ যুক্ত করে এই সমস্যাটি সমাধান করেছি।

\[\e]2;\u@\H:\w\a\]

অতএব পুরো লাইনটি দেখতে দেখতে (আমি আমার পিএস কাস্টমাইজ করেছি !:

export PS1='\[\e]2;\u@\H:\w\a\]\n($LOGNAME@$HOSTNAME) \t\n[$PWD]: '

আমি আশা করি এটি অন্যকে সহায়তা করে।


নাল শিরোনাম (উদাহরণস্বরূপ export PS1='\[\033]0;\007\]\h:\W \u\$ ') সেট করতে যদি আপনি এই টার্মিনাল অব্যাহতি ক্রমটি ব্যবহার করেন তবে আপনার টার্মিনাল এমুলেটরটি উইন্ডো শিরোনামটি যথাযথ হিসাবে সেট করতে পারে। আপনি যখন টার্মিনাল শিরোনাম সেট করে এমন কোনও দূরবর্তী হোস্টের কাছে যান, তখন আপনার টার্মিনাল এমুলেটরটি এটি দেখায় এবং যখন আপনি লগ আউট করেন, এটি তার নিজস্ব শিরোনাম ব্যবহার করে ফিরে যাবে। অন্ততপক্ষে, ম্যাকস টার্মিনাল অ্যাপ্লিকেশনটি এভাবেই কাজ করে।
মৃন্ময়

0

আমি যখন এসএসএইচ থেকে বেরিয়ে আসি তখন অন্যান্য উত্তরগুলি আমার পক্ষে কার্যকর হবে না, তবে আমার কাছে এসেছিল। আমি যখন রিমোট এসএসএস সেশন থেকে প্রস্থান করি তখন সেট অটোমেটিক-পুনর্নামকরণ কাজ করে যাতে এটি স্বয়ংক্রিয় নাম পরিবর্তন করে এবং পুনরায় সেট করতে উইন্ডো থেকে আর প্রস্থান করতে হবে না। [জানুয়ারি 2018 - ডেবিয়ান 9]

ssh() {
tmux rename-window "$*"
command ssh "$@"
tmux setw automatic-rename
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.