UNIX / LINUX এর বেসিক ধারণা
UNIX এবং LINUX দুটি শক্তিশালী অপারেটিং সিস্টেম যা কম্পিউটার এবং সার্ভারের কার্যক্রম পরিচালনা করতে ব্যবহৃত হয়। এই সিস্টেমগুলি মূলত মাল্টি-ইউজার, মাল্টি-টাস্কিং এবং উচ্চমানের নিরাপত্তা সরবরাহ করে। UNIX এবং LINUX-এর মৌলিক ধারণাগুলি কম্পিউটার সিস্টেম এবং নেটওয়ার্ক পরিচালনায় অপরিহার্য।
1. UNIX এর বেসিক ধারণা
UNIX হল একটি মাল্টি-ইউজার, মাল্টি-টাস্কিং অপারেটিং সিস্টেম যা ১৯৬৯ সালে AT&T Bell Labs-এর গবেষকরা তৈরি করেন। UNIX সিস্টেমটি অনেক কার্যকারিতা, প্রোগ্রামিং ভাষা এবং উন্নত নিরাপত্তা ব্যবস্থার জন্য পরিচিত।
মূল বৈশিষ্ট্য:
- মাল্টি-ইউজার এবং মাল্টি-টাস্কিং: UNIX একাধিক ব্যবহারকারীকে একযোগে সিস্টেমে কাজ করার সুযোগ দেয় এবং একাধিক কাজ (টাস্ক) একই সময়ে চালাতে সক্ষম।
- প্রোগ্রামিং ভাষা C: UNIX সিস্টেমটি C ভাষায় লেখা, যা প্রোগ্রামিংয়ের জন্য গুরুত্বপূর্ণ একটি ভাষা।
- পোর্টেবিলিটি: UNIX সিস্টেমটি এক হার্ডওয়্যার থেকে অন্য হার্ডওয়ারে সহজে পোর্ট করা যায়।
- ফাইল সিস্টেম: UNIX-এর একটি বিশেষ ফাইল সিস্টেম রয়েছে যা ব্যবহারকারীদের ডেটা সঞ্চয়, ফাইল হ্যান্ডলিং এবং সিস্টেম কন্ট্রোল সহজ করে তোলে।
2. LINUX এর বেসিক ধারণা
LINUX হল একটি ওপেন সোর্স অপারেটিং সিস্টেম যা ১৯৯১ সালে Linus Torvalds দ্বারা তৈরি করা হয়। LINUX মূলত UNIX-এর মত কাজ করে, তবে এটি সম্পূর্ণ মুক্ত এবং ওপেন সোর্স, যার ফলে এটি ব্যাপকভাবে ব্যবহৃত হয়।
মূল বৈশিষ্ট্য:
- ওপেন সোর্স: LINUX-এর সোর্স কোড উন্মুক্ত এবং এটি বিনামূল্যে ব্যবহার করা যায়।
- কমিউনিটি ডেভেলপমেন্ট: LINUX-এর উন্নয়ন বিভিন্ন ডেভেলপারদের সমন্বয়ে চলে, যা এটি নিয়মিত আপডেট এবং নতুন ফিচার দিয়ে সমৃদ্ধ করে।
- বিভিন্ন ডিস্ট্রিবিউশন: LINUX-এর বিভিন্ন সংস্করণ বা ডিস্ট্রিবিউশন রয়েছে, যেমন Ubuntu, CentOS, Fedora, Debian ইত্যাদি, যা বিভিন্ন প্রয়োজন অনুযায়ী ব্যবহৃত হয়।
- নিরাপত্তা এবং স্থিতিশীলতা: LINUX অপারেটিং সিস্টেম অত্যন্ত নিরাপদ এবং স্থিতিশীল, বিশেষত সার্ভার ব্যবহারের জন্য উপযুক্ত।
3. UNIX এবং LINUX-এর মধ্যে পার্থক্য
| বৈশিষ্ট্য | UNIX | LINUX |
|---|---|---|
| উৎস | বাণিজ্যিক সফটওয়্যার, AT&T Bell Labs | ওপেন সোর্স, Linus Torvalds |
| লাইসেন্স | বাণিজ্যিক লাইসেন্স, ফি (Commercial) | ফ্রি এবং ওপেন সোর্স (GPL লাইসেন্স) |
| পোর্টেবিলিটি | সীমিত, নির্দিষ্ট হার্ডওয়্যারের জন্য | অনেক হার্ডওয়্যারে পোর্টেবল |
| কাস্টমাইজেশন | সীমিত, কাস্টমাইজ করা কঠিন | অত্যন্ত কাস্টমাইজযোগ্য |
| ব্যবহার | বড় প্রতিষ্ঠান, সরকারী অফিস | সার্ভার, ডেস্কটপ, ডেটা সেন্টার, ক্লাউড |
| বিভিন্ন ডিস্ট্রিবিউশন | একক সংস্করণ | অনেক ডিস্ট্রিবিউশন (উবুন্টু, ফেডোরা, সেন্টওএস) |
4. UNIX / LINUX-এর প্রধান উপাদান
- কর্নেল (Kernel): UNIX এবং LINUX সিস্টেমের মস্তিষ্ক হিসেবে কাজ করে, এটি কম্পিউটারের হার্ডওয়্যার এবং সফটওয়্যার সংযোগ স্থাপন করে। কর্নেল সিস্টেম রিসোর্সের পরিচালনা, ফাইল সিস্টেমের অ্যাক্সেস, এবং নিরাপত্তা নিয়ন্ত্রণ করে।
- ফাইল সিস্টেম (File System): UNIX এবং LINUX-এর ফাইল সিস্টেম একটি ডিরেক্টরি গাছের মতো কাজ করে, যেখানে ফাইল এবং ডিরেক্টরি স্টোর করা হয়। UNIX এবং LINUX সিস্টেমে সাধারণত
/,/home,/bin,/etc,/varইত্যাদি ডিরেক্টরি থাকে। - শেল (Shell): শেল হল একটি প্রোগ্রাম যা ব্যবহারকারীকে সিস্টেমের সাথে ইন্টারঅ্যাক্ট করার সুযোগ দেয়। এটি একটি কমান্ড লাইন ইন্টারফেস (CLI), যেখানে ব্যবহারকারী কমান্ড ইনপুট দিয়ে সিস্টেম পরিচালনা করতে পারে। UNIX এবং LINUX সিস্টেমে বিভিন্ন ধরনের শেল ব্যবহার করা হয়, যেমন Bash, Zsh, Tcsh।
- অ্যাপ্লিকেশন প্রোগ্রামস (Application Programs): UNIX এবং LINUX সিস্টেমে নানা ধরনের সফটওয়্যার এবং অ্যাপ্লিকেশন চলে। এই প্রোগ্রামগুলি সিস্টেমের উপর ভিত্তি করে কাজ করে এবং ব্যবহারকারীকে নির্দিষ্ট কাজ সম্পাদনে সাহায্য করে।
5. UNIX / LINUX কমান্ড লাইন ইন্টারফেস (CLI)
UNIX এবং LINUX অপারেটিং সিস্টেমে কমান্ড লাইন ইন্টারফেস (CLI) গুরুত্বপূর্ণ ভূমিকা পালন করে। কিছু সাধারণ কমান্ড:
ls: ফাইল এবং ডিরেক্টরির তালিকা দেখানোর জন্য ব্যবহৃত হয়।cd: ডিরেক্টরি পরিবর্তন করতে ব্যবহৃত হয়।pwd: বর্তমান কাজের ডিরেক্টরি দেখায়।cp: ফাইল কপি করতে ব্যবহৃত হয়।mv: ফাইল স্থানান্তর বা নাম পরিবর্তন করতে ব্যবহৃত হয়।rm: ফাইল মুছে ফেলতে ব্যবহৃত হয়।mkdir: নতুন ডিরেক্টরি তৈরি করতে ব্যবহৃত হয়।
সারসংক্ষেপ
UNIX এবং LINUX দুটি অত্যন্ত শক্তিশালী এবং কার্যকর অপারেটিং সিস্টেম। UNIX মূলত বাণিজ্যিক উদ্দেশ্যে ব্যবহৃত হয় এবং প্রতিষ্ঠিত প্রতিষ্ঠানগুলিতে ব্যবহৃত হয়। অন্যদিকে, LINUX হল একটি ওপেন সোর্স অপারেটিং সিস্টেম যা সম্পূর্ণ ফ্রি এবং বহুল ব্যবহৃত, বিশেষত সার্ভার এবং ডেভেলপমেন্ট পরিবেশে। UNIX এবং LINUX উভয়েই মাল্টি-ইউজার এবং মাল্টি-টাস্কিং সমর্থন করে, যা এগুলিকে অনেক ধরনের কম্পিউটার সিস্টেমের জন্য আদর্শ অপারেটিং সিস্টেম তৈরি করে।
কমান্ড লাইন ইন্টারফেস (CLI) পরিচিতি
কমান্ড লাইন ইন্টারফেস (CLI) একটি ধরনের ইনপুট ইন্টারফেস, যেখানে ব্যবহারকারীরা কম্পিউটার বা অপারেটিং সিস্টেমের সাথে যোগাযোগ করতে কমান্ড (অথবা নির্দেশ) টাইপ করে। CLI একটি গ্রাফিক্যাল ইউজার ইন্টারফেস (GUI)-এর বিপরীতে কাজ করে, যেখানে আপনি মাউস ব্যবহার করে আইকন বা বাটন ক্লিক করেন। CLI তে ব্যবহারকারী টেক্সট বেসড কমান্ড ব্যবহার করে সিস্টেমের বিভিন্ন কাজ পরিচালনা করেন।
CLI মূলত প্রোগ্রামিং এবং সিস্টেম অ্যাডমিনিস্ট্রেশন কাজে ব্যবহৃত হয়, যেখানে দ্রুত এবং কার্যকরভাবে কাজ করা প্রয়োজন। UNIX এবং LINUX-এর মত অপারেটিং সিস্টেমে CLI অত্যন্ত গুরুত্বপূর্ণ এবং ব্যবহারকারীকে সরাসরি সিস্টেমের সাথে যোগাযোগের সুযোগ দেয়।
CLI এর মূল বৈশিষ্ট্য
- টেক্সট-বেসড ইন্টারফেস:
- CLI একটি টেক্সট-বেসড ইন্টারফেস, যেখানে কমান্ডগুলি টাইপ করা হয়। GUI এর বিপরীতে এখানে ব্যবহারকারী মাউসের পরিবর্তে কীবোর্ড ব্যবহার করে কাজ করেন।
- কমান্ডের মাধ্যমে কাজ:
- CLI তে ব্যবহারকারী সরাসরি কমান্ড টাইপ করেন এবং সিস্টেম সেগুলি এক্সিকিউট করে। উদাহরণস্বরূপ,
lsকমান্ড দিয়ে ডিরেক্টরির ফাইলের তালিকা দেখা যায়।
- CLI তে ব্যবহারকারী সরাসরি কমান্ড টাইপ করেন এবং সিস্টেম সেগুলি এক্সিকিউট করে। উদাহরণস্বরূপ,
- ফাস্ট এবং ইফিশিয়েন্ট:
- CLI সাধারণত দ্রুত এবং দক্ষ। বিশেষত যখন ব্যবহারকারী একাধিক কাজ করতে চান, তখন এটি GUI তুলনায় বেশি দ্রুত কাজ করে।
- কমপ্লেক্স কাজের জন্য উপযুক্ত:
- CLI-তে কমান্ডের মাধ্যমে খুবই জটিল এবং উন্নত কাজ করা সম্ভব, যা GUI তে কখনও কখনও কঠিন হয়ে পড়ে।
- স্ক্রিপ্টিং:
- CLI স্ক্রিপ্টিং এর মাধ্যমে একাধিক কাজ অটোমেট করা সম্ভব। ব্যবহারকারী একাধিক কমান্ড বা স্ক্রিপ্ট একটি ফাইলের মাধ্যমে এক্সিকিউট করতে পারেন, যা সময় বাঁচায় এবং কাজের স্বয়ংক্রিয়তা আনে।
CLI তে সাধারণ কমান্ড উদাহরণ
ls:- এটি কমান্ডের মাধ্যমে বর্তমান ডিরেক্টরির ফাইলের তালিকা দেখা যায়।
উদাহরণ:
ls
cd:cd(Change Directory) কমান্ড দিয়ে আপনি বর্তমান ডিরেক্টরি পরিবর্তন করতে পারেন।উদাহরণ:
cd /home/user/Documents
pwd:- এটি বর্তমান কাজের ডিরেক্টরি দেখায় (Print Working Directory)।
উদাহরণ:
pwd
mkdir:- নতুন ডিরেক্টরি তৈরি করতে ব্যবহৃত হয়।
উদাহরণ:
mkdir new_directory
rm:- এটি একটি ফাইল বা ডিরেক্টরি মুছে ফেলতে ব্যবহৃত হয়।
উদাহরণ:
rm file.txt
cp:- ফাইল বা ডিরেক্টরি কপি করতে ব্যবহৃত হয়।
উদাহরণ:
cp source_file.txt destination_file.txt
mv:- ফাইল বা ডিরেক্টরি মুভ করতে ব্যবহৃত হয়।
উদাহরণ:
mv old_name.txt new_name.txt
man:- এটি কমান্ডের ম্যানুয়াল পেজ দেখায়, যা কমান্ডের ব্যবহার এবং সঠিক সিনট্যাক্স সম্পর্কে তথ্য দেয়।
উদাহরণ:
man ls
CLI-এর সুবিধা
- দ্রুত এবং সহজ:
- কমান্ড টেক্সট টাইপ করা তুলনায় মাউস ব্যবহার করে GUI-এর মাধ্যমে কাজ করতে সময় বেশি লাগে।
- কাস্টমাইজেশন:
- CLI তে আপনি সিস্টেমকে আরো বেশি কাস্টমাইজ করতে পারবেন, কারণ এখানে প্রতিটি কমান্ড বা স্ক্রিপ্ট নির্দিষ্টভাবে কাজ করে।
- অটোমেশন এবং স্ক্রিপ্টিং:
- CLI ব্যবহার করে বিভিন্ন কাজ অটোমেটেড করা সম্ভব, যা সময় বাঁচায় এবং প্রক্রিয়াগুলিকে দ্রুত করে তোলে।
- রিসোর্সের সাশ্রয়ী:
- CLI গ্রাফিক্স রেন্ডার করার মতো কিছু প্রয়োজনীয়তা রাখে না, তাই এটি কম রিসোর্স ব্যবহার করে।
- দীর্ঘস্থায়ী সমর্থন:
- CLI অনেক ক্ষেত্রে ডেস্কটপের তুলনায় দীর্ঘ সময় ধরে টিকতে পারে। GUI ইন্টারফেস মাঝে মাঝে সংস্করণ আপডেটের পর পুরোনো হয়ে যেতে পারে, তবে CLI একইভাবে কার্যকর থাকে।
CLI-এর সীমাবদ্ধতা
- শিক্ষা ও অভ্যস্ততা:
- নতুন ব্যবহারকারীদের জন্য CLI শিখতে কিছুটা সময় এবং অভ্যস্ততা প্রয়োজন হতে পারে, কারণ তাদের কমান্ড ও সিনট্যাক্স মনে রাখতে হয়।
- টেক্সট-পূর্বক ইন্টারফেস:
- CLI এ গ্রাফিক্স বা ছবি ব্যবহারের কোনো সুযোগ নেই, যা কিছু ক্ষেত্রে ব্যবহারকারীদের জন্য সীমাবদ্ধ হতে পারে।
- টাইপিং ত্রুটি:
- CLI তে টাইপিং ত্রুটি একটি সাধারণ সমস্যা, যেখানে ভুল কমান্ড বা টাইপিং করলে কাজ অপ্রত্যাশিতভাবে ব্যাহত হতে পারে।
সারসংক্ষেপ
কমান্ড লাইন ইন্টারফেস (CLI) একটি শক্তিশালী এবং দক্ষ টুল যা LINUX এবং UNIX সিস্টেমে ব্যবহৃত হয়। এটি দ্রুত, কাস্টমাইজযোগ্য এবং স্ক্রিপ্টিংয়ের মাধ্যমে কাজ অটোমেট করতে সাহায্য করে। যদিও এটি নতুন ব্যবহারকারীদের জন্য কিছুটা কঠিন হতে পারে, তবে অভিজ্ঞ ব্যবহারকারীদের জন্য এটি অত্যন্ত কার্যকরী এবং গুরুত্বপূর্ণ।
শেলের ভূমিকা এবং প্রকারভেদ (Bash, Zsh, KornShell)
শেল হল একটি প্রোগ্রাম যা ব্যবহারকারী এবং অপারেটিং সিস্টেমের কের্নেল বা সিস্টেমের মধ্যে একটি ইন্টারফেস হিসেবে কাজ করে। শেল ব্যবহারকারীদের কমান্ড লাইন থেকে সিস্টেমের বিভিন্ন কার্যক্রম পরিচালনা করার অনুমতি দেয়, যেমন ফাইল ম্যানিপুলেশন, সিস্টেম ম্যানেজমেন্ট, প্রোগ্রাম চালানো ইত্যাদি। শেল সাধারণত টেক্সট বেসড, কিন্তু আধুনিক কিছু শেল গ্রাফিক্যাল ইউজার ইন্টারফেস (GUI) প্রস্তাব করে থাকে।
শেলের ভূমিকা
- কমান্ড লাইন ইন্টারফেস (CLI): শেল হল কমান্ড লাইন ইন্টারফেস (CLI) এর মাধ্যমে ব্যবহারকারীদের সিস্টেমের সঙ্গে যোগাযোগের মাধ্যম। এটি ব্যবহারকারীদের কমান্ডের মাধ্যমে সিস্টেমের বিভিন্ন কার্যক্রম নিয়ন্ত্রণ করতে সহায়তা করে।
- সিস্টেম প্রোগ্রামিং: শেল স্ক্রিপ্টিংয়ের মাধ্যমে ব্যবহারকারীরা স্বয়ংক্রিয়ভাবে কাজ করতে পারেন, যেমন ফাইল ব্য়াকআপ, সিস্টেম ক্লিনআপ, অথবা রক্ষণাবেক্ষণ কার্যাবলি।
- ফাইল ম্যানিপুলেশন: শেলের মাধ্যমে ব্যবহারকারীরা ফাইল সৃষ্টির, মোভ, কপি, ডিলিট ইত্যাদি কাজ করতে পারেন।
- অপারেটিং সিস্টেমের প্রক্রিয়া পরিচালনা: শেল বিভিন্ন প্রক্রিয়ার পরিচালনা যেমন প্রোগ্রাম চালানো, সেগুলির আউটপুট সংগ্রহ করা, এবং অন্যান্য সিস্টেম রিসোর্সের ব্যবহার নিয়ন্ত্রণ করতে সহায়তা করে।
- ব্যবহারকারী ইন্টারফেস: এটি সিস্টেমের কের্নেল এবং ব্যবহারকারীর মধ্যে একটি মধ্যস্থতাকারী হিসাবে কাজ করে। ব্যবহারকারীর ইনপুট নেয় এবং তা সঠিক আউটপুটে রূপান্তরিত করে।
শেলের প্রকারভেদ
বর্তমানে বেশ কিছু জনপ্রিয় শেল রয়েছে যা বিভিন্ন ধরনের বৈশিষ্ট্য এবং ক্ষমতা প্রদান করে। এর মধ্যে তিনটি জনপ্রিয় শেল হলো Bash, Zsh, এবং **KornShell (Ksh)**। নিচে তাদের বৈশিষ্ট্য এবং পার্থক্য আলোচনা করা হলো।
১. Bash (Bourne Again Shell)
Bash হল LINUX এবং UNIX ভিত্তিক সিস্টেমে ব্যবহৃত সবচেয়ে জনপ্রিয় শেল। এটি মূলত Bourne Shell (sh)-এর উন্নত সংস্করণ এবং GNU প্রকল্পের অংশ। Bash অধিকাংশ লিনাক্স ডিস্ট্রিবিউশনে ডিফল্ট শেল হিসেবে ব্যবহৃত হয়।
Bash এর বৈশিষ্ট্য:
- এটি সহজ ও শক্তিশালী: Bash শেল একটি শক্তিশালী এবং সহজ শেল, যা বিভিন্ন প্রোগ্রামিং ভাষার মতো সিঙ্কট্যাক্স এবং ফিচারগুলি প্রদান করে।
- শেল স্ক্রিপ্টিং: Bash স্ক্রিপ্টিং খুব জনপ্রিয়, বিশেষত সিস্টেম অ্যাডমিনিস্ট্রেশন এবং স্বয়ংক্রিয় কাজের জন্য।
- টাইপিং হোস্টি: টাইপিং হোস্টি বা অটো-কমপ্লিশনসহ কিছু সুবিধা প্রদান করে।
- আইডেন্টেশন: এটি সহজতর শেল স্ক্রিপ্টিং তৈরি করতে সহায়ক একটি ভালো ইনডেন্টেশন সিস্টেম প্রদান করে।
Bash-এর উদাহরণ:
#!/bin/bash
echo "Hello, World!"২. Zsh (Z Shell)
Zsh একটি অত্যন্ত শক্তিশালী এবং কাস্টমাইজযোগ্য শেল, যা Bash এর মতোই অনেক ফিচার সমর্থন করে, তবে এতে আরও অনেক উন্নত বৈশিষ্ট্য রয়েছে। Zsh সাধারণত তাদের জন্য ভালো যারা শেল কাস্টমাইজ করতে চান এবং আরও উন্নত ইন্টারফেস চান।
Zsh এর বৈশিষ্ট্য:
- অটো-কমপ্লিশন: Zsh স্বয়ংক্রিয়ভাবে কমান্ড এবং ফাইল নাম প্রস্তাব করে, যা ব্যবহারকারীর টাইপিং কাজকে সহজ করে।
- প্লাগইন সাপোর্ট: Zsh খুব সহজে কাস্টমাইজ করা যায় এবং বিভিন্ন প্লাগইন ইনস্টল করা যায়।
- থিমিং: Zsh-এ বিভিন্ন থিম ব্যবহার করা যায়, যা কাস্টমাইজযোগ্য প্রম্পট এবং ভিজ্যুয়াল ইন্টারফেস প্রদান করে।
- ব্যাকআপ এবং আউটপুট কনফিগারেশন: Zsh এর মধ্যে অটোমেটিক ব্যাকআপ এবং আউটপুট স্টোর করার সুবিধা রয়েছে।
Zsh-এর উদাহরণ:
#!/bin/zsh
echo "Welcome to Zsh!"৩. KornShell (Ksh)
KornShell (Ksh) একটি উচ্চক্ষমতাসম্পন্ন শেল যা Bourne Shell (sh) এবং C Shell (csh)-এর বৈশিষ্ট্যসমূহের সমন্বয়ে তৈরি করা হয়। এটি প্রধানত বড় প্রতিষ্ঠানে ব্যবহৃত হয় এবং একটি শক্তিশালী শেল স্ক্রিপ্টিং ভাষা হিসেবে পরিচিত।
Ksh এর বৈশিষ্ট্য:
- শক্তিশালী স্ক্রিপ্টিং ভাষা: Ksh এর স্ক্রিপ্টিং খুবই শক্তিশালী এবং গতিশীল। এটি চলমান স্ক্রিপ্টগুলির জন্য উন্নত নিয়ন্ত্রণ প্রদান করে।
- একাধিক প্রোগ্রাম চালানো: Ksh সহজে একাধিক প্রোগ্রাম সমান্তরালে চালানোর সমর্থন প্রদান করে।
- পোর্টেবিলিটি: এটি বিভিন্ন UNIX এবং LINUX প্ল্যাটফর্মে খুব ভালভাবে কাজ করে, এবং ব্যাপকভাবে বিভিন্ন সিস্টেমে ব্যবহৃত হয়।
Ksh-এর উদাহরণ:
#!/bin/ksh
echo "Hello, KornShell!"শেলের পার্থক্য
| বৈশিষ্ট্য | Bash | Zsh | KornShell (Ksh) |
|---|---|---|---|
| উত্স | ওপেন সোর্স (GNU প্রকল্প) | ওপেন সোর্স | বাণিজ্যিক এবং ওপেন সোর্স (বিভিন্ন সংস্করণ) |
| প্লাগইন সাপোর্ট | সীমিত | খুব ভালো | সীমিত |
| অটো-কমপ্লিশন | মৌলিক | উন্নত (স্মার্ট কমপ্লিশন) | মৌলিক |
| থিমিং | সীমিত | উন্নত (কাস্টম থিম সাপোর্ট) | সীমিত |
| শক্তিশালী স্ক্রিপ্টিং | খুব শক্তিশালী | শক্তিশালী | খুব শক্তিশালী |
| ব্যবহারকারীর জনপ্রিয়তা | সবচেয়ে জনপ্রিয় LINUX/UNIX শেল | উন্নত ইউজার ইন্টারফেস এবং কাস্টমাইজেশন | বড় প্রতিষ্ঠান এবং এন্টারপ্রাইজ ব্যবহৃত |
সারসংক্ষেপ
- Bash: LINUX এবং UNIX সিস্টেমে সবচেয়ে জনপ্রিয় শেল, যা অনেক সাধারণ এবং শক্তিশালী ফিচার প্রদান করে।
- Zsh: Bash থেকে আরও উন্নত এবং কাস্টমাইজযোগ্য, যা উন্নত অটো-কমপ্লিশন এবং থিমিং সহ ব্যবহারকারীদের জন্য আরও শক্তিশালী শেল অভিজ্ঞতা প্রদান করে।
- Ksh: উচ্চক্ষমতাসম্পন্ন এবং শক্তিশালী স্ক্রিপ্টিং ভাষা, যা মূলত বড় প্রতিষ্ঠানে ব্যবহৃত হয় এবং বিভিন্ন UNIX এবং LINUX প্ল্যাটফর্মে কার্যকরী।
ফাইল সিস্টেম স্ট্রাকচার এবং হায়ারার্কি
UNIX এবং LINUX অপারেটিং সিস্টেমের ফাইল সিস্টেম স্ট্রাকচার এবং হায়ারার্কি অত্যন্ত গুরুত্বপূর্ণ, কারণ এটি সিস্টেমের ফাইল এবং ডিরেক্টরি গঠন পরিচালনা করে। UNIX এবং LINUX উভয়েই হায়ারার্কিক্যাল ফাইল সিস্টেম ব্যবহার করে, যা একটি গাছের মত ডিরেক্টরি গঠন তৈরি করে যেখানে রুট ডিরেক্টরি ("/") সমস্ত ফাইল এবং ডিরেক্টরির মূল নোড হিসেবে কাজ করে।
ফাইল সিস্টেম স্ট্রাকচার
ফাইল সিস্টেম হল একটি উপায় যার মাধ্যমে কম্পিউটার সিস্টেম ফাইল এবং ডিরেক্টরি সংরক্ষণ এবং সংগঠিত করে। UNIX এবং LINUX-এর ফাইল সিস্টেমে রুট ("/") ডিরেক্টরি প্রধান মঞ্চ হিসেবে কাজ করে, এবং সমস্ত ডিরেক্টরি, সাব-ডিরেক্টরি এবং ফাইল এই রুট ডিরেক্টরির অধীনে থাকে।
ফাইল সিস্টেমের গঠন সাধারণত একটি গাছের মতো হয়, যেখানে:
- রুট ডিরেক্টরি (
/) শীর্ষস্থানে থাকে। - তার নিচে অন্যান্য সমস্ত ডিরেক্টরি এবং ফাইলগুলো থাকে।
এই গঠনটি বিভিন্ন ডিরেক্টরি এবং ফাইলের শ্রেণিবদ্ধকরণ, সংরক্ষণ এবং ব্যবহার সহজ করে তোলে।
ফাইল সিস্টেম হায়ারার্কি
UNIX এবং LINUX ফাইল সিস্টেমের হায়ারার্কি কিছু নির্দিষ্ট ডিরেক্টরি দ্বারা গঠিত, যেগুলি বিভিন্ন প্রকারের ডেটা সংরক্ষণ এবং ব্যবস্থাপনা করে। নিচে কিছু গুরুত্বপূর্ণ ডিরেক্টরি এবং তাদের উদ্দেশ্য বর্ণনা করা হলো:
/(Root Directory):- এটি সমস্ত ফাইল সিস্টেমের শীর্ষ ডিরেক্টরি, এবং সবকিছু এর অধীনে থাকে।
- সমস্ত অন্যান্য ডিরেক্টরি এবং ফাইল এর অধীনে আর্গানাইজড থাকে।
/bin(Binary Executables):- এখানে সিস্টেমের মৌলিক এবং গুরুত্বপূর্ণ কমান্ডগুলি রাখা হয়, যেমন
ls,cp,mv,rmইত্যাদি। - এই ফাইলগুলি সিস্টেম চালু করার জন্য প্রয়োজনীয়।
- এখানে সিস্টেমের মৌলিক এবং গুরুত্বপূর্ণ কমান্ডগুলি রাখা হয়, যেমন
/boot(Boot Loader Files):- এই ডিরেক্টরিতে সিস্টেমের বুটিংয়ের জন্য প্রয়োজনীয় ফাইল এবং কনফিগারেশন ফাইল থাকে।
- এখানে কার্নেল এবং বুটলোডার সংরক্ষিত থাকে।
/dev(Device Files):- এখানে সিস্টেমের সমস্ত ডিভাইস যেমন ডিস্ক, পার্টিশন, মাউস, কীবোর্ডের জন্য ডিভাইস ফাইল থাকে।
- যেমন
/dev/sda1একটি ডিস্ক পার্টিশন হতে পারে।
/etc(Configuration Files):- সিস্টেমের কনফিগারেশন ফাইলগুলো এখানে থাকে, যেমন নেটওয়ার্ক কনফিগারেশন, ব্যবহারকারীর কনফিগারেশন ইত্যাদি।
- এই ফাইলগুলি সিস্টেমের ব্যবহারকারী এবং অন্যান্য প্রোগ্রামগুলোর জন্য গুরুত্বপূর্ণ।
/home(User Home Directories):- ব্যবহারকারীদের হোম ডিরেক্টরি এখানে থাকে।
- প্রতিটি ব্যবহারকারীর জন্য একটি আলাদা সাবডিরেক্টরি তৈরি হয়, যেমন
/home/user1,/home/user2ইত্যাদি।
/lib(Library Files):- সিস্টেম এবং অ্যাপ্লিকেশন প্রোগ্রামগুলির জন্য প্রয়োজনীয় শেয়ারড লাইব্রেরি ফাইলগুলি এখানে থাকে।
- এগুলি প্রোগ্রাম চলানোর সময় ব্যবহৃত হয়।
/media(Removable Media):- এখানে USB ড্রাইভ, সিডি, ডিভিডি এবং অন্যান্য রিমুভেবল মিডিয়া মাউন্ট করা হয়।
- এই ডিরেক্টরির অধীনে আপনি মাউন্ট করা ডিভাইসগুলি দেখতে পারবেন।
/mnt(Temporary Mount Points):- এটি সাধারণত কোন মাউন্ট পয়েন্ট হিসেবে ব্যবহৃত হয়, যেখানে অ্যাড-হক মাউন্ট করা ফাইল সিস্টেম রাখা হয়।
/opt(Optional Software Packages):- এখানে ঐচ্ছিক সফটওয়্যার প্যাকেজগুলি ইনস্টল করা হয়।
- সাধারণত বড় অ্যাপ্লিকেশন যেমন প্রোগ্রাম বা গেম এখানে রাখা হয়।
/proc(Process Information):- এটি একটি ভার্চুয়াল ফাইল সিস্টেম, যেখানে সিস্টেমের চলমান প্রক্রিয়া সম্পর্কিত তথ্য সংরক্ষিত থাকে।
- উদাহরণস্বরূপ,
/proc/cpuinfoফাইলটি CPU সম্পর্কিত তথ্য সরবরাহ করে।
/root(Root User’s Home Directory):- এটি রুট ব্যবহারকারীর হোম ডিরেক্টরি, যেখানে রুট ব্যবহারকারী তার কনফিগারেশন এবং অন্যান্য ডেটা সংরক্ষণ করে।
/sbin(System Binary Files):- এই ডিরেক্টরিতে সিস্টেমের জন্য গুরুত্বপূর্ণ সিস্টেম কমান্ড এবং বাইনারি ফাইলগুলি থাকে, যেমন
shutdown,rebootইত্যাদি। - এই ফাইলগুলি সাধারণত প্রশাসক (root) দ্বারা ব্যবহৃত হয়।
- এই ডিরেক্টরিতে সিস্টেমের জন্য গুরুত্বপূর্ণ সিস্টেম কমান্ড এবং বাইনারি ফাইলগুলি থাকে, যেমন
/tmp(Temporary Files):- এখানে সিস্টেম এবং অ্যাপ্লিকেশনগুলি সাধারণত অস্থায়ী ফাইল সংরক্ষণ করে।
- এই ফাইলগুলি সিস্টেম পুনরায় চালু হলে মুছে যেতে পারে।
/usr(User Programs):- এই ডিরেক্টরি প্রোগ্রামগুলি, সফটওয়্যার প্যাকেজ, অ্যাপ্লিকেশন, লাইব্রেরি এবং শেয়ারড ডেটা ধারণ করে।
- এটি সিস্টেমের সবচেয়ে বড় অংশ এবং অন্যান্য বড় অ্যাপ্লিকেশনগুলি এখানে থাকে।
/var(Variable Files):- এই ডিরেক্টরিতে ভেরিয়েবল ডেটা থাকে যেমন লগ ফাইল, মেইল, ক্যাশে ইত্যাদি।
- উদাহরণস্বরূপ,
/var/logডিরেক্টরিটি সিস্টেম লগ ফাইল ধারণ করে।
সারসংক্ষেপ
UNIX এবং LINUX অপারেটিং সিস্টেমের ফাইল সিস্টেম স্ট্রাকচার এবং হায়ারার্কি একটি গাছের মতো সংগঠিত এবং এর মাধ্যমে সিস্টেমের ফাইল এবং ডেটা যথাযথভাবে সংরক্ষণ এবং পরিচালনা করা হয়। রুট ডিরেক্টরি ("/") থেকে শুরু করে অন্যান্য সমস্ত ডিরেক্টরি এবং ফাইল সাবডিরেক্টরির মাধ্যমে সংগঠিত হয়, এবং প্রতিটি ডিরেক্টরি নির্দিষ্ট কাজের জন্য ব্যবহৃত হয়। এই স্ট্রাকচারটি ব্যবস্থাপনা এবং কনফিগারেশন সহজ করে তোলে এবং সিস্টেমের অপটিমাইজেশনে সহায়ক।
টার্মিনাল এবং শেল প্রম্পট
টার্মিনাল এবং শেল প্রম্পট কম্পিউটার সিস্টেমে কমান্ড লাইনের মাধ্যমে অপারেটিং সিস্টেমের সাথে ইন্টারঅ্যাক্ট করার জন্য গুরুত্বপূর্ণ উপাদান। এগুলি মূলত ব্যবহারকারীকে কম্পিউটারের সাথে সরাসরি যোগাযোগ করতে সাহায্য করে। নিচে তাদের ব্যাখ্যা দেওয়া হলো:
টার্মিনাল কী?
টার্মিনাল হল একটি সফটওয়্যার বা হালকা কমান্ড লাইনের অ্যাপ্লিকেশন যা ব্যবহারকারীর কম্পিউটার এবং শেল (বা অন্যান্য কমান্ড লাইন ইন্টারফেস) এর মধ্যে যোগাযোগের মাধ্যম হিসেবে কাজ করে। এটি গ্রাফিকাল ইউজার ইন্টারফেস (GUI) ছাড়াই কাজ করতে সক্ষম এবং কমান্ডলাইন ভিত্তিক ইনপুট গ্রহণ করে।
টার্মিনাল কমান্ড ইনপুট এবং আউটপুট প্রদর্শনের জন্য ব্যবহৃত হয় এবং মূলত ব্যবহারকারীকে অপারেটিং সিস্টেমের অন্যান্য ফিচারগুলো বা অ্যাপ্লিকেশন চালানোর সুযোগ দেয়। লিনাক্স বা ইউনিক্স সিস্টেমে এটি সাধারণত একটি খালি উইন্ডো যেখানে আপনি কমান্ড টাইপ করতে পারেন।
টার্মিনালের বৈশিষ্ট্য:
- কমান্ড এক্সিকিউট করা: এটি ব্যবহারকারীদের কমান্ড লাইনে সরাসরি কমান্ড ইনপুট এবং এক্সিকিউট করার সুযোগ দেয়।
- পূর্ববর্তী আউটপুট দেখা: একে ব্যবহার করে পূর্ববর্তী কমান্ডের আউটপুট এবং ফলাফল দেখা যায়।
- স্ক্রিপ্ট রান করা: আপনি স্ক্রিপ্ট বা প্রোগ্রাম চালানোর জন্য টার্মিনাল ব্যবহার করতে পারেন।
- রিমোট এক্সেস: টার্মিনাল ব্যবহার করে আপনি রিমোট সার্ভারে লগ ইন করতে পারেন (যেমন SSH কমান্ড দিয়ে)।
টার্মিনাল ব্যবহার উদাহরণ:
- Ubuntu বা Debian-এর মধ্যে "GNOME Terminal" বা "Konsole" টার্মিনাল অ্যাপ্লিকেশন থাকে, যা ব্যবহারকারীদের কমান্ড লাইনের মাধ্যমে কাজ করতে সাহায্য করে।
- macOS এর মধ্যে "Terminal" অ্যাপ্লিকেশন রয়েছে, যা শেল কমান্ড এক্সিকিউট করার জন্য ব্যবহৃত হয়।
শেল প্রম্পট কী?
শেল প্রম্পট হল একটি নির্দিষ্ট সিস্টেম বা শেলের কমান্ড লাইনে প্রদর্শিত টেক্সট বা চিহ্ন, যা ব্যবহারকারীকে জানায় যে সিস্টেম কমান্ড গ্রহণের জন্য প্রস্তুত। এটি সাধারণত একটি সিম্বল বা শব্দের আকারে থাকে, যেমন $, #, বা >, যা শেল বা সিস্টেমের অবস্থা বা ব্যবহারকারীর অধিকারকে নির্দেশ করে।
শেল প্রম্পট সাধারণত বর্তমান কাজের ডিরেক্টরি, ব্যবহারকারী নাম, এবং সিস্টেমের অন্যান্য তথ্য প্রদর্শন করে, এবং এর মাধ্যমে ব্যবহারকারী পরবর্তী কমান্ড টাইপ করে সিস্টেমে চালাতে পারে।
শেল প্রম্পটের উদাহরণ:
$(বিন ইউজার): এটি সাধারনত রেগুলার ইউজার এর শেল প্রম্পট, যা সাধারণ ব্যবহারকারীদের নির্দেশক।- উদাহরণ:
user@hostname:~$
- উদাহরণ:
#(রুট ইউজার): এটি রুট ইউজার এর শেল প্রম্পট, যা প্রশাসনিক বা সুপার ইউজারের অধিকার নির্দেশ করে।- উদাহরণ:
root@hostname:~#
- উদাহরণ:
এখানে:
userবাroot: বর্তমান ব্যবহারকারীর নামhostname: সিস্টেমের নাম~: বর্তমান ডিরেক্টরি (যেটি সাধারনত হোম ডিরেক্টরি হয়ে থাকে)
শেল প্রম্পটের ব্যবহার:
- কমান্ড টাইপ করা: ব্যবহারকারী এখানে কমান্ড টাইপ করে সিস্টেমে এক্সিকিউট করতে পারেন, যেমন
ls,pwd,cd, ইত্যাদি। - টেক্সট ইনপুট: এটি কমান্ডের সাথে একে অপরকে সরাসরি যুক্ত করে এবং আউটপুট প্রদান করে।
- শেল স্ক্রিপ্ট: প্রোগ্রামিং এবং স্ক্রিপ্ট লেখার জন্য শেল প্রম্পট ব্যবহার করা হয়, যা একাধিক কমান্ড সিরিজ চালানোর জন্য ব্যবহৃত হয়।
টার্মিনাল এবং শেল প্রম্পটের মধ্যে পার্থক্য
| বৈশিষ্ট্য | টার্মিনাল | শেল প্রম্পট |
|---|---|---|
| বর্ণনা | এটি একটি সফটওয়্যার অ্যাপ্লিকেশন যা ব্যবহারকারীকে শেলের সাথে যোগাযোগ করার সুযোগ দেয়। | এটি একটি সংকেত বা চিহ্ন যা ব্যবহারকারীকে জানায় যে শেল প্রস্তুত রয়েছে। |
| ফাংশন | টার্মিনাল ব্যবহারকারীর ইনপুট গ্রহণ করে এবং শেল/অপারেটিং সিস্টেমে পাঠায়। | এটি নির্দেশ করে শেল বা সিস্টেম কমান্ড গ্রহণের জন্য প্রস্তুত। |
| উদাহরণ | GNOME Terminal, Konsole, xterm, Terminal (macOS) | $, #, > |
| ব্যবহার | শেল কমান্ড টাইপ করার জন্য এবং স্ক্রিপ্ট চালানোর জন্য ব্যবহৃত হয়। | এটি সাধারণত শেলের মাধ্যমে কমান্ড ইনপুট করতে ব্যবহৃত হয়। |
সারসংক্ষেপ
টার্মিনাল হল একটি অ্যাপ্লিকেশন যা কমান্ড ইনপুট গ্রহণ করে এবং সিস্টেমে সেই কমান্ড এক্সিকিউট করতে সহায়ক, যেখানে শেল প্রম্পট হল সেই চিহ্ন বা সংকেত যা ব্যবহারকারীকে জানায় যে সিস্টেম কমান্ড গ্রহণের জন্য প্রস্তুত। শেল প্রম্পট কমান্ড লাইনের ইনপুটের জন্য নির্দেশক হিসেবে কাজ করে, আর টার্মিনাল হল একটি পরিবেশ যেখানে সেই কমান্ডগুলি কার্যকরী হয়।
Read more