পুদিনা উইন্ডোর শিরোনামটি কীভাবে পরিবর্তন করবেন?


35

মিনিটটিওয়াই সাইগউইনের জন্য নতুন ডিফল্ট কনসোল।

মিনিটটিওয়াই উইন্ডোটির শিরোনামটি পরিবর্তন করতে শেল কমান্ডটি (কিছু আমি .bashrc, বা আরও ভাল .zshrc এ রাখতে পারি) কী?

আমি উইন্ডোটির শিরোনামটি বর্তমান ডিরেক্টরিটির পথ হয়ে উঠতে চাই এবং কনসোলের ভিতরে ডিরেক্টরিগুলি স্যুইচ করার সাথে সাথে এটি আপডেট করতে চাই।


1
সাইগউইনের ডিফল্ট প্রম্পট সেটিং (যেমন $PS1) ইতিমধ্যে একটি নিয়ন্ত্রণ ক্রম রয়েছে যা উইন্ডো শিরোনামটি ব্যবহারকারী @ মেশিন: ওয়ার্কিং_ডাইরেক্টরিতে সেট করে।
ak2

সাম্প্রতিক একটি এমএসওয়াইএস 2_প্যাকেজ / ফাইল সিস্টেম 6e6310 ডি প্রতিশ্রুতিবদ্ধ (ফাইল সিস্টেম: নতুন নির্দিষ্ট ভেরিয়েবল এমএসওয়াইএস 2_পিএস 1, 2016-05-01) একটি এমএসওয়াইএস 2_পিএস 1 প্রম্পট স্ক্রিপ্ট প্রবর্তন করেছে, স্বতন্ত্র সাইগউইন / এমএসওয়াইএস 2 কনফিগারেশনের অনুমতি দেয়। যে কোনও বিদ্যমান PS1 এর মধ্যবর্তী অগ্রাধিকার github.com/Alexpux/MSYS2-packages/pull/651 রয়েছে তা নিশ্চিত করার জন্য আমি একটি টুইটের প্রস্তাব দিয়েছি । আশাকরি এটা সাহায্য করবে.
ফিলিপ ওকলে

ফিলিপ, (স্বতঃ দ্রষ্টব্য) এই টুইটটি বিতর্কিত প্রমাণিত হয়েছে এবং বিভিন্ন ব্যবহারগুলি অন্তর্ভুক্ত করার জন্য ন্যূনতম व्यवहार्य স্থিরতা তৈরি করার জন্য আরও টুইটগুলি যুক্ত করা (বা অপসারণ) করা হচ্ছে।
ফিলিপ ওকলে

1
সম্পর্কিত, যদি আপনার কেবল "সাইগউইন আই 686" বা "সাইগউইন x86_64" এর মতো স্থির শিরোনাম প্রয়োজন হয় তবে আপনি -T <title>উইন্ডোজ শর্টকাট বৈশিষ্ট্যে ব্যবহার করতে পারেন । এছাড়াও দেখুন mintty man page
jww

উত্তর:


50

কি সমস্যা

নিম্নলিখিত কমান্ডটি আমার পক্ষে কাজ করছে না:

echo -ne "\e]0;MYTITLE\a"

দেখা যাচ্ছে যে আমার ডিফল্ট সাইগউইন ইনস্টলেশন .bashrc এ নিম্নলিখিত প্রম্পট সংজ্ঞাটি অন্তর্ভুক্ত করেছে:

