> 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.5.0.keyboardtricks/1.5.2.completion.md).

# কমপ্লিশন

শেলের একটা খুব কার্যকারী ক্ষমতা হচ্ছে কমপ্লিশন(Completion)। আপনি কিছুটা লিখে ট্যাব চাপলে কমান্ড বা আর্গুমেন্ট বা ফাইলপাথ শেল নিজেই বাকিটুকু লিখে দেয়। উদাহরণ দেখা যাক বরং:

```
me@howtocode-pc:~$ cd Music
me@howtocode-pc:~/Music$ ls 
Bob Dylan/                                        Soulful-Voice-Arjit-Singh-128Kbps-2014(Songs.PK)/ জাতিস্মর/
Music/                                            Sufi/                                             রতন দা/
Pete Seeger - The Essential Pete Seeger (2005)/   Veer/                                             রবীন্দ্রসঙ্গীত/
Ringtones/                                        জল এর গান/
```

আমরা প্রথমে Music ফোল্ডারে ঢুকেছি। তারপর ls লিখে স্পেস দিয়েছি। ls কমান্ডটি আর্গুমেন্ট হিসেবে ফাইলপাথ নেয়। সেজন্য এরপর আমরা যখন ট্যাব চাপলাম ওই ফোল্ডারে থাকা সকল কিছুর লিস্ট দেখিয়েছে। এখন আমরা যদি ls B পর্যন্ত লিখে ট্যাব দিই, কি হয় দেখুন:

```
me@howtocode-pc:~/Music$ ls Bob\ Dylan/
```

`ls B` লিখে ট্যাব চাপার ফলে ওই ফোল্ডারে B দিয়ে শুরু হওয়া একমাত্র ফোল্ডারটিকে শেল আর্গুমেন্ট হিসবে বেছে নিয়েছে। কিন্তু লক্ষ্য করুন, এখানে 'S' দিয়ে শুরু দুটো ফোল্ডার আছে। সুতরাং \`ls S' পর্যন্ত লিখে কোনটা বেছে নেবে? উত্তর হচ্ছে কোনোটাই বেছে নেবে না। একবার ট্যাব চাপলে কিছুই হবে না আর দুবার চাপলে 'S' দিয়ে শুরু সবকিছুর নাম দেখাবে এভাবে:

```
me@howtocode-pc:~/Music$ ls S
Soulful-Voice-Arjit-Singh-128Kbps-2014(Songs.PK)/ Sufi/                                             
me@howtocode-pc:~/Music$ ls S
```

পরের লাইনে আমরা যদি আবার `ls S` ফিরে এসেছে। এবার যদি `ls Su` লিখে ট্যাব চাপি তাহলে শেল নিশ্চিতভাবে বুঝে যাবে আমরা Sufi বোঝাতে চেয়েছি।

কমপ্লিশন কমান্ডের নাম, পাথনেম ছাড়াও ভেরিয়েবলের ক্ষেত্রেও কাজ করে।
