> 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.3.history.md).

# কমান্ড হিস্ট্রি

আমরা যেসব কমান্ড শেলে দিই, শেল সেগুলোকে মনে রাখে। সাধারণত শেষ ৫০০ কমান্ড শেল সংরক্ষণ করে .bash\_history নামে একটি বিশেষ ফাইলে। আমরা আপার এ্যারো কী চেপে একটা একটা করে কমান্ড দেখতে পারি। বা **history** কমান্ড দিয়ে সম্পূর্ণ লিস্টটি দেখতে পারি। তবে এই দীর্ঘ লিস্টি কমান্ডলাইনে স্বাভাবিকভাবে দেখা বেশ ঝামেলার। ভালো উপায় হল এর আউটপুট কে **less** কমান্ডে রিডিরেক্ট করে দেখা:

```
me@howtocode-pc:~$ history | less
```

আমরা চাইলে হিস্ট্রির মধ্যে **grep** দিয়ে কোনো প্যাটার্ন খুঁজে দেখতে পারি। যেমন আমরা যদি চাই সেইসব কমান্ড দেখবো যার মধ্যে **/usr/bin** আছে তবে লিখবো:

```
me@howtocode-pc:~$ history | grep /usr/bin
```

এর মধ্যে ৫৯৯ লাইনে আমি এই কমান্ডটি পেয়েছি:

**599 ls -l /usr/bin/ > ls-output.txt**

আমরা কোনো কমান্ডকে তার লাইন নম্বর দিয়েও প্রম্পটে আনতে পারি যদি চাই। যেমন উপরের এই কমান্ডটিকে ডাকতে পারি এভাবে:

```
me@howtocode-pc:~$ !599
ls -l /usr/bin/ > ls-output.txt
```

bash এর একটা অসাধারণ ফিচার হলো ইন্টারএকটিভ রিভার্স ইনক্রিমেন্টাল হিস্ট্রি সার্চ। আসুন দেখা যাক। মনে করুন, স্বাভাবিকভাবে এই আমাদের প্রম্পট:

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

এবার Ctrl-r চাপুন। দেখবেন প্রম্পট এমন হয়ে গেছে:

```
(reverse-i-search)`':
```

এবার আপনি লিখতে থাকুন /usr/bin। দেখবেন প্রতিটা অক্ষর লেখার সাথে সাথে শেল তারসাথে মিলিয়ে শেষ যে কমান্ডটি এক্সিকিউট করেছে দেখাবে। আপনি এখান থেকে কপি করতে পারবেন বা এন্টার চাপলে কমান্ডটি আবার এক্সিকিউট হবে। এবার দেখা যাক হিস্ট্রি ব্যবাহারের জন্য কিছু কীবোর্ড শর্টকার্ট:

| কী     | কার্যকারিতা                                                                                                                                       |
| ------ | ------------------------------------------------------------------------------------------------------------------------------------------------- |
| Ctrl-p | পূর্ববর্তী কমান্ড দেখাবে। আপ এ্যারো কী চাপলেও একই ব্যাপার ঘটবে।                                                                                   |
| Ctrl-n | পরবর্তী কমান্ড দেখাবে। ডাউন এ্যারো কী চাপলেও একই ব্যাপার ঘটবে।                                                                                    |
| Alt-<  | হিস্ট্রি লিস্টের প্রথম কমান্ডে যাবে।                                                                                                              |
| Alt->  | হিস্ট্রি লিস্টের শেষ অবস্থান অর্থাৎ বর্তমান প্রম্পটে ফিরে আসবে।                                                                                   |
| Ctrl-r | রিভার্স ইনক্রিমেন্টাল সার্চ প্রম্পট আসবে।                                                                                                         |
| Alt-p  | ননইনক্রিমেন্টাল রিভার্স সার্চ। অর্থাৎ আপনাকে সার্চ টার্ম লিখে এন্টার দিতে হবে এবং আপনি ওই সার্চ টার্মের সাথে মেলে এমন শেষ কমান্ডটি পাবেন।         |
| Alt-n  | ফরওয়ার্ড সার্চ, ননইনক্রিমেন্টাল।                                                                                                                  |
| Ctrl-o | হিস্ট্রির বর্তমান কমান্ডটি এক্সিকিউট করবে ও পরের কমান্ডে চলে যাবে। এটা বেশ কার্যকর যদি আপনি আগে কখনো পরপর দেয়া কিছু কমান্ড আবার একইভাবে দিতে চান। |

## হিস্ট্রি এক্সপ্যানসন

শেল হিস্ট্রি এক্সপ্যানসন নামের এক বিশেষ ধরণের এক্সপ্যানসনের সুযোগ দেয়। যা শুরু হয় "!" চিহ্ন দিয়ে। কিছু হিস্ট্রি এক্সপ্যানসন কমান্ড দেখা যাক:

| কমান্ড কাঠামো | কার্যকারিতা                                                                          |
| ------------- | ------------------------------------------------------------------------------------ |
| !!            | সর্বশেষ ব্যবহৃত কমান্ডটি দেখাবে। আপ এ্যারো কী চাপলেও একই কাজ হবে।                    |
| !number       | 'number' এর জায়গায় দেয়া সংখ্যা অনুযায়ী তত নম্বর কমান্ডটি খুঁজে বের করবে।             |
| !string       | শেষ যে কমান্ডটি 'string' এর জায়গায় লেখা স্ট্রিং দিয়ে শুরু হয়েছে সেটি খুঁজে বের করবে। |
| !?string      | শেষ যে কমান্ডটির মধ্যে 'string' এর জায়গায় লেখা স্ট্রিং আছে সেটি খুঁজে বের করবে।      |
