PROMPT_COMMAND এ সাধারণ ব্যাশ স্টেটমেন্ট থাকতে পারে যেখানে PS1 ভেরিয়েবলটিতে ভেরিয়েবলের হোস্ট নেম জন্য '\ h' এর মতো বিশেষ অক্ষরও থাকতে পারে।
উদাহরণস্বরূপ এখানে আমার বাশ প্রম্পট যা উভয়ই PROMPT_COMMAND এবং PS1 ব্যবহার করে। PROMPT_COMMAND এ থাকা বাশ কোডটি আপনি কী গিট শাখায় থাকতে পারেন তা প্রকাশ করে এবং প্রম্পটে প্রদর্শিত হয়, শেষ রানের প্রক্রিয়াটির প্রস্থান স্থিতি, পিডাব্লুডির হোস্টনাম এবং বেসনামের সাথে। পরিবর্তনশীল আরইটি শেষ সম্পাদিত প্রোগ্রামের রিটার্ন মান সঞ্চয় করে। টার্মিনালে আমি যে গত প্রোগ্রামটি চালিয়েছিলাম তাতে কোনও ত্রুটি এবং ত্রুটি কোড ছিল কিনা তা দেখতে সুবিধাজনক। সম্পূর্ণ PROMPT_COMMAND এক্সপ্রেশনটির চারপাশে বাইরেরটি নোট করুন। এটি পিএস 1 অন্তর্ভুক্ত করে যাতে এই পরিবর্তনকটি প্রতিবার PROMPT_COMMAND ভেরিয়েবলটি মূল্যায়ন করা হয়।
PROMPT_COMMAND='RET=$?;\
BRANCH="";\
ERRMSG="";\
if [[ $RET != 0 ]]; then\
ERRMSG=" $RET";\
fi;\
if git branch &>/dev/null; then\
BRANCH=$(git branch 2>/dev/null | grep \* | cut -d " " -f 2);\
fi;
PS1="$GREEN\u@\h $BLUE\W $CYAN$BRANCH$RED$ERRMSG \$ $LIGHT_GRAY";'
উদাহরণ আউটপুটটি নন-গিট ডিরেক্টরিতে এটির মতো দেখাচ্ছে:
sashan@dhcp-au-122 Documents $ false
sashan@dhcp-au-122 Documents 1 $
এবং গিট ডিরেক্টরিতে আপনি শাখার নাম দেখতে পাবেন:
sashan@dhcp-au-122 rework mybranch $
হালনাগাদ
মন্তব্য এবং বব এর উত্তর পড়ার পরে আমি মনে করি যে তিনি বর্ণনা হিসাবে এটি লেখার চেয়ে ভাল। আমি প্রথমে যা লিখেছি তার চেয়ে এটি আরও রক্ষণাবেক্ষণযোগ্য, যেখানে PS1 ভেরিয়েবলটি PROMPT_COMMAND এর মধ্যে সেট করা আছে, যা নিজেই একটি সুপার জটিল স্ট্রিং যা বাশ দ্বারা রানটাইম সময়ে মূল্যায়ন করা হয়। এটি কাজ করে, তবে এটি হওয়া দরকারের চেয়ে জটিল। ন্যায়সঙ্গত হওয়ার জন্য আমি লিখেছিলাম যে PROMPT_COMMAND আমার জন্য প্রায় 10 বছর আগে এবং এটি কাজ করেছে এবং এটি সম্পর্কে খুব বেশি ভাবেনি।
আমি কীভাবে আমার জিনিসগুলি সংশোধন করেছি সে সম্পর্কে কৌতুহলকারীদের জন্য, আমি মূলত PROMPT_COMMAND এর জন্য পৃথক ফাইলে কোড রেখেছি (বব বর্ণিত হিসাবে) এবং তারপরে আমি PS1 হওয়ার ইচ্ছার স্ট্রিংটি প্রতিধ্বনিত করেছি:
GREEN="\[\033[0;32m\]"
CYAN="\[\033[0;36m\]"
RED="\[\033[0;31m\]"
PURPLE="\[\033[0;35m\]"
BROWN="\[\033[0;33m\]"
LIGHT_GRAY="\[\033[0;37m\]"
LIGHT_BLUE="\[\033[1;34m\]"
LIGHT_GREEN="\[\033[1;32m\]"
LIGHT_CYAN="\[\033[1;36m\]"
LIGHT_RED="\[\033[1;31m\]"
LIGHT_PURPLE="\[\033[1;35m\]"
YELLOW="\[\033[1;33m\]"
WHITE="\[\033[1;37m\]"
RESTORE="\[\033[0m\]" #0m restores to the terminal's default colour
if [ -z $SCHROOT_CHROOT_NAME ]; then
SCHROOT_CHROOT_NAME=" "
fi
BRANCH=""
ERRMSG=""
RET=$1
if [[ $RET != 0 ]]; then
ERRMSG=" $RET"
fi
if which git &>/dev/null; then
BRANCH=$(git branch 2>/dev/null | grep \* | cut -d " " -f 2)
else
BRANCH="(git not installed)"
fi
echo "${GREEN}\u@\h${SCHROOT_CHROOT_NAME}${BLUE}\w \
${CYAN}${BRANCH}${RED}${ERRMSG} \$ $RESTORE"
এবং আমার .bashrc এ
function prompt_command {
RET=$?
export PS1=$(~/.bash_prompt_command $RET)
}
PROMPT_DIRTRIM=3
export PROMPT_COMMAND=prompt_command
if git branch &>/dev/null ; then\। এটি স্টডআউট এবং স্ট্ডার উভয়ই / dev / নালকে পুনঃনির্দেশ করে। tldp.org/LDP/abs/html/io-redirection.html