প্রম্পট রঙ করা

Last updated 4 months ago

সাদাকালো প্রম্পট কতক্ষণ ভালোলাগে? এবার এটাকে রঙ করা যাক। আমরা কিছু ননপ্রিন্টিং ক্যারেক্টার ব্যবহার করে নির্দিষ্ট কিছু রঙের মধ্য থেকে বেছে নিতে পারি। টার্মিনালের টেক্সটে দুইরকম রঙ ব্যবহার করা যায়। ব্যাকগ্রাউন্ড কালার অর্থাৎ টেক্সটের পিছনের রঙ আর টেক্সট কালার বা লেখার রঙ। যেহেতু কালারকোডগুলো ননপ্রিন্টিং ক্যারেক্টার তাই এদের [ এবং ] দিয়ে আবদ্ধ করতে হয়।

এবার দেখা যাক একটি কালারকোড। কালো রঙের কালার কোড হল:

\033[0;30m

এর প্রত্যেকটি অংশের নিশ্চয়ই অর্থ আছে। আসুন দেখে নেয়া যাক:

  • \033: এটা দিয়ে এস্কেপ সিক্যুয়েন্স শুরু হয়। কীবোর্ডে এস্কেপ চাপলে এই কোডই পাঠায় কম্পিউটারকে।

  • [ এবং ;: [ এবং ; এখানে ফরম্যাটিংয়ের কাজে ব্যবহৃত। কোডের তিনটি অংশ যেন মিশে না যায় সেজন্য।

  • 0: এখানে মান হয় 0 হবে অথবা 1। 0 হলে সাধারন রঙ বা নরমাল কালার। আর 1 হলে বোল্ড কালার বা উজ্জ্বল রঙ।

  • 30m: এটি নির্ধারণ করবে কোন রঙ হবে। যেমন 30m কালো রঙ বুঝায়।

টেক্সট কালার

আমরা মোট আটটি সাধারণ ও আটটি উজ্জ্বল রঙ ব্যবহার করতে পারি টেক্সট কালারের জন্য।

সাধারণ রঙ:

কোড

রঙ

\033[0;30m

কালো

\033[0;31m

লাল

\033[0;32m

সবুজ

\033[0;33m

বাদামি

\033[0;34m

নীল

\033[0;35m

বেগুনী

\033[0;36m

সবুজাভ নীল বা সায়ান(Cyan)

\033[0;37m

হালকা ধূসর

উজ্জ্বল রঙ:

কোড

রঙ

\033[1;30m

গাঢ় ধূসর

\033[1;31m

হালকা লাল

\033[1;32m

হালকা সবুজ

\033[1;33m

হলুদ

\033[1;34m

হালকা নীল

\033[1;35m

হালকা বেগুনী

\033[1;36m

হালকা সায়ান

\033[1;37m

সাদা

ব্যাকগ্রাউন্ড কালার

ব্যাকগ্রাউন্ড কালারে কোনো উজ্জ্বল রঙ নেই। তাই মোট আটটি রঙ। এর কোড হচ্ছে:

কোড

রঙ

\033[0;40m

কালো

\033[0;41m

লাল

\033[0;42m

সবুজ

\033[0;43m

বাদামি

\033[0;44m

নীল

\033[0;45m

বেগুনী

\033[0;46m

সবুজাভ নীল বা সায়ান(Cyan)

\033[0;47m

হালকা ধূসর

এর বাইরেও একটি কালারকোড আছে যেটি হল \033[0m যা ডিফল্ট রঙে ফেরত আনে।

এবার হাতে কলমে এর ব্যবহার দেখা যাক। গত লেসন(2.2.1.customize.md) আমাদের সর্বশেষ প্রম্পটি ছিল:

PS1="\@ \u@\h->[\W]{\!}\$ "

যদি এটিকে আমরা উজ্জ্বল লাল রঙ দিতে চাই তাহলে আমাদের \033[1;31m ব্যবহার করতে হবে। এবং এটি ননপ্রিন্টিং ক্যারেক্টার বলে [ ও ] দ্বারা আবদ্ধ করতে হবে। অর্থাৎ এটা হবে [\033[1;31m]। এবার তাহলে চেষ্টা করা যাক:

01:02 PM utsob@Codex-Zigus->[~]{94}$ PS1="\[\033[1;31m\]\@ \u@\h->[\W]{\!}\$ "
01:03 PM utsob@Codex-Zigus->[~]{95}$

এবার আপনি দেখতে পারবেন প্রম্পটি লাল হয়ে গেছে। একইভাবে আমরা ব্যাকগ্রাউন্ড কালারও চেঞ্জ করতে পারি। তবে এখনো আমাদের একটি সমস্যা আছে। এরপরের সব লেখাও লাল হয়ে যাচ্ছে। অর্থাৎ আমাদের ঠিক করে দিতে হবে কোনপর্যন্ত রঙ হবে। আমরা প্রম্পটের শেষে যদি \033[0m ব্যবহার করি তাহলে ডিফল্ট রঙে ফিরে আসবে:

01:03 PM utsob@Codex-Zigus->[~]{95}$ PS1="\[\033[1;31m\]\@ \u@\h->[\W]{\!}\$\[\033[0m\] "
01:07 PM utsob@Codex-Zigus->[~]{96}$

আমরা আসলে প্রম্পটে একাধিক রঙ ব্যবহার করতেই পারি। আমাদের এই প্রম্পটিকেই আমরা অনেকগুলো রঙ দেবো এভাবে:

01:07 PM utsob@Codex-Zigus->[~]{96}$ PS1="\[\033[1;36m\]\@ \[\033[1;31m\]\u\[\033[1;37m\]@\[\033[1;34m\]\h\[\033[1;37m\]->\[\033[1;32m\][\W]\[\033[1;31m\]{\!}\[\033[1;34m\]\$\[\033[0m\] "
01:12 PM utsob@Codex-Zigus->[~]{97}$

রীতিমত ভয়ংকর দেখাচ্ছে PS1 ভেরিয়েবলটি। তাইনা? আসুন ভেঙে দেখি:

কোড

অর্থ

\[\033[1;36m\]

হালকা সায়ান রঙের কোড।

\@

AM/PM এর হিসেবে সময়। এর আগে সায়ান রঙের কোড থাকায় এটি হালকা সায়ান রঙে আসবে।

\[\033[1;31m\]

হালকা লাল রঙের কোড।

\u

ইউজারনেম। আগে হালকা লালের কোড থাকায় এটি হালকা লাল রঙে আসবে।

\[\033[1;37m\]

সাদা রঙের কোড।

@

'@' চিহ্ন। আগে সাদা রঙের কোড থাকায় এটি সাদা রঙে আসবে।

\[\033[1;34m\]

হালকা নীল রঙের কোড।

\h

হোস্টনেমের শেষাংশ। আগে হালকা নীলের কোড থাকায় এটি হালকা নীল রঙে আসবে।

\[\033[1;37m\]

সাদা রঙের কোড

->

'->' চিহ্ন। আগে সাদা রঙের কোড থাকায় এটি সাদা রঙে আসবে।

\[\033[1;32m\]

হালকা সবুজ রঙের কোড।

[\W]

বর্তমান ওয়ার্কিং ডিরেক্টরির শেষাংশ। আগে হালকা সবুজের কোড থাকায় এটি হালকা সবুজ রঙে আসবে।

\[\033[1;31m\]

হালকা লাল রঙের কোড।

{\!}

হিস্ট্রি নাম্বার। আগে হালকা লালের কোড থাকায় এটি হালকা লাল রঙে আসবে।

\[\033[1;34m\]

হালকা নীল রঙের কোড।

\$

শেল মোড। আগে হালকা নীলের কোড থাকায় এটি হালকা নীল রঙে আসবে।

\[\033[0m\]

ডিফল্ট রঙে ফিরে যাওয়ার কোড