> 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/1.0.0.part1intro/1.1.0.basic/1.1.1.shell.md).

# শেল ও প্রম্পট

## শেল কি?

আমরা যখন কমান্ডলাইনের কথা বলি তখন আমরা আসলে শেলের কথা বলি। শেল হচ্ছে একটি ছোট্ট প্রোগ্রাম যা কীবোর্ড থেকে কমান্ড অপারেটিং সিস্টেমকে পৌঁছে দেয়।

একসময় স্টিভ বর্ন নামের একজন প্রোগ্রামার sh নামে একটি শেল প্রোগ্রাম লেখেন ইউনিক্স অপারেটিং সিস্টেমের জন্য। পরে GNU প্রোজেক্ট bash নামে তারই একটি উন্নত সংস্করণ তৈরী করে। যার পুরো নাম "Bourne Again Shell"। এখনকার প্রায় সব লিনাক্স অপারেটিং সিস্টেমে bash ডিফল্টভাবে দেয়া থাকে।

## টার্মিনাল ইমুলেটর

যখন আমরা গ্রাফিকাল ইউজার ইন্টারফেস ব্যবহার করি তখন শেলকে ব্যবহার করতে আমাদের আরেকটি প্রোগ্রাম প্রয়োজন পড়ে। টার্মিনাল ইমুলেটর বা টার্মিনাল। সব গ্রাফিকাল ইন্টারফেসওয়ালা লিনাক্স ডিস্ট্রিবিউশনে একাধিক টার্মিনাল ইমুলেটর(এখন থেকে আমরা টার্মিনাল ইমুলেটর না বলে সংক্ষেপে শুধু টার্মিনাল বলবো।) ইন্সটল করাই থাকে। যেমন KDE তে konsole বা GNOME এ gnome-terminal।

### প্রম্পট

আপনি যখন কোনো টার্মিনাল ওপেন করবেন এমনকিছু দেখবেন:

```
me@howtocode-pc:~$
```

দুর্বোধ্য লাগছে? ব্যাখ্যা করছি। আপনি হয়ত একইরকম দেখবেন না। ফরম্যাটটা একইরকম হবে অধিকাংশ লিনাক্স টার্মিনালে। ফরম্যাটটি হল `username@hostname:Working_directoryUserPrivilege`। আসুন, কাটাছেঁড়া করে দেখি।

* **username:** এটা হচ্ছে টার্মিনাল ব্যবহারকারীর ইউজারনেম। এখানে 'me'।
* **hostname:** হোস্টনেম হচ্ছে কম্পিউটারকে দেয়া একটি নাম। এই নামটি নেটওয়ার্কেও দেখায়। এখানে 'howtocode-pc'
* **Working\_directory:** সহজ ভাষায় এটা হচ্ছে এখন এই শেলে আপনি কম্পিউটারের কোন ফোল্ডার বা ডিরেক্টরিতে আছেন। এখানে '\~'। উল্লেখ্য, '\~' এই চিহ্ন দিয়ে বর্তমান ইউজারের হোম ডিরেক্টরি বুঝায়।
* **UserPrivilege:** লিনাক্সে দুরকম ইউজার হয় সাধারণত। সাধারণ ব্যবহারকারী যার জন্য '$' চিহ্ন এবং সর্বময় ক্ষমতার অধিকারী রুট ইউজার বা সুপারইউজার বা এডমিনিস্ট্রেটর যার জন্য '#' চিহ্ন।

তাহলে পুরো প্রম্পটটা কি বোঝাতে চাইছে? এটা বলতে চাচ্ছে, **me** নামের একজন সাধারণ ইউজার **howtocode-pc** নামের একটি কম্পিউটারে তার নিজের হোম ডিরেক্টরীতে কাজ করছে।

যখনি আপনি দেখবেন টার্মিনালে প্রম্পটের পর আপনার কার্সর আপনি বুঝবেন সে আপনার কমান্ড নিতে প্রস্তুত। টার্মিনাল যতক্ষণ কাজ করে নতুন কোনো প্রম্পট দেখায় না। কাজ শেষ করলে আবার প্রম্পটটি ফিরে আসে।

টার্মিনাল বন্ধ করতে লিখুন `exit`।

## টার্মিনালে কীবোর্ড ও মাউসের ব্যবহার

| কী(key)         | কমান্ড                                                                          |
| --------------- | ------------------------------------------------------------------------------- |
| Up arrow key    | কমান্ড হিস্ট্রির পূর্ববর্তী কমান্ডটি প্রম্পটে নিয়ে আসে।                         |
| Down arrow key  | কমান্ড হিস্ট্রির পরবর্তী কমান্ড প্রম্পটে নিয়ে আসে।                              |
| Left arrow key  | প্রম্পটে কার্সর এক অক্ষর পিছনে আনে।                                             |
| Right arrow key | প্রম্পটে কার্সর এক অক্ষর সামনে আনে।                                             |
| Ctrl-c          | টার্মিনালে চলতে থাকা কাজ সম্পূর্ণরূপে বন্ধ করে।                                 |
| Ctrl-z          | টার্মিনালে চলতে থাকা কাজ সাময়িকভাবে বন্ধকরে পরবর্তীতে চাইলে আবার চালু করা যাবে। |
| Ctrl-Shift-c    | কপি।                                                                            |
| Ctrl-Shift-v    | পেস্ট।                                                                          |
