লিনাক্স এবং শেল

ডস সদৃশ শেল স্ক্রিপ্টিং/কমান্ড
ডস এ যেখানে মাত্র একটি-ই ক্যারেক্টার নির্ভর ইন্টারফেস আছে সেখানে লিনাক্স(ইউনিক্স) এ আছে বেশ কয়েকটি । এদেরকে ইন্টারপ্রেটার এর বদলে শেল বলা হয়ে থাকে যদিও তারা ইন্টারপ্রেটার এর কাজই করে থাকে। ইউনিক্স এর মোট ৩টি শেল আছে যথাঃ C, Korn, এবং Bourne।

লিনাক্স এ উপরোক্ত তিনটি শেল এর নিজস্ব ভার্সন ছাড়াও আরো কয়েকটি শেল রয়েছে। “Bash”, বা Bourne-Again Shell হচ্ছে বেশীরভাগ লিনাক্সের ডিফল্ট শেল কারন এটিতে Bourne এবং Korn শেলের বেশীর ভাগ ফিচারই রয়েছে।

লিনাক্স/ইউনিক্স শেলগুলির নিজস্ব প্রম্পট রয়েছে। যখন আপনি একটি শেল ওপেন করবেন তখন % অথবা $ এর যেকোন একটি দেখতে পাবেন যেটি শেল এর প্রকারভেদ কে নির্দেশ করে। যখন রুট হিসেবে লগইন করবেন তখন আরো একটি প্রম্পট পাবেন যেটিতে # চিহ্ন দেখা যায়। “root” হচ্ছে লিনাক্স/ইউনিক্স এর সবচেয়ে শক্তিশালী ব্যবহারকারী যেটি খানিকটা উইন্ডোজ এর এ্যাডমিনিস্ট্রেটর একাউন্ট অথবা নোভেল এর সুপারভাইজার এর মত।

ডসে যেভাবে dir এবং copy কমান্ড দেয়া হয় ঠিক একইভাবে লিনাক্সের শেল প্রম্পটে ls এবং cp কমান্ড দেয়া যায়।

উইন্ডোজ ৩.১ অপারেটিং সিস্টেমে যেভাবে ডস বেজড গ্রাফিক্যাল ইউজার ইন্টারফেস(GUI) ছিল একইভাবে লিনাক্সে বেশ কয়েকটি গ্রাফিক্যাল ইন্টারফেস পাওয়া যায়। সবচেয়ে বেশী ব্যবহৃত GUI হচ্ছে নোম/জিনোম (Gnome)। কেডিই(KDE) হচ্ছে আরেকটি জনপ্রিয় গ্রাফিক্যাল ইন্টারফেস। আপনি ব্যবহারের জন্য যেকোন একটি ইনস্টল করতে পারেন আপনার নিজস্ব পছন্দ অনুযায়ী। ইন্টারনেটে লিনাক্সের জন্য কোন প্রোগ্রাম খুজতে গেলে দেখবেন যে, প্রায় প্রোগ্রাম এর নামটি G অথবা K অক্ষর দিয়ে শুরু করা হয়েছে যেমন Gpad – যার অর্থ প্রোগ্রামটি জিনোম ইন্টারফেস এর জন্য তৈরী।

আবার কিছু প্রোগ্রাম দেখতে পাবেন যেগুলির নাম শুরু হয়েছে X দিয়ে যেটি মূলত X11, এক্স উইন্ডোজ অথবা এক্স প্রোগ্রামকে নির্দেশ করে। এর কারন হল লিনাক্স/ইউনিক্স এ গ্রাফিক্যাল ইন্টারফেসটি কিছুটা জটিল প্রসেস এ কাজ করে থাকে। এক্স সার্ভার নামে একটি সফটওয়্যারই মূলত গ্রাফিকস সমূহ তৈরী করে থাকে এবং আরেকটি ভিন্ন ডেস্কটপ ম্যানেজার-(কেডিই/জিনোম)- গ্রাফিক্স কে কিভাবে পর্দায় প্রদর্শন করা হবে তার ব্যবস্থা করে থাকে। এটি এমনভাবে করা হয় যাতে কেন্দ্রীয়ভাবে সার্ভার গ্রাফিক্স তৈরী করতে পারে এবং ভিন্ন ভিন্ন ওয়ার্কস্টেশন তাদের ডেস্কটপ ম্যানেজার সেটিংস কাস্টমাইজ করার মাধ্যমে গ্রাফিক্স কে প্রদর্শন করতে পারে। একটি সাধারন পিসিতে সার্ভার এবং ডেস্কটপ একই মেশিনে রান করে থাকে। যে সমস্ত প্রোগ্রাম গ্রাফিক্যাল ইন্টারফেসের বদলে ক্যারেক্টার নির্ভর শেল ইন্টারফেস এর জন্য তৈরী করা হয় তাদেরকে ‘কনসোল প্রোগ্রাম’ বলা হয়।


কেন শেল কমান্ড জানা জরুরী?