PS1=\[\e]0;\w\a\]\n\[\e[32m\]\u@\h \[\e[33m\]\w\[\e[0m\]\n$

নোট করুন যে প্রম্পটের প্রথম অংশটি ( \e]0;\w\a) প্রতিটি সময় প্রম্পট প্রদর্শিত হবে উইন্ডোজ শিরোনাম সেট করছে।

সমাধান

আপনার .bashrc2 টি ফাংশন সংজ্ঞায়িত করে এই লাইনগুলি যুক্ত করুন :

function settitle() {
      export PS1="\[\e[32m\]\u@\h \[\e[33m\]\w\[\e[0m\]\n$ "
      echo -ne "\e]0;$1\a"
}
function settitlepath() {
      export PS1="\[\e]0;\w\a\]\n\[\e[32m\]\u@\h \[\e[33m\]\w\[\e[0m\]\n$ "
}

তারপরে আপনি এই আদেশটি দিয়ে একটি কাস্টম শিরোনাম সেট করতে পারেন:

settitle "MYWonderfullTest here"

অথবা আপনি এই আদেশ দিয়ে সাইগউইনের ডিফল্ট (বর্তমান পথ) এ ফিরে যেতে পারেন:

settitlepath

আশাকরি এটা সাহায্য করবে


1
দুর্দান্ত কাজ, পিএস 1 সমস্যাটিকে সম্বোধন করা যা বেশিরভাগ ব্যবহারকারী ডিফল্ট সাইগউইন সেটিংসের সাহায্যে শুরু করবেন।
মার্ককু কে।

3
এটি উত্তর হিসাবে গ্রহণ করা উচিত ছিল কারণ এটি সর্বোচ্চ ভোট প্রাপ্ত উত্তরের মতো নিখুঁতভাবে কাজ করে
তপন চন্দ্র

1
আমি একটি উত্তর পছন্দ করি যা আমি কেবল কাটা এবং পেস্ট করতে পারি। এবং সমস্যাটি আসলে কী তা স্পষ্টভাবে ব্যাখ্যা করে।
ডারেল লি

এই ফাংশন আমার জন্য ভাল কাজ করে! মনে রাখবেন যে সাইগউইন আপনার .bashrc পুনরায় লোড করার জন্য আপনাকে সাইগউইন পুনরায় চালু করতে হবে, বা লিখুন source ~/.bashrc- অন্যথায় সাইগউইন তখনও বাশার্কের সেই পুরানো সংস্করণটি চালিয়ে যাবে যা সাইগউইন শুরু হওয়ার পরে অন ডিস্ক ছিল। - পরীক্ষিত Cygwin version 2.8.1 (64 bit)- একটি 2017 সংস্করণ
হ্যানশেরিক

এই উত্তরটি কখনই গৃহীত হয়নি?
asmith

26

আপনি এটির জন্য xterm নিয়ন্ত্রণ অনুক্রমের সাহায্যে এটি পরিবর্তন করতে পারেন:

echo -ne '\e]0;Title\a'

এইটিকে দেখুন: http://code.google.com/p/mintty/issues/detail?id=241


4
আমার জন্য কোনও প্রভাব নেই: / সম্ভবত এই কৌশলটি গত 6 মাসে ভাঙা হয়েছে?
ভোল্ট্রেভো

আপনি কি ব্যাশ ব্যবহার করছেন?
জেমস ফু

2
যখন কোনও পর্দার মধ্যে থেকে জারি করা হয় তখন এর কোনও প্রভাব নেই।
29 Рахматуллин

10
সম্ভবত সমস্যাটি হ'ল কমান্ড প্রম্পটটি শিরোনাম আপডেট করার জন্য ইতিমধ্যে কনফিগার করা হয়েছে (বর্তমান পথের সাথে এক্সপ্লে করার জন্য), সুতরাং কমান্ডটি কাজ করে তবে প্রম্পট দ্বারা এটি হঠাৎ করেই মুছে ফেলা হয়।
আন্দ্রেয়া পোলকি

2
এটি পরীক্ষা করতে "প্রতিধ্বনি-ne ই] 0; শিরোনাম \ এ 'ও& বিড়াল"। এই পদ্ধতিটি প্রম্পটটিকে তাৎক্ষণিকভাবে পুনরায় সেট করা থেকে বাধা দেয়। (যদি এটি কাজ করে তবে আপনি নিজের উত্তরটিতে PS1 পরিবর্তন করতে পারবেন অন্য উত্তরগুলিতে বর্ণিত হিসাবে)
কার্টিস ইয়ালাপ

3

এটি .zshrc এ রাখুন:

# Change title of MinTTY to current dir
function settitle() {
    echo -ne "\033]2;"$1"\007"
}
function chpwd() {
    settitle $(cygpath -m `pwd`)
}

ফাংশন নিষ্পত্তিতে বিশেষ অক্ষরের ক্রমটি MinTTY উইন্ডোটির শিরোনাম পরিবর্তন করে।

ইন zsh , যদি আপনি বিশেষ নাম chpwd সঙ্গে একটি ফাংশন নির্ধারণ করুন, এটা হবে প্রতিটি chdir পর প্রার্থনা

সাইগউইন ১.7 এবং মিনিটটিওয়াই জেডএসটি চালিয়ে উইনএক্সপিতে কাজ করে।


ডাব্লুএসএল-এও কাজ করে (সাইনগাথ স্টাফটি অবশ্যই বিয়োগ): settitle "$(pwd)@$HOST"
zzxyz

2

ব্যাশে, ভেরিয়েবল PROMPT_COMMAND টি সেমিকোলন দ্বারা বিভক্ত কয়েকটি কমান্ড ধরে রাখতে সেট করা যেতে পারে। zsh সম্পর্কে যে অন্য প্রতিক্রিয়াতে বর্ণিত হয়েছে তেমন একই শিরোনাম সেটিংটি করতে আপনি এটি ব্যবহার করতে পারেন।


2
1) প্রতিধ্বনি $ PS1 এবং সেই স্ট্রিংটি আপনার ক্লিপবোর্ডে বা পাঠ্য সম্পাদককে অনুলিপি করুন
   প্রতিধ্বনি $ PS1
2) edit / .Bash_profile সম্পাদনা করুন এবং নীচে শেল কোড যুক্ত করুন, as PS1 প্রতিস্থাপন করে প্রয়োজনীয় হিসাবে but {TERMINAL_TITLE} পরিবর্তনশীলটিকে "ভুয়া" অবস্থায় রাখুন।
3) ফাইলটি সংরক্ষণ করুন এবং হিসাবে TERMINAL_TILE পরিবেশ পরিবর্তনশীল সেট করুন
   TERMINAL_TITLE = "আমার কাস্টম শিরোনাম" রফতানি করুন
