ব্যাশ আপনাকে পুরো টেক্সট স্ট্রিংকে একক ভেরিয়েবলে ম্যাপ করার সুযোগ দেয়, যা এর ব্যবহার এবং স্ক্রিপ্ট লেখাকে সহজ করে তোলে। এগুলো কীভাবে কাজ করে, এবং আপনি কীভাবে ব্যবহার করবেন? জানতে থাকুন।
ভেরিয়েবল কী?
ভেরিয়েবল হল সহজে মনে রাখার যোগ্য নাম যেগুলো বিভিন্ন অ্যালফানিউমেরিক ভ্যালু ধারণ করতে পারে। এগুলো উপকারী কারণ একই ফাংশনকে বিভিন্ন ভ্যালুতে প্রয়োগ করা যায়, প্রতিবার স্ক্রিপ্ট/কোডের টুকরো রीरাইট করতে না হয়। এছাড়া এগুলো স্ক্রিপ্ট/কোড লিখাকেও সহজ করে, কারণ индивидуয়াল ভ্যালুর সাথে ডিল না করে আপনি সবके জন্য একই নাম ব্যবহার করতে পারেন।
রিয়েল-টাইম ভেরিয়েবল
ব্যাশ ভেরিয়েবল ব্যবহারের অনুমতি দেয়। আপনি ফ্লাই-তে ভেরিয়েবল তৈরি করতে পারেন এবং বর্তমান ব্যাশ সেশনের দরম्यान সেগুলো পুনরায় ব্যবহার করতে পারেন। এগুলো ব্যাশ ব্যবহারের অনেক উপায়ে সাহায্য করতে পারে, এবং বর্তমান সেশন শেষ হলে চলে যাবে।
উদাহরণস্বরূপ, ধরুন আপনি একাধিক সাইট ভিজিট করছেন। আপনি রিসার্চ বা ডেটা স্ক্র্যাপিং করছেন। আপনি নিচের ভেরিয়েবল তৈরি করতে পারেন:
sitea=https://www.maketecheasier.com
তারপর, যদি ফায়ারফক্স দিয়ে আমাদের সাইটে যেতে চান, তবে শুধু টাইপ করুন:
firefox $sitea
খুব সহজ—এবং বেশি রিডেবল। $sitea ভেরিয়েবলটি সেশন শেষ না হওয়া পর্যন্ত বা আপনি ম্যানুয়ালি এর কন্টেন্ট চেঞ্জ না করার পর্যন্ত সাইটের সাথে ম্যাপড থাকবে। অবশ্যই, আপনি আরও ভেরিয়েবল তৈরি করতে পারেন, যেমন siteb, sitec, এবং sited।
নতুন ভেরিয়েবল সেট আপ করার সময় আপনি যে কোনো নাম ব্যবহার করতে পারেন এবং যেকোনো অ্যালফানিউমেরিক স্ট্রিং সংরক্ষণ করতে পারেন। মনে রাখবেন, ডিফল্টলি এগুলো কেস-সেনসিটিভ। তাই $sitea একই নয় $SiteA-এর। আরো, স্ট্রিং-এ স্পেশাল ক্যারেক্টার (স্পেস সহ) থাকলে কোটেশন মার্কস ব্যবহার করুন।
স্ক্রিপ্টে ভেরিয়েবল
ব্যাশে ভেরিয়েবল স্ক্রিপ্ট লিখার সময় আরও উপকারী হয় কারণ এগুলো আপনাকে একটি সিঙ্গল স্ক্রিপ্ট লিখতে দেয়, যা তারপর বিভিন্ন স্ট্রিংয়ের মাধ্যমে ইটারেট করতে পারে বা কাস্টমাইজড ডেটা পিসে কাজ করতে পারে। ধরুন, আপনি একটি স্ক্রিপ্ট লিখছেন যা সবাই তাদের কম্পিউটারে ব্যবহার করতে পারবে, কিন্তু প্রতিবার একটি পার্সোনালাইজড গ্রিটিং দেখাবে। ভেরিয়েবল ছাড়া, প্রতিটি ইউজারের জন্য আলাদা ভার্সন লিখতে হতো। ভেরিয়েবল দিয়ে, স্ক্রিপ্ট একই রাখে শুধু ইউজারের নাম চেঞ্জ করলেই চলে।
এমন একটি স্ক্রিপ্ট দেখতে মনে হবে:
#!/bin/bash username=Odysseas echo $username
উপরোক্ত উদাহরণ রিডানড্যান্ট লাগতে পারে; কিন্তু কোডের কমপ্লেক্সিটি বাড়লে ভেরিয়েবল অপরিহার্য হয়ে যায়। একটি স্ক্রিপ্ট সैंकড়ো বা হাজার লাইন বড় হতে পারে এবং বিভিন্ন জায়গায় ইউজারের নাম থাকতে পারে। ভালো বোঝার জন্য নিচের কিছু ভিন্ন স্ক্রিপ্ট বিবেচনা করুন:
#!/bin/bash username=Linus echo Hello $username. This is a simple script I wrote that will repeat your name - that is, $username - often as an actual example of how to use Bash variables. I hope it will make it easier to understand how to use variables to improve your Bash workflow, $username. In this case, the variable username is mapped to your name. Whenever Bash runs into it, it replaces it with $username.
উপরোক্ত স্ক্রিপ্ট username ভেরিয়েবলে ডিফাইন করা নাম ব্যবহার করে টেক্সট কমপ্লিট করবে। আসল ইউজারের নাম ব্যবহার করলে আপনাকে চারবার টাইপ করতে হতো। এরপর পরবর্তী ইউজারের জন্য আবার চারবার, আবার আবার। ভেরিয়েবলে অ্যাসাইন করলে প্রতিটি ইউজারের জন্য একবারই চেঞ্জ করলেই টেক্সটের সব জায়গায় ইউজারের নাম আপডেট হয়ে যাবে।
পার্মানেন্ট ব্যাশ ভেরিয়েবল এবং এলিয়াস
আমরা দেখেছি কীভাবে অস্থায়ী ভেরিয়েবল সেট করতে হয় এবং আরও পার্মানেন্ট জিনিসের জন্য স্ক্রিপ্টে কীভাবে ইনক্লুড করতে হয়। কিন্তু কি ব্যাশে পার্মানেন্ট ভেরিয়েবল সেট করা সম্ভব? উত্তর বড় "হ্যাঁ!" এবং আপনাকে শুধু একটা ফাইল এডিট করতে হবে: "~/.bashrc"।
আপনার পছন্দের টেক্সট এডিটরে "~/.bashrc" ফাইলটি খুলুন। আমি ন্যানো পছন্দ করি, তাই আমি এটি করলাম:
nano ~/.bashrc
আমরা সাজেস্ট করি একটি টেস্ট রান দিয়ে শুরু করুন, শুধু একটি ভেরিয়েবল যোগ করে, যাতে প্রক্রিয়াটা কাজ না করলে কোথায় দেখবেন তা জানেন। ফাইলের শেষে যান এবং একটি নতুন লাইনে আপনার ভেরিয়েবল যোগ করুন। উদাহরণস্বরূপ, আমি আমার নামের জন্য একটি ভেরিয়েবল সেট করলাম:
myname="Odysseas Kourafalos"
ফাইলটি সেভ করুন এবং এডিটর থেকে এক্সিট করুন। পরিবর্তনগুলো অবিলম্বে প্রয়োগ হবে না। এটি ইফেক্টিভ করতে আপনার টার্মিনালে নিচের কমান্ড দিন:
source ~/.bashrc
এখন আপনি নতুন সেট করা ভেরিয়েবলটি আপনার ব্যাশ সেশনে ব্যবহার করতে পারেন:
echo $myname
আপনি ইচ্ছেমতো ভেরিয়েবল সেট আপ করতে পারেন এবং ব্যাশে আপনার দৈনন্দিন অভিযান ব্যাপকভাবে সহজ করতে পারেন।
প্রোডাক্টিভিটির জন্য এক্সট্রা বুস্ট পেতে, একটি ভিন্ন টাইপের ভেরিয়েবর সেট আপ করা যাক: এলিয়াস। সাধারণ ভেরিয়েবলের মত যা ডেটা ধারণ করে কমান্ডে ব্যবহার করার জন্য, এলিয়াস আসলে কমান্ডের বদলে ব্যবহার করা হয়।
যেভাবে আপনি একটি সহজে মনে রাখার ভেরিয়েবলে লম্বা টেক্সট স্ট্রিং রাখতে পারেন, ঠিক তেমনি জটিল কমান্ডের সহজ বিকল্প হিসেবে এলিয়াস ব্যবহার করতে পারেন। এখানে আরও জানুন, যেখানে আমরা একটি পুরো ৭জিপ কম্প্রেশন কমান্ডকে দুই ক্যারেক্টারের এলিয়াসে রূপান্তর করেছি।
শেষ নোট হিসেবে, আপনি .bashrc-এ ভেরিয়েবল পার্মানেন্টলি সেট করলেও, আমরা আগে দেখেছি ভাবেই অস্থায়ী ভাবে আলাদা ভ্যালু রি-অ্যাসাইন করতে পারেন। ভেরিয়েবলটি নতুন কন্টেন্ট দেখাবে বর্তমান ব্যাশ সেশন শেষ হওয়া পর্যন্ত (লগ আউট বা রিস্টার্ট হওয়া পর্যন্ত) বা আপনি .bashrc ফাইলটি পুনরায় সোর্স করার পর্যন্ত।