লিনাক্স এ সত্যিকারের দক্ষতা আনতে হলে আপনাকে অবশ্যই জানতে হবে শেল প্রম্পটে কিভাবে কমান্ডের সাহায্যে কাজ করতে হয় এবং টেক্সট নির্ভর কনফিগারেশন ফাইলসমূহ কিভাবে কাজে লাগাতে হয়। গ্রাফিক্যাল মোডে অনেক কিছুই করা সম্ভব নয় এবং শেল স্ক্রিপ্টের মাধ্যমে লিনাক্স এ বিভিন্ন কাজ অটোমেটেড করা যায় যেটি মূলত একটি টেক্সট ফাইল যেটি মূলত কিছু ধারাবাহিক কমান্ড এর সমষ্টিমাত্র। গ্রাফিক্যাল ইন্টারফেস মোড অবশ্যই ব্রাউজিং এর মত কাজের জন্য আদর্শ কিন্তু আপনি গ্রাফিক্যাল মোডে থাকলেও টার্মিনাল উইন্ডো ওপেন করার মাধ্যমে শেল কমান্ড দিতে পারেন।

এছাড়া যদি মেশিনের মেমোরী সেভ করতে চান সেক্ষেত্রে গ্রাফিক্যাল ইন্টারফেস বন্ধ রেখে কাজ করতে পারেন কারন এটি প্রায় ৩২ মেগাবাইট মেমোরী ব্যবহার করে থাকে। খুব কম মেমোরীতে একাধিক সার্ভার প্রোগ্রাম চালিয়ে গ্রাফিক্যাল ইন্টারফেসে কাজ করতে থাকলে তা মেশিনকে অনেকসময় স্লো করে ফেলতে পারে।

গ্রাফিক্যাল ইন্টারফেসে কাজ করলে তা সিকিউরিটির জন্য ও কিছুটা থ্রেট হিসেবে কাজ করে তাই মূল সার্ভার সিস্টেমে এটি না চালানোই ভাল। কারন এটি রিমোট কানেকশনকে অনুমোদন দেয়ার জন্য অপ্রয়োজনীয় কিছু পোর্ট ওপেন করে রাখে যেটি হ্যাকার, ক্রাকারদের জন্য সুযোগ করে দিতে পারে।


শেল স্ক্রিপ্টিং কি?

শেল স্ক্রিপ্টিং লিনাক্সের অন্যতম একটি গুরুত্বপূর্ন দিক যা অটোমোশনের জন্য মূল চালিকা শক্তি হিসেবে কাজ করে থাকে। বিভিন্ন ইউলিটি, প্রোগ্রাম ইত্যাদি যেখানে মাউসের মাধ্যমে প্রতিটি কমান্ড নিজ হাতে দিতে হয় তার কারনে গ্রাফিক্যাল ইন্টারফেসের আধিপত্য যদিও দিন দিন বাড়ছে কিন্তু তারপরও লিনাক্স/ইউনিক্সে স্ক্রিপ্টিং এর একক অবদান অনস্বীকার্য।

শেল স্ক্রিপ্টিং ডস এর ব্যাচ ফাইলের মতই কাজ করে থাকে। অর্থাৎ শেল স্ক্রিপ্টিং একটা সাধারন টেক্সট ফাইল যা একটি সাধারন টেক্সট এডিটর এ লেখা হয় এবং যেখানে কিছু ধারাবাহিক কমান্ড পরিচালনার নির্দেশ থাকে। এ কমান্ডগুলি লিনাক্স এর কমান্ড হতে পারে, কোন প্রোগ্রাম চালানোর কমান্ড হতে পারে, অন্য স্ক্রিপ্ট কে কল করার কমান্ড হতে পারে অথবা এর সবগুলির সমন্বয়ে যেকোন কমান্ড হতে পারে। প্রতিবার হাতে লিখে কমান্ড দেয়ার বদলে একটি কাজ সম্পাদনের ধারাবাহিক কমান্ডগুলি এখানে লিখে রেখে শুধুমাত্র ফাইলটিকে চালিয়ে দিলেই হল- সবগুলি কাজ নিজে থেকেই একের পর এক করতে থাকবে।

