উত্তর:
আপনার শেল উপর নির্ভর করে।
এই নিবন্ধটি একাধিক পদ্ধতি প্রদর্শন করে।
আমি ব্যক্তিগতভাবে zsh ব্যবহার করি যা প্রতিটি প্রম্পটের আগে চালিত একটি সুবিধাজনক প্রাকমডি () ফাংশন রয়েছে।
precmd () { print -Pn "\e]2;%n@%M | %~\a" } # title bar prompt
যদিও অন্যান্য প্রশ্নগুলি বাশ পদ্ধতিগুলি তালিকাবদ্ধ করে, তারা সিডির উপাধি দেয়। বাশ একটি অন্তর্নিহিত পদ্ধতি সরবরাহ করে যা কেবলমাত্র প্রম্পটটিকে বন্ধ করে দেয়।
সজোরে আঘাত
বাশ একটি পরিবর্তনশীল PROMPT_COMMAND সরবরাহ করে যা প্রম্পটের আগে সম্পাদন করার জন্য একটি কমান্ড ধারণ করে। এই উদাহরণ (~ / .bashrc sertedোকানো) শিরোনামটি "ব্যবহারকারীর নাম @ হোস্টনাম: ডিরেক্টরি" তে সেট করে:
PROMPT_COMMAND='echo -ne "\033]0;${USER}@${HOSTNAME}: ${PWD}\007"'
যেখানে S 033 হ'ল ESC এর অক্ষর কোড এবং BEL এর জন্য 7 007। এখানে উল্লেখ্য যে উদ্ধৃতিটি গুরুত্বপূর্ণ: ভেরিয়েবলগুলি "..." তে প্রসারিত হয় এবং '...' তে প্রসারিত হয় না। সুতরাং PROMPT_COMMAND অপরিবর্তিত মান হিসাবে সেট করা আছে, তবে PROMPT_COMMAND ব্যবহার করা হলে "..." এর ভিতরে ভেরিয়েবলগুলি প্রসারিত হয়।
তবে পিডব্লিউডি সম্পূর্ণ ডিরেক্টরি পাথ উত্পাদন করে। আমরা যদি '~' শর্টহ্যান্ড ব্যবহার করতে চাইলে আমাদের প্রম্পটে এস্কেপ স্ট্রিং এম্বেড করা দরকার যা শেল দ্বারা প্রদত্ত নিম্নলিখিত প্রম্পট বিস্তারের সুযোগ নিতে আমাদের সহায়তা করে:
\u expands to $USERNAME
\h expands to hostname up to first '.'
\w expands to directory, replacing $HOME with '~'
\[...\] embeds a sequence of non-printing characters
সুতরাং, নিম্নলিখিতটি "বাশ $" এর একটি প্রম্পট এবং "ইউজারনেম @ হোস্টনাম: ডিরেক্টরি" এর একটি এক্সটার্ম শিরোনাম উত্পাদন করে ...
case $TERM in
xterm*)
PS1="\[\033]0;\u@\h: \w\007\]bash\$ "
;;
*)
PS1="bash\$ "
;;
esac
[...] এর ব্যবহারটি নোট করুন, যা প্রম্পটের প্রস্থের দৈর্ঘ্য গণনা করার সময় প্রিন্টিং নিয়ন্ত্রণের অক্ষরগুলিকে উপেক্ষা করতে বাশকে বলে tells অন্যথায় লাইন সম্পাদনা কমান্ডগুলি কার্সার রাখার সময় বিভ্রান্ত হয়।
~/.profile
এটি দূরবর্তী মেশিনে আপনার (বা সমমানের) ফাইলে রাখতে হবে।
ফাইলটিতে অনুলিপি করুন এবং আটকান:
PROMPT_COMMAND="echo -ne \"\033]0;${PWD##*/}\007\"; $PROMPT_COMMAND"
এটি আপনার যে ফোল্ডারে (পুরো পাথ নয়) এর নামে বর্তমান টার্মিনাল ট্যাবটির শিরোনাম সেট করবে।
সুতরাং ...
Developer/Applications/Utilities/Bluetooth/
হয়ে যায়>Bluetooth
ম্যাক ওএস এক্স লায়ন 10.7 হিসাবে, টার্মিনালটিতে ওয়ার্কিং ডিরেক্টরি সেট করার জন্য স্পষ্টভাবে পালানোর ক্রম রয়েছে, যা টার্মিনাল স্ট্যান্ডার্ড উইন্ডো "প্রক্সি" আইকনটি ব্যবহার করে প্রদর্শন করে। এটি আপনাকে পথটি দেখতে, ফাইন্ডারে প্রকাশ করতে বা অন্য কোনও ফোল্ডারের মতো এটিকে টেনে আনতে কমান্ড-ক্লিক করতে সক্ষম করে। এছাড়াও, টার্মিনাল এটি একই ডিরেক্টরিতে অন্য একটি টার্মিনাল তৈরি করতে এবং টার্মিনালটি পুনরায় চালু / পুনঃসূচনা করার সময় (যখন পুনরায় চালু করা সক্ষম হয়) কাজ করার ডিরেক্টরিটি পুনরুদ্ধার করতে এটি ব্যবহার করতে পারে। এটি উইন্ডো গ্রুপগুলির জন্য ডিরেক্টরিগুলি পুনরুদ্ধার সক্ষম করে।
এটি উইন্ডো এবং ট্যাব শিরোনাম হিসাবে একই অপারেটিং সিস্টেম কমান্ড (ওএসসি) এর পালানোর ক্রম, তবে প্রথম প্যারামিটারটি 7 এ সেট করা হয়েছে, মানটি একটি "ফাইল:" ইউআরএল হওয়া উচিত, যা শতাংশ-এনকোডিং বিশেষ অক্ষরগুলিকে সক্ষম করে যাতে এটি পরিচালনা করতে পারে সমস্ত বৈধ পথের নাম। আপনার হোস্টের নামটিও অন্তর্ভুক্ত করা উচিত যাতে টার্মিনাল এটি স্থানীয় ডিরেক্টরি কিনা তা নির্ধারণ করতে পারে; টার্মিনাল এটি অন্য কোনও হোস্টের থেকে থাকলে এটি বর্তমান চলমান ডিরেক্টরি হিসাবে ব্যবহার করা এড়াবে।
সম্পর্কিত নোটে, টার্মিনাল একইভাবে represented এর পরামিতি সহ ওএসসি এস্কেপ ক্রমটি ব্যবহার করে "উপস্থাপিত ফাইল" সেট করা সমর্থন করে set উদাহরণস্বরূপ, প্রক্সি আইকনে বর্তমানে প্রদর্শিত ফাইল / বাফার প্রতিফলিত করার জন্য আমার কাছে ইমাস এবং কম কনফিগার করা আছে। এটি এই টিটিটি-ভিত্তিক প্রোগ্রামগুলিকে পার্শ্ববর্তী ওএসের সাথে আরও সংহত করতে সক্ষম করে।
ওয়ার্কিং ডিরেক্টরি আচরণগুলি ব্যাশের জন্য ডিফল্টরূপে সক্ষম করা হয় (ম্যাক ওএস এক্সে ডিফল্ট শেল)। সম্পর্কিত কোডের জন্য / ইত্যাদি / বাশার্ক দেখুন rc
এটি সম্ভবত উল্লেখ করার মতো যে লায়ন টার্মিনাল এখন ওএসসি এস্কেপ ক্রমটি ব্যবহার করে উইন্ডো শিরোনাম থেকে স্বতন্ত্রভাবে ট্যাব শিরোনাম নির্ধারণকে সমর্থন করে।
update_terminal_cwd
ফাংশন সাম্প্রতিক কাজ করা প্রক্সি আইকন সেট হবে। ডিফল্টরূপে $PROMPT_COMMAND
হয় update_terminal_cwd
।
আপনি অ্যাপল টার্মিনাল নির্দিষ্ট অপারেটিং সিস্টেম কমান্ড এস্কেপ সিকোয়েন্স ব্যবহার করার পরামর্শ দেওয়ার পাশাপাশি: ESC ] Ps ; Pt BEL
কোথায় Ps
আছেন 7
এবং Pt
এটি একটি file:
ইউআরএল; এটি ম্যাক ওএস এক্স 10.11 (এবং সম্ভবত 10.7 সাল থেকে) যুক্ত করার মতো বিষয় রয়েছে যা একটি ফাইল /etc/bashrc_Apple_Terminal
(10.11 এর অধীনে অযোগ্য) রয়েছে যা সুবিধাজনক update_terminal_cwd()
হিসাবে (মন্তব্য ছাড়াই ) সংজ্ঞায়িত করেছে :
update_terminal_cwd ()
{
local url_path='';
{
local i ch hexch LC_CTYPE=C LC_ALL=;
for ((i = 0; i < ${#PWD}; ++i))
do
ch="${PWD:i:1}";
if [[ "$ch" =~ [/._~A-Za-z0-9-] ]]; then
url_path+="$ch";
else
printf -v hexch "%02X" "'$ch";
url_path+="%${hexch: -2:2}";
fi;
done
};
printf '\e]7;%s\a' "file://$HOSTNAME$url_path"
}
আপনি এটি আপনার রিমোট বাক্সগুলিতেও ব্যবহার করতে পারেন, আপনি যদি এমনটি করার কথা ভাবছিলেন এবং তারপরে ব্যাশ-এ ফাইলের URL টি সঠিকভাবে এনকোড করার জন্য আপনার মাথা আঁচড়ান।
এবং যদি আপনি PROMPT_COMMAND
নিজের পরিবর্তিত হন .bash_profile
বা .bashrc
আপনি এটি কল করতে ভুলে যেতে পারেন। একই ফাইলটিতে তারা এটিকে আরও ভালভাবে শৃঙ্খলিত করার উদাহরণ দেখায়:
PROMPT_COMMAND="update_terminal_cwd${PROMPT_COMMAND:+; $PROMPT_COMMAND}"
ব্যক্তিগতভাবে আমার মধ্যে .bash_profile
আমি গিট প্রম্পটটি যুক্ত করতে চেয়েছিলাম তাই আমি এটি করেছি:
local git_path=/Applications/Xcode.app/Contents/Developer/usr/share/git-core
for f in $git_path/git-completion.bash $git_path/git-prompt.sh
do
if [[ -f "$f" ]]; then
. "$f"
fi
done
get_sha() {
git rev-parse --short HEAD 2>/dev/null
}
if [ "function" = $(type -t __git_ps1) ]; then
export GIT_PS1_SHOWDIRTYSTATE=1
GIT_PS1_SHOWSTASHSTATE=1
GIT_PS1_SHOWUNTRACKEDFILES=1
GIT_PS1_SHOWCOLORHINTS=1
GIT_PS1_DESCRIBE_STYLE="branch"
GIT_PS1_SHOWUPSTREAM="auto git"
export PROMPT_COMMAND="$PROMPT_COMMAND${PROMPT_COMMAND:+; }"'__git_ps1 "\[\e[0;32m\]\u\[\e[1;32m\]@\h\[\e[0m\]:\[\e[0;34m\]\w\[\e[0m\]" "\$ " "\n{%s $(get_sha)}"'
fi
ডিরেক্টরিতে যদি ইউনিকোড অক্ষর থাকে (কমপক্ষে তুষার চিতাবাঘে) PS1 এবং PROMPT_COMMAND জড়িত বাশ সমাধানগুলি ব্যর্থ হয়। আমি যে সর্বোত্তম সমাধানটি নিয়ে আসতে পারি তা হ'ল এর সমতুল্য করা
PS1="\[\033]0;\`pwd | tr -dC '[\000-\177]'\`\007\]\$ "
দুর্ভাগ্যক্রমে এটি সরাসরি কাজ করে না, সুতরাং পরিবর্তে আমি tr
কলটি করতে শেল ফাংশনটি সংজ্ঞায়িত করেছি :
termtitlefilter () { tr -dC '[\000-\177]'; }
PS1="\[\033]0;\`pwd | termtitlefilter\`\007\]\$ "
এটি লাতিন উচ্চারণগুলির জন্য ভাল কাজ করে যা ইউনিকোড এনএফডিতে থাকবে (অ্যাকসেন্টগুলি অদৃশ্য হয়ে যাবে তবে অন্তর্নিহিত ল্যাটিন চরিত্রটি থাকবে)।
দুর্ভাগ্যক্রমে, এটি চাইনিজদের মতো জিনিসগুলির জন্য পুরোপুরি ব্যর্থ হবে।
ধরে নিই যে আপনি ডিফল্ট ম্যাক টার্মিনালটি ব্যবহার করছেন, আপনি যখনই একটি নতুন ট্যাব খুলবেন তখন নিজে থেকেই "সেট_প্রম্পট" আপনাকে মূল ফোল্ডারে প্রেরণ করতে পারে কারণ আপনি নীচের একটিটি ব্যবহার করতে পারেন pr
set_prompt () {
BASE_PATH="${PWD##*/}"
echo -ne "\033]0;$BASE_PATH\007"
}
set_my_tab () {
update_terminal_cwd
set_prompt
}
PROMPT_COMMAND=set_my_tab
আপনার ~ /। প্রোফাইল বা সমতুল্য ফাইলটিতে এটি প্রবেশ করুন:
function settitle() { echo -n "]0;$@"; }
function cd() { command cd "$@"; settitle `pwd -P`; }
export PS1='\W \$ '
settitle `pwd`
প্রথম লাইনে দুটি বিশেষ অক্ষর রয়েছে যা অনুলিপি / আটকানো যায় না, তবে আপনি এখানে থেকে পাঠ্যটি ডাউনলোড করতে পারেন: http://blog.nottoobadsoftware.com/files/setterminaltitle.sh ।
echo
ব্যবহারের পরিবর্তে printf
, যা আপনাকে এই অক্ষরগুলি (এসএসসি এবং বিইএল / কন্ট্রোল-জি) অব্যাহতিক্রমের সাথে প্রকাশ করতে দেয়:printf '\e]0;$@\a"