> 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.4.0.eyeofshell/1.4.2.pathnameexpansion.md).

# পাথনেম এক্সপ্যানসন

আমরা পূর্ববর্তী চ্যাপ্টারগুলোতে যে ওয়াইল্ডকার্ড এর ব্যবহার দেখেছি তার পোশাকি নাম হচ্ছে পাথনেম এক্সপ্যানসন(pathname expansion)। মনে করি, এই আমাদের হোম ডিরেক্টরির অবস্থা:

```
me@howtocode-pc:~$ ls
8_1.pdf                      land_of_lisp                 pvim
8_1.pdf.aria2                ls                           python
AioServer3.4.2_portable      ls-e-books.txt               RemoteControlServer
AioServer3.4.2_portable.zip  ls-error.txt                 reus
archives                     ls-home.txt                  sd2bk
Audiobooks                   ls-music.txt                 sent
bin                          ls-output.txt                sh_howtocode
Desktop                      ls.txt                       spiral
diary                        mlterm-3.3.8                 Templates
diary~                       mlterm-3.3.8.tar.gz          test
Documents                    Music                        test.html
Downloads                    Pictures                     test.html~
emacs                        playground                   test.md
emacs.pdf                    playlists                    TLCL-13.07.pdf
get?ab=128                   Podcasts                     txt
hfjava                       Porteus-KDE-v3.0.1-i486.iso  ubuntu-gnome-14.04-desktop-amd64.iso
hfjavafinalsamples           precise-5.7.1.iso            Videos
hfjavafinalsamples.zip       precise-5.7.1.iso.aria2      আমাদের কথা
hfpython                     Public
```

**echo** কমান্ডের আর্গুমেন্ট হিসেবে কোনো টেক্সট দিলে echo সেটাকে হুবহু আউটপুট দেয়। কিন্তু আমরা যদি echo এর আর্গুমেন্টের মধ্যে ওয়াইল্ডকার্ড ব্যবহার করি তাহলে echo কমান্ডটি **ls** এর মত কাজ করবে:

```
me@howtocode-pc:~$ echo D*
Desktop Documents Downloads
```

**echo** আসলে কি করলো? আসুন একটু ভেবে দেখি।

* মনে রাখতে হবে কমান্ডের কাছে আর্গুমেন্ট কিন্তু শেল পৌঁছে দেয়। তাই শেল প্রথমে আমাদের কমান্ড স্টেটমেন্টটি পরীক্ষা করেছে। শেল দেখেছে যে আমরা আর্গুমেন্ট হিসেেবে '&#x44;*' ব্যবহার করেছি। এবং '*' চিহ্নকে ওয়াইল্ডকার্ড হিসেবে চিহ্নিত করেছে। শেল ভেবে নিয়েছে **echo** এর কাছে এই আর্গুমেন্ট এক্সপ্যান্ড করে পাঠানো উচিৎ।
* এক্সপ্যানশনের সিদ্ধান্ত নেয়ার পর শেল খুঁজে বের করেছ যে আমাদের এখনকার ডিরেক্টরি বা হোমে এই এক্সপ্রেশন অর্থাৎ **D\*** এর সাথে কোনগুলো মেলে। অর্থাৎ কোন আইটেমগুলোর শুরুতে D আছে। শেল তখন Desktop, Documents ও Downloads এই তিনটি আইটেম খুঁজে পেয়েছে।
* শেল ওয়াইল্ডকার্ড এক্সপ্রেশন অনুযায়ী পাওয়া আইটেমগুলো বর্ণানুক্রমে সাজিয়ে **echo** এর জন্য আর্গুমেন্ট তৈরি করলো। আরগুমেন্টটা হল 'Desktop Documents Downloads'। এইপর্যন্ত যা যা হলো তা হলো এক্সপ্যানসন।
* এবার শেল echo কমান্ডের সাথে আর্গুমেন্ট জুড়ে দিয়ে সত্যিকারের কমান্ডটি তৈরি করলো এরকম: **echo Desktop Documents Downloads**। এবং এটি এক্সিকিউট করলো।
* এতক্ষন **echo** কমান্ডটি কিছুই করেনি। বরং যা যা করার শেল নিজেই করেছে। এবার echo তাকে আর্গুমেন্টে দেয়া টেক্সট অর্থাৎ 'Desktop Documents Downloads' স্ক্রীনে প্রিন্ট করে দিলো।

## টিল্ডে এক্সপ্যানসন

পাথনেম এক্সপ্যানসনের আরেকটি বিশেষ রূপ টিল্ডে এক্সপ্যানসন(Tilde expansion)। আপনাদের হয়ত মনে আছে আমরা হোম ডিরেক্টরির বদলে '\~' চিহ্ন ব্যবহার করেছি। এটা টিল্ডে এক্সপ্যানসনের উদাহরণ। শুধু '\~' ব্যবহার করলে:

```
me@howtocode-pc:~$ echo ~
/home/me
me@howtocode-pc:~$ cd ~/Music/
me@howtocode-pc:~/Music$ pwd
/home/me/Music
```

প্রথমে `echo ~` কমান্ড দিয়ে দেখে নিলাম '\~' এর মান। শেল '\~' কে এক্সপ্যান্ড করে /home/me বানিয়েছে। তারপর আমরা `cd ~/Music/` কমান্ড দিয়ে \~/Music ডিরেক্টরিতে ঢুকে **pwd** দিয়ে ওয়ার্কিং ডিরেক্টরি দেখলাম `/home/me/Music`। অর্থাৎ সবক্ষেত্রেই \~ এর মান /home/me। আমরা বলতে পারি '\~' চিহ্ন ব্যবহার করলে তা বর্তমান ইউজারের হোম ডিরেক্টরি বুঝায়।

এবার মনে করি nishadsingha বলে একজন ইউজার আছে এই কম্পিউটারে। আমরা তার ফাইলপত্র নাড়াচাড়া করতেও '\~' ব্যবহার করতে পারি তার ইউজারনেমের সাথে যুক্ত করে:

```
me@howtocode-pc:~$ echo ~nishadsingha
/home/nishadsingha
me@howtocode-pc:~$ cd ~nishadsingha/Music/
me@howtocode-pc:~/Music$ pwd
/home/nishadsingha/Music
```

প্রথমে আমরা `echo ~nishadsingha` কমান্ড দিয়েছি। যার ফলে ওই ইউজারের হোম ডিরেক্টরি দেখিয়েছে। এরপর `cd ~nishadsingha/Music/` কমান্ড দিয়ে সরাসরি তার Music ফোল্ডারে গিয়েছি। **pwd** কমান্ডের আউটপুটে তার প্রমাণ মেলে।
