> For the complete documentation index, see [llms.txt](https://sh.howtocode.dev/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://sh.howtocode.dev/2.0.0.part2intro/2.2.0.customprompt/2.2.2.colorprompt.md).

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

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

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

```
\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\]`    | ডিফল্ট রঙে ফিরে যাওয়ার কোড                                                              |
