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

আমরা পূর্ববর্তী চ্যাপ্টারগুলোতে যে ওয়াইল্ডকার্ড এর ব্যবহার দেখেছি তার পোশাকি নাম হচ্ছে পাথনেম এক্সপ্যানসন(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 আসলে কি করলো? আসুন একটু ভেবে দেখি।

  • মনে রাখতে হবে কমান্ডের কাছে আর্গুমেন্ট কিন্তু শেল পৌঁছে দেয়। তাই শেল প্রথমে আমাদের কমান্ড স্টেটমেন্টটি পরীক্ষা করেছে। শেল দেখেছে যে আমরা আর্গুমেন্ট হিসেেবে 'D' ব্যবহার করেছি। এবং '' চিহ্নকে ওয়াইল্ডকার্ড হিসেবে চিহ্নিত করেছে। শেল ভেবে নিয়েছে 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 কমান্ডের আউটপুটে তার প্রমাণ মেলে।

Last updated