শেল প্রম্পটে যেসব কমান্ড দেয়া যায় সেগুলিকেই একটি শেল স্ক্রিপ্ট ফাইলে লেখা যায় এবং এছাড়া বিভিন্ন কন্ডিশন টেস্ট এবং লজিক ফ্লো কন্ট্রোল এর জন্য কিছু স্ক্রিপ্ট নির্ভর কমান্ড আছে। যখন অন্যান্য অটোমোশন টুলস এর সাথে এগুলি ব্যবহার করবেন তখন অসাধারন কিছু কাজ করা যায় এই শেল স্ক্রিপ্ট ফাইলের মাধ্যমে। আসুন এরকম কয়েকটি কাজ এর বর্ননা দেখে নেয়া যাকঃ

  • cron – একটি নির্দিষ্ট সময় অথবা দিনে কোন শেল স্ক্রিপ্ট এর কমান্ড সমূহ স্বয়ংক্রিয়ভাবে চালানোর জন্য cron শিডিউলার ব্যবহার করা হয়ে থাকে।
  • Perl scripts – একটি শেল স্ক্রিপ্ট এর সাহায্যে কোন পার্ল স্ক্রিপ্ট কে কল করা যায়। পার্ল যদি ও একটি রিপোর্টিং ল্যাঙ্গুয়েজ হিসেবে যাত্রা শুরু করে কিন্তু এটি এখন টেক্সট ফাইলের স্ট্রিং এবং নিউমেরিক্যাল ডাটা নিয়ে কাজ করার জন্য ব্যাপক ক্ষমতাসম্পন্ন।
  • Regular expressions – ব্যবহারকারীর ইনপুট, ইমেইল বার্তা অথবা অন্যান্য কমান্ড এর আউটপুট, স্ক্রিপ্ট অথবা প্রোগ্রাম সমূহের টেক্সট স্ট্রিং নিয়ে কাজ করার (মিল খোজা এবং বদল করা) জন্য রেগুলার এক্সপ্রেশন কমান্ড ব্যবহার করা হয়ে থাকে।
  • Redirection – অন্য কোন ডিভাইস অথবা প্রসেস এ কমান্ড, স্ক্রিপ্ট অথবা প্রোগ্রামের ইনপুট/আউটপুট গুলিকে পাঠানো।
  • Piping – একটি কমান্ড, স্ক্রিপ্ট অথবা প্রোগ্রামের আউটপুটকে অন্য কোন প্রোগ্রামের ইনপুট হিসেবে ব্যবহার করা।
  • Custom programs – কাস্টমাইজ করা কোন কম্পাইলড প্রোগ্রামকে শেল প্রম্পট এর সাহায্যে চালিয়ে কোন সুনির্দিষ্ট কাজ করা। উদাহরনস্বরূপঃ কোন ডাটা ফাইল অথবা হার্ডওয়্যার যেগুলির স্বত্ব সংরক্ষিত তাদের জন্য কোন কমান্ড পরিচালনা করা।

বেশীরভাগ লিনাক্স শেল কমান্ড, ইউটিলিটি এবং প্রোগ্রাম এর জন্য বেশ কিছু অপশন/সুইচ থাকে যেগুলি ঐ প্রোগ্রাম/ কমান্ড এর বিহেভিয়ারকে নিয়ন্ত্রন করে থাকে। এ অপশনগুলিকে যখন স্বয়ংক্রিয়ভাবে ব্যবহার করা যায় কেবল তখনই এগুলি থেকে কাজ আদায় করে নেয়া যায়। এটিকে রিডাইরেকশন এবং পাইপিং এর সাথে যুক্ত করে ব্যবহার করতে পারলে অনেক কাজ সম্পাদনের জন্য এক লাইন কমান্ডই যথেষ্ট।

বেশীরভাগ প্রোগ্রামসমূহের জন্য অতিরিক্ত কিছু কনফিগারেশন ফাইল থাকে যেগুলি তৈরী করে/কাস্টমাইজ করে ঐ প্রোগ্রাম/কমান্ড এর অটোমোশন ক্ষমতা বাড়ানো যায়। উদাহরনস্বরূপ, আপনি এফটিপি শেল কমান্ড এর জন্য .netrc নামক একটি কনফিগারেশন ফাইল তৈরী করলেন যেখানে এফটিপি সার্ভার এ লগইন করা, সার্ভার এবং ফাইল লোকেশনগুলির অবস্থানের তথ্য এবং সেই সাথে কিছু এফটিপি প্রোগ্রাম এর কমান্ড (যেমন get, put, lcd ইত্যাদি) দেয়া আছে যার সাহায্যে স্বয়ংক্রিয়ভাবে ফাইল ট্রান্সফার করতে পারবেন। এই .netrc ফাইলটি ব্যবহারকারীর হোম ডিরেক্টরীতে ডিফল্টভাবে সংরক্ষিত হয় তাই ফাইলটিতে অবশ্যই রিড একসেস বন্ধ করে দিতে হবে কারন তাতে আপনার লগইন করার পাসওয়ার্ড সংরক্ষিত থাকতে পারে।

একটি শেল স্ক্রিপ্টে iptables এর কমান্ড ব্যবহার করে আপনার লিনাক্স সিস্টেমকে একটি প্রক্সি সার্ভার/ফায়ারওয়াল মেশিন এ পরিনত করতে পারেন। এখানে মাত্র কয়েকটি উদাহরন দিয়েছি – এরকম অসংখ্য কাজ স্ক্রিপ্ট এর মাধ্যমে করা সম্ভব।

লিখেছেনঃ জাহিদ সুমন, মূল লেখনী এখানে

Advertisements
Comments
One Response to “লিনাক্স এবং শেল”

মন্তব্য করুন

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / পরিবর্তন )

Twitter picture

You are commenting using your Twitter account. Log Out / পরিবর্তন )

Facebook photo

You are commenting using your Facebook account. Log Out / পরিবর্তন )

Google+ photo

You are commenting using your Google+ account. Log Out / পরিবর্তন )

Connecting to %s

%d bloggers like this: