zsh
এটা চেষ্টা কর:
setopt PROMPT_SUBST
PROMPT='%{$(pwd|grep --color=always /)%${#PWD}G%} %(!.%F{red}.%F{cyan})%n%f@%F{yellow}%m%f%(!.%F{red}.)%#%f '
এখানে প্রম্পটের একটি ভাঙ্গন রয়েছে:
- PROMPT_SUBST প্রম্পটে কমান্ড প্রতিস্থাপন চালু করে (এবং প্যারামিটার সম্প্রসারণ এবং পাটিগণিত সম্প্রসারণ)
%{...%}
- একটি অব্যাহতি ক্রম
$(pwd|grep --color=always /)
- বর্তমান ডিরেক্টরি মুদ্রণ করুন এবং হাইলাইট করুন /
- রঙটি $ GREP_COLORS পরিবেশের পরিবর্তনশীল (বা এর ডিফল্ট মান) এর উপর নির্ভর করবে - গা bold় লালটি ডিফল্ট
%${#PWD}G
- বর্তমান ডিরেক্টরিটির নামের অক্ষরগুলির দৈর্ঘ্যকে একটি গ্লুক মান হিসাবে ব্যবহার করুন। এটি %{
শেলটিকে এআরএসআই এর অব্যাহতি সিকোয়েন্স অন্তর্ভুক্ত স্ট্রিংয়ের আসল দৈর্ঘ্যের পরিবর্তে পূর্বের অক্ষর ক্রমের দৈর্ঘ্য (" " পরে ) বিবেচনা করে তোলে । এটি শেলটি প্রম্পটের শেষের সাথে সম্পর্কিত কার্সারের অবস্থান সম্পর্কে বিভ্রান্ত হতে বাধা দেয়।
- - - - - - - - এটি আপনার প্রশ্নের উত্তর দেয় এমন অংশের সমাপ্তি - - - - - - - -
%(!.%F{red}.%F{cyan})
- যদি এটি কোনও সুবিধাযুক্ত শেল (মূল) হয় তবে অগ্রভাগের রঙটি লালকে সেট করুন, অন্যথায় সায়ান
%n
- আউটপুট ব্যবহারকারীর নাম
%f
- অগ্রভাগের রঙটি ডিফল্টে পুনরায় সেট করুন
@
- একটি আক্ষরিক চিহ্ন
%F{yellow}
- অগ্রভাগের রঙটি হলুদ করুন
%m
- হোস্টনাম আউটপুট
%f
- অগ্রভাগের রঙটি ডিফল্টে পুনরায় সেট করুন
%(!.%F{red}.)
- যদি এটি কোনও সুবিধাযুক্ত শেল (মূল) হয় তবে অগ্রভাগের রঙটি লালকে সেট করুন
%#
- একটি সুবিধাযুক্ত #
শেলের %
জন্য বা একটি অনিবদ্ধদের জন্য আউটপুট এ
%f
- অগ্রভাগের রঙটি ডিফল্টে পুনরায় সেট করুন
আমি জোর দেওয়ার জন্য এই প্রম্পটে প্রথমে পথটি রেখেছি, যেহেতু প্রশ্নটি পথটিকেই উদ্বেগিত করে।
এখানে zsh এর একটি সংস্করণ রয়েছে যা $GREP_COLORS
ভেরিয়েবলটি পরিচালনা করে আপনি মূল (বিশেষাধিকারপ্রাপ্ত) কিনা তার উপর নির্ভর করে স্ল্যাশের বর্ণ পরিবর্তন করে:
setopt PROMPT_SUBST
PROMPT='%{$(pwd|([[ $EUID == 0 ]] && GREP_COLORS="mt=01;31" grep --color=always /|| GREP_COLORS="mt=01;34" grep --color=always /))%${#PWD}G%} %(!.%F{red}.%F{cyan})%n%f@%F{yellow}%m%f%(!.%F{red}.)%#%f '
সজোরে আঘাত
আপনি বাশে একই অনুরোধ জানাতে পারেন। এই উদাহরণস্বরূপ, আমি ইউজার এবং হোস্টনামটি প্রথমে রেখেছি এবং ইউআইডি 0 হলে স্ল্যাশগুলির রঙও বদলে যায় War সতর্কতা: এটি বাশের $PS1
প্রম্পট ভেরিয়েবলটিকে ওভাররাইট করে । আপনি কোনও বিশেষ কিছু না করা বা আপনি যখন সেই পরিবর্তনশীলটি সরাসরি সেট করেন এবং এটি কার্যকর হয় তখন আপনি আচরণটি পরিবর্তনের প্রত্যাশা না করলে সমস্যাটি হওয়া উচিত নয়। এছাড়াও, এটি " usercolor
" নামক একটি ভেরিয়েবল ব্যবহার করে যা অন্য কোনও কিছুর সাথে সংঘর্ষিত হতে পারে, যদিও এই পুরো জিনিসটি একটি ফাংশনে রাখা যেতে পারে এবং ভেরিয়েবলটিকে স্থানীয় হিসাবে ঘোষণা করা হয়।
PROMPT_COMMAND='usercolor="\[\033[0;36m\]";[[ $EUID == 0 ]] && usercolor="\[\033[1;31m\]";PS1="$(pwd)";PS1="$usercolor\u\[\033[0m\]@\[\033[0;33m\]\h\[\033[0m\]:${PS1//\//$usercolor/\[\033[0m\]}$usercolor\\$\[\033[0m\] "'
শর্তসাপেক্ষে স্ল্যাশগুলিকে রঙিন করার জন্য (গ্রেপ ব্যবহারের পরিবর্তে) বাশের প্যারামিটার সম্প্রসারণ বিকল্পটি ব্যবহার করার জন্য zsh এর "গ্লাইচ" বৈশিষ্ট্যটি নেই বলে আমি এই সুবিধাটি নিয়েছি।