আসসালামু আলাইকুম!
আজকের এই পোস্ট-এ আপনাকে স্বাগতম। আশা করছি পুরো পোস্ট-টি মনোযোগ এবং ধৈর্য সহকারে পড়বেন।
তো কেমন আছেন সবাই?
আশা করছি আল্লাহর অশেষ রহমতে সবাই অনেক ভালোই আছেন।
ব্যাশ (Bash) কি?
ব্যাশ হচ্ছে একটি ইউনিক্স (Unix) শেল এবং কমান্ড ল্যাংগুয়েজ। এটি Brian Fox কর্তৃক GNU প্রজেক্ট এর জন্য বৌর্ন শেলের ফ্রি সফটওয়্যার বিকল্প হিসেবে লেখা একটি ইউনিক্স শেল ও কমান্ড ল্যাংগুয়েজ। ব্যাশ এর পুরো নাম হচ্ছে Bourne Again Shell (Bash)
1989 সালে ব্যাশ (Bash) রিলিজ করা হয়। রিলিজ হওয়ার পর থেকে অধিকাংশ গ্নু(GNU)/লিনাক্স ডিস্ট্রিবিউশন ও ম্যাকওএস এর ডিফল্ট লগইন শেল হিসেবে ব্যাশ ব্যবহৃত হয়ে আসছে।
ব্যাশ এর একটি সংস্করণ আছে যেটা মাইক্রোসফট উইন্ডোজ 10 – এ ব্যবহার করা যায়, লিনাক্স এর জন্য তৈরি করা সাবসিস্টেম এর মাধ্যমে।(WSL)
সোলারিস (Solaris) 11 – এর ডিফল্ট ইউজার শেল হচ্ছে ব্যাশ। তাছাড়া অ্যাপল এর ‘ম্যাকওএস ক্যাটালিনা (Catalina) প্রকাশের আগে ম্যাকওএস এর সমস্ত সংস্করণে ডিফল্ট শেল হিসেবে ব্যাশ ব্যবহার হতো এবং পরে সেটা zsh এ পরিবর্তিত হয়ে যায়। তবে অল্টারনেটিভ শেল হিসেবে এখনো ব্যাশ রয়েছে।
ব্যাশ একটি কমান্ড প্রসেসর যেটি একটি টেক্সট উইন্ডোতে রান হয়। এই টেক্সট উইন্ডোতে ব্যবহারকারী কমান্ড টাইপ করে তার প্রয়োজনীয় কাজগুলো করে থাকেন।
শেল স্ক্রিপ্টিং কি?
শেল স্ক্রিপ্ট হচ্ছে একটি টেক্সট ফাইল যার মধ্যে অনেকগুলো কমান্ডস একত্রিত থাকে। এটি ইউনিক্স এর উপর তৈরি অপারেটিং সিস্টেমগুলোর জন্য তৈরি করা হয়।
এটাকে শেল স্ক্রিপ্ট বলা হয় কারণ এর মধ্যে অনেকগুলো কমান্ডস একত্রিত থাকে, তা না হলে সবগুলো কমান্ড কে এক এক করে টাইপ করতে হতো এবং এগুলো এক একটি হতো একটি সিঙ্গেল স্ক্রিপ্ট।
একটি শেল স্ক্রিপ্ট সাধারণত বানানো হয় কোনো একটি কাজ যেটা একজন ব্যবহারকারীকে বার বার করতে হয়, সেই কাজটাকে সহজ করার উদ্দেশ্যে।
আর এভাবে বার বার করতে হয় এমন কাজের জন একটি স্ক্রিপ্ট বানিয়ে নিলে সেটা পরে অনেক সময় বাঁচিয়ে দেয়।
উদাহরণ হিসেবে বলা যায়, আমরা যখন অ্যান্ড্রয়েড এ টার্মাক্স ব্যবহার করি তখন আমাদের প্রতিবার টার্মাক্স এর প্যাকেজগুলো আপডেট এবং আপগ্রেড করতে হয়। এর জন্য আমাদের প্রতিবার প্যাকেজ আপডেট এবং প্যাকেজ আপগ্রেড কমান্ড লিখতে হয়।
কিন্তু আমরা যদি এই সিঙ্গেল কমান্ডগুলো একসাথে করে একটি স্ক্রিপ্ট বানিয়ে নেই তাহলে আমাদের আর প্রত্যেকবার কমান্ড লিখতে হবে না। শুধু একবার স্ক্রিপ্ট’টা রান করলেই টার্মাক্স আপডেট এবং আপগ্রেড হয়ে যাবে।
শেল স্ক্রিপ্টিং কিভাবে কাজ করে?
শেল স্ক্রিপ্টিং এর ক্ষেত্রে প্রথম ধাপ হচ্ছে আগে একটি স্ক্রিপ্ট লেখা, তারপর সেই স্ক্রিপ্ট’টাকে যেন আমাদের শেল অ্যাক্সেস করতে পারে সেই ব্যবস্থা করা এবং সর্বশেষ স্ক্রিপ্ট’টিকে এক্সিকিউশন পারমিশন দেওয়া।
একটি শেল স্ক্রিপ্ট সাধারণত কোনো টেক্সট এডিটর, ওয়ার্ড প্রসেসর অথবা গ্রাফিকাল ইউজার ইন্টারফেস (GUI) এর মাধ্যমে লেখা হয়ে থাকে। একটি শেল স্ক্রিপ্ট’এ অনেকগুলো কমান্ডস একত্রিত থাকে এবং এগুলো একটি ল্যাংগুয়েজে লেখা হয় যেন সেটা শেল ইন্টারপ্রেট করতে পারে।
শেল স্ক্রিপ্ট’এ ফাংশনস যেমন loops/ variables/if/then/else/statements/arrays এবং shortcuts সাপোর্ট করে থাকে।
একবার স্ক্রিপ্ট’টি লেখা হয়ে গেলে সেটিকে .sh বা .txt এক্সটেনশন যুক্ত করে সেভ করতে হয়।
সেভ করা হয়ে গেলে স্ক্রিপ্ট’টিকে এমন একটি লোকেশন-এ রাখতে হবে যেন শেল সেটাকে অ্যাক্সেস করতে পারে।
টাইপস অফ শেল বা শেলের ধরণ
ইউনিক্স এবং লিনাক্স’এ প্রধানত দুই ধরনের শেল স্ক্রিপ্ট রয়েছে।
1. Bourne again shells (BASH) – BASH – হচ্ছে ইউনিক্স ভারসন 7 এর ডিফল্ট শেল। BASH শেলের প্রম্পটিং ক্যারেক্টার হচ্ছে – $
2. C shells – C শেল একটি টেক্সট টার্মিনাল উইন্ডোতে রান করে থাকে এবং এটি সহজেই কমান্ডস ফাইল রিড করতে পারে। C শেলের প্রম্পটিং ক্যারেক্টার হচ্ছে – %
কিভাবে ব্যাশ দিয়ে টার্মাক্স-এর জন্য একটি টুল/স্ক্রিপ্ট বানাবেন?
অ্যান্ড্রয়েড- এ ব্যাশ ল্যাংগুয়েজ ব্যবহার করে টার্মাক্স এর জন্য একটি স্ক্রিপ্ট বা টুল বানাতে গেলে আমাদের সর্বপ্রথম ব্যাশ লেখার এবং রান করার জন্য একটি কোড ইডিটর লাগবে।
নিচে থেকে প্রথমে কোড ইডিটর’টি ইনস্টল করে নিন –
অ্যাপটি ইনস্টল হয়ে গেলে ওপেন করুন। অপেক্ষা করুন কয়েক সেকেন্ড লোডিং হবে। আপনার স্টোরেজ পারমিশন চাইবে, অ্যালাউ করে দিন। প্রথমবার ওপেন করলে নিচের মতো ইন্টারফেস দেখতে পাবেন।
এখন আমাদের .sh এক্সটেনশন দিয়ে একটি ফাইল তৈরি করতে হবে (example.sh) যেমনটা উপরের ছবিতে দেখতে পাচ্ছেন। নতুন ফাইল তৈরি করতে বামপাশে উপরে থাকা মেনু আইকনে ক্লিক করুন।
মেনু আইকনে ক্লিক করলে অনেকগুলো অপশন দেখতে পারবেন। এখান থেকে New – এ ক্লিক করুন।
তারপর Shell Script – এ ক্লিক করুন।
আপনি চাইলে কোন ফোল্ডারে সেভ করবেন সেটা ঠিক করে দিতে পারেন অথবা অমনি যেখানে আছে সেখানে সেভ করতে পারেন। এইভাবে সেভ করলে স্ক্রিপ্ট’টি আপনার ইন্টারনাল মেমোরি’র নিচের দিকে পেয়ে যাবেন।
এবার আপনার স্ক্রিপ্ট এর যেকোনো একটি নাম দিন। নাম এর শেষে যেনো .sh – থাকে এটা লক্ষ্য রাখবেন। তারপর Save – এ ক্লিক করুন।
Save – এ ক্লিক করলে নিচের মতো আপনার স্ক্রিপ্ট ফাইলটি তৈরি হয়ে যাবে। এখানে প্রথম লাইনটি হচ্ছে ম্যানডাটরি অর্থাৎ বাধ্যতামূলক। এর মানে হচ্ছে প্রত্যেকটি ব্যাশ স্ক্রিপ্ট এর শুরুতে এই লাইনটি লিখতে হয়। এটাকে বলা হয় Shebang এবং এটার মাধ্যমে বোঝানো হয় যে আমরা ব্যাশ ল্যাংগুয়েজে কোড লিখতে যাচ্ছি।
ব্যাশ ল্যাংগুয়েজ এ echo কমান্ড এর মাধ্যমে কোন লেখাকে ডিসপ্লে/প্রিন্ট করানো হয়। ছবিতে দেখানো রান আইকনে ক্লিক করলে দেখতে পারবেন স্ক্রিনে Hello world! প্রিন্ট হবে।
কোড রান করার আগে সেটিকে সেভ করে নিবেন। সেভ করতে নিচের ছবিতে দেখানো জায়গায় ক্লিক করুন।
আমরা ব্যাসিক ব্যাশ ল্যাংগুয়েজ ব্যবহার করে টার্মাক্স এর জন্য একটি স্ক্রিপ্ট বানাবো, যেখানে শুধু আমরা ‘ echo ‘ কমান্ডটি ব্যবহার করবো। আমরা শুধু আমাদের টেক্সট ডিসপ্লে করার জন্য ‘ echo ‘ ব্যবহার করবো, এর বাইরে আর কিছুই না। তো চলুন শুরু করা যাক।
প্রথমেই বলেছি শেল স্ক্রিপ্ট হচ্ছে অনেকগুলো কমান্ডস এর সমাহার। অর্থাৎ আমরা অনেকগুলো কমান্ডস পর্যায়ক্রমে একসাথে লিখবো এবং সেটা যখন সেভ করে স্ক্রিপ্ট’টি রান করাবো তখন প্রথম থেকে কমান্ডগুলো এক্সিকিউট হতে থাকবে। উদাহরণ হিসেবে ধরুন আমরা স্ক্রিপ্ট এর মধ্যে নিচের কমান্ডগুলো লিখলাম –
- pkg update -y
- pkg upgrade -y
- pkg install nmap
- pkg install nano
- pkg install python
কমান্ডগুলো আমাদের স্ক্রিপ্ট এ লিখে যদি সেভ করি এবং আমরা যদি টার্মাক্স এ আমাদের স্ক্রিপ্ট’টি রান করি তাহলে সর্বপ্রথম স্ক্রিপ্ট এর প্রথমে থাকা কমান্ডটি এক্সিকিউট হবে। সেক্ষেত্রে প্রথমেই আপনার টার্মাক্স আপডেট হবে। আপডেট কমপ্লিট হলে তারপর দ্বিতীয় কমান্ড’টি রান হবে। এবার আপনার টার্মাক্স আপগ্রেড হবে। এভাবে একটি কমান্ড শেষে আরেকটি কমান্ড রান হবে। আশা করছি আপনাদের বোঝাতে পেরেছি।
আপনি যেহেতু বিষয়টি বুঝেই ফেলেছেন যে এটা কিভাবে কাজ করে তাহলে এইবার চলুন একটি সিম্পল স্ক্রিপ্ট বানিয়ে ফেলি।
আমি চাচ্ছি যখন কেউ আমার স্ক্রিপ্ট’টি ব্যবহার করবে তখন প্রথমে স্ক্রিপ্ট রান করালে যেন আমার নাম সেখানে দেখা যায় অর্থাৎ ক্রেডিট টেক্সট। তো এর জন্য আমাদের ‘ echo ‘ ব্যবহার করতে হবে কারণ আমরা আমাদের নাম প্রিন্ট/ডিসপ্লে করাতে চাচ্ছি। স্ক্রিপ্ট এ লিখুন –
তারপর আমরা আমাদের স্ক্রিপ্ট এ – sleep ব্যবহার করবো। sleep এর কাজ হচ্ছে – কোন কমান্ড অথবা কোন কিছু প্রিন্ট করার পর যদি আমরা sleep ব্যবহার করি তাহলে কমান্ডটি রান শেষে 5 অথবা 10 সেকেন্ড পর পরের কমান্ডটি রান হবে। উদাহরণ হিসেবে –
pkg update – ysleep 5pkg upgrade -y
অর্থাৎ এখানে প্রথম কমান্ডটি রান শেষে 5 সেকেন্ড পর দ্বিতীয় কমান্ডটি রান হবে। আর যদি sleep ব্যবহার করা না হতো তাহলে সাথে সাথেই প্রথম কমান্ড শেষে দ্বিতীয় কমান্ডটি রান হয়ে যেতো। বোঝাতে পেরেছি কি? আচ্ছা চলুন স্ক্রিপ্ট এ – sleep ব্যবহার করি তাহলে বুঝতে পারবেন।
আমরা যেহেতু আমাদের স্ক্রিপ্ট এর প্রথমে ক্রেডিট টেক্সট প্রিন্ট করে ফেলেছি এবার আমরা sleep ব্যবহার করে একটু সময় নেবো এবং এর মধ্যে আমরা প্রিন্ট করবো পরবর্তীতে কোন কমান্ড’টি রান হবে। নিচে দেখুন –
উপরের চিত্র অনুযায়ী প্রথমে আমি echo ব্যবহার করে স্ক্রিপ্ট এর প্রথমে ক্রেডিট টেক্সট প্রিন্ট করেছি। তারপর 5 সেকেন্ড এর sleep নিয়েছি অর্থাৎ ক্রেডিট টেক্সট প্রিন্ট হওয়া শেষ হলে 5 সেকেন্ড পর পরবর্তীতে কোন প্যাকেজ রান হবে সেটা প্রিন্ট করেছি।
তারপর আমি প্রধান কমান্ডটি লিখেছি। তারপর আবার 5 সেকেন্ড এর sleep ব্যবহার করেছি অর্থাৎ প্যাকেজ আপগ্রেড সম্পূর্ণ হলে 5 সেকেন্ড পর প্যাকেজ যে আপডেট হয়ে গেছে সেই টেক্সট প্রিন্ট করেছি।
ঠিক একইভাবে প্যাকেজ আপগ্রেড কমান্ড’টিও আমি স্ক্রিপ্ট’এ লিখেছি।
আশা করছি আপনারা কনসেপ্ট’টি বুঝেছেন। আপনারা চাইলে এইভাবে অসংখ্য কমান্ড স্ক্রিপ্ট এ লিখে একটি স্ক্রিপ্ট বানাতে পারেন। এটায় সিম্পল/ব্যাসিক ব্যাশ ল্যাংগুয়েজ ব্যবহার করা হয়েছে। ব্যাশ দিয়ে আরও জটিল স্ক্রিপ্টও বানানো সম্ভব।
কিভাবে আপনার তৈরি করা স্ক্রিপ্ট’টি টার্মাক্স এ ব্যবহার করবেন?
তো প্রথমেই আপনার ফাইল ম্যানেজার ওপেন করে ইন্টারনাল মেমোরি’তে প্রবেশ করুন। তারপর স্ক্রিপ্ট’টি যেখানে আছে সেখান থেকে কপি করে আপনার ইন্টারনাল মেমোরি’তে থাকা Download ফোল্ডারে পেস্ট করে দিন।
এবার টার্মাক্স অ্যাপটি ওপেন করুন। আপনাদের টার্মাক্সে যদি স্টোরেজ পারমিশন দেওয়া না থাকে তাহলে নিচের কমান্ড’টি রান করে স্টোরেজ পারমিশন দিয়ে দিন। যাদের পারমিশন দেওয়া আছে তারা এটা স্কিপ করুন।
⇒ termux-setup-storage
পারমিশন দেওয়া হয়ে গেলে নিচের কমান্ড’টি টাইপ করুন এবং এন্টার চাপুন।
⇒ ls
ls কমান্ড’টি লিখে এন্টার করলে নিচের মতো storage নামে একটি ডিরেক্টরি অ্যাড হয়ে যাবে।
এবার আমার স্ক্রিনশট ভালোভাবে ফলো করুন। কমান্ড দিন
⇒ cd storage
এখন আমরা ইন্টারনাল মেমোরি তে আছি। তারপর কমান্ড দিন
⇒ cd downloads
এখন আমরা ডাউনলোড ফোল্ডারে’র মধ্যে। এখন ls কমান্ড টাইপ করে এন্টার করলে ফোল্ডারে’র মধ্যে কি কি আছে সব দেখতে পারবেন।
এবার ভালো করে দেখুন এখানে আপনার স্ক্রিপ্ট’টি দেখতে পাবেন। এবার স্ক্রিপ্ট’টি মেমরি থেকে কপি করে টার্মাক্স এ নিতে হবে। এর জন্য আমরা ‘ cp ‘ কমান্ড ব্যবহার করবো। তারপর স্পেস দিয়ে স্ক্রিপ্ট এর নাম লিখে আবার স্পেস দিয়ে $HOME লিখে এন্টার করলে স্ক্রিপ্ট’টি টার্মাক্স এর হোম ডিরেক্টরিতে সেভ হয়ে যাবে। (উদাহরণঃ cp example.sh $HOME)
স্ক্রিপ্ট কপি করার জন্যে কমান্ড দিন –
⇒ cp (আপনার স্ক্রিপ্ট এর নাম) $HOME
এবার কমান্ড দিন
⇒ cd
তারপর কমান্ড দিন
⇒ ls
এখানে আপনাদের স্ক্রিপ্ট’টি দেখতে পারবেন।
এবার এটাকে এক্সিকিউট করতে হবে এবং এর জন্য পারমিশন দেওয়া লাগবে।
পারমিশন দিতে কমান্ড দিন –
⇒ chmod 777 (আপনার স্ক্রিপ্ট এর নাম)
এবার ls কমান্ড দিন
⇒ ls
এখন দেখবেন আপনার স্ক্রিপ্ট’টি সবুজ হয়ে গেছে অর্থাৎ আপনার স্ক্রিপ্ট’টি এখন রান হওয়ার জন্য পুরোপুরি তৈরী।
স্ক্রিপ্ট’টি রান করাতে কমান্ড দিন
⇒ bash (আপনার স্ক্রিপ্ট এর নাম)
এবার দেখুন আপনার স্ক্রিপ্ট’টি রান হয়ে যাবে এবং এর মধ্যে থাকা সমস্ত কমান্ড এক এক করে এক্সিকিউট হবে।
বিঃদ্রঃ এটা ছিল সম্পূর্ণ ব্যাসিক ব্যাশ স্ক্রিপ্ট। আমি শুধু আপনাদের ধারণা দেওয়ার চেষ্টা করেছি এটা কিভাবে কাজ করে। অ্যাডভান্সড ব্যাশ শিখতে গেলে আপনাকে এর পিছনে সময় এবং শ্রম দিতে হবে।
মানুষ মাত্রই ভুল হয়। আমি সর্বোচ্চ চেষ্টা করেছি আপনাদেরকে সহজে বোঝানোর। তারপরও যদি ভুল হয়ে থাকে আশা করছি ক্ষমাসুন্দর দৃষ্টিতে দেখবেন। পোস্ট- এ কোন ভুল থাকলে অবশ্যই চোখে আঙ্গুল দিয়ে দেখিয়ে দিবেন, কোনো সমস্যা নেই।
আমি ভুল থেকে শিক্ষা নিয়ে নিজেকে পরিপূর্ণ করার চেষ্টা করবো ইনশাআল্লাহ।
আজকে এ পর্যন্তই।
আবারও বলছি বুঝতে বা আমার লেখায় যদি কোন ভুল-ত্রুটি থাকে তাহলে অবশ্যই কমেন্ট বক্সে আপনাদের মতামত জানাবেন।
আপনাকে অসংখ্য ধন্যবাদ এতক্ষণ লেখাটি পড়ার জন্য। আপনার সময় অনেক অনেক ভালো কাটুক।