4) আপনার বাশ প্রোফাইল উত্স হিসাবে, হিসাবে
   । ~ / .Bash_profile
উপভোগ করুন

যদি [-z "$ ER TERMINAL_TITLE}"]
তারপর
  PS1 = '\ [\ e] 0; \ w \ a \] \ n \ [\ ই [32 মি \] \ ইউ @ \ এইচ \ [\ ই [৩৩ মি \]] \ ডব্লিউ \ [\ ই [0 মি \] \ " n \ $ '
আর
  PS1 = '\ [\ e] 0; ER ER TERMINAL_TITLE} \ a \] \ n \ [\ ই [32 মি \] \ ইউ @ \ এইচ \ [\ ই [৩৩ মি \] \ ডাব্লু \ [m ই [0 মি \ " ] \ n \ $ '
ফাই

1

আমি লিওনেলের উত্তরটি ব্যবহার করেছি, তবে আমি শিরোনামটি কেবল তখনই ঝাঁকুনির সাথে দেখতে পেলাম, যার অর্থ কমপক্ষে ইকো কমান্ড ইচ্ছাকৃতভাবে কাজ করে। ডিবেগ মোড ব্যবহার করে সক্ষম হয়ে আমি ইন্টারেক্টিভ zsh চালিয়েছি

zsh -xv

ডিরেক্টরি পরিবর্তন করে স্পষ্টতই title()পরে precmd()আর chpwd()কার্যকরভাবে তাদের ওভাররাইড করা অন্য একটি ক্রিয়াকলাপের আহ্বান জানায় । তাই আমি এটি আমার .zshrc এ প্লাগ করেছিলাম এবং এটি কাজ করে।

function settitle() {
    echo -ne "\033]2;"$1"\007"
}
function title() {
    settitle $(cygpath -m `pwd`)
}

আপনি ব্যবহার করতে চান chpwd()বা precmd()পরিবর্তে, কেবল শিরোনাম ফাংশন নিষ্ক্রিয়: title(){}


1

আমি স্ক্রিপ্ট চালানোর জন্য মিন্টি ব্যবহার করায় এটির সাথে আমার সমাধানটি ভাগ করতে চেয়েছিলেন।

আমার পুদিনা শর্টকাটটি সেটআপ করা আছে:

C:\cygwin64\bin\mintty.exe -i /Cygwin-Terminal.ico /usr/bin/bash.exe -l -c /scripts/connect.sh

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

connect.sh

#!/bin/bash

echo "Enter servername when prompted"
echo -n "servername: " 
read servername
function settitle() {
    echo -ne "\033]2;"$servername"\007"
}
function title() {
    settitle $(cygpath -m `pwd`)
}
settitle
ssh my_username@$servername

আপনি titleযদি ফাংশনটি ব্যবহার না করেন তবে এটি সংজ্ঞায়িত করবেন কেন ?
pabouk

0

এটি .বাশ_প্রফাইলে যুক্ত করার চেষ্টা করুন

export PROMPT_COMMAND='echo -ne "\033]0;${USER}@${HOSTNAME}:${PWD/#$HOME/~}\007"'

এটা আমার জন্য কাজ করে.


2
প্রশ্নটি উইন্ডো শিরোনাম পরিবর্তন করার বিষয়ে, কোনও কমান্ড প্রম্পট নয়।
কেনারব

1
দয়া করে এটিকে .bash_ প্রোফাইলে যুক্ত করুন, শিরোনাম পরিবর্তনের জন্য এটি ঠিক আছে, ধন্যবাদ!
নেটওয়াটার
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.