লিনাক্স অপারেটিং সিস্টেম এর প্রাথমিক ধারনা-২

আজ এ সিরিজের ২য় পর্ব পোস্ট করতে যাচ্ছি। এখানে আমি শুধুমাত্র লিনাক্স অপারেটিং সিস্টেম এর বেসিক ধারনাগুলি নিয়ে আলোচনা করার চেষ্টা করছি যাতে ভবিষ্যতে এটি একটি ভিত্তি হিসেবে নতুন লিনাক্স ব্যবহারকারীদেরকে কিছুটা দিক নির্দেশনা দিতে পারে। কারন আমার অভিজ্ঞতায় দেখেছি- নতুন যারা লিনাক্স শেখা শুরু করেন প্রায়ই বলে থাকেন- কোন লিনাক্স(ডিস্ট্রো) ব্যবহার করব, কোথা থেকে শুরু করব, কি কি শিখব, সব তো দেখি কমান্ড লাইন ইত্যাদি ইত্যাদি। অনেকে আবার কিছু কমান্ড এর লিস্ট ধরিয়ে দেন এবং বলেন যে, প্র্যাকটিস করতে থাকেন। কিন্তু একটি সিস্টেম এর উপর পূর্নাঙ্গ ধারনা থাকলে সহজেই টার্গেট ঠিক করে এগিয়ে যেতে পারবেন যেমন- আমি কোন ডিস্ট্রিবিউশনটি ব্যবহার করব, কি কি শিখব, কেন শিখব- এ রকম আরো প্রশ্নের জবাব এখানে আশা করি পেয়ে যাবেন। তারপরও ভুল ত্রুটি থাকতে পারে, সীমাবদ্ধতা থাকতে পারে- তা আগে থেকেই স্বীকার করে নিচ্ছি।
:-p


লিনাক্স ব্যবহার

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

লিনাক্স দিয়ে আপনি নিচের কাজগুলি করতে পারেনঃ

  • ডেস্কটপ অপারেটিং সিস্টেম হিসেবে সাধারন কাজ যেমনঃ লেখালেখি, হিসাব নিকাশ, ব্রাউজিং, গান শোনা, মুভি দেখা ইত্যাদি
  • এক্সটারনাল(ইন্টারনেট) অথবা ইন্টারনাল (ইন্ট্রানেট) ওয়েব সার্ভার তৈরী করা
  • ইন্টারনাল এবং ইন্টারনেট ইমেইল এর জন্য মেইল সার্ভার তৈরী করা
  • অন্যান্য ইন্টারনেট নির্ভর প্রোগ্রাম সার্ভার যেমনঃ এফটিপি, নিউজ, আইআরসি(চ্যাট) ইত্যাদি স্থাপন
  • দূরবর্তী স্থান থেকে আপনার বাসা অথবা অফিসের কার্যকলাপ পর্যবেক্ষনের জন্য ওয়েব ক্যাম সার্ভার স্থাপন
  • বাসা অথবা অফিসে একটি একক ব্রডব্যান্ড ইন্টারনেট কানেকশনকে সব সিস্টেমে শেয়ারিং এর জন্য প্রক্সি/ন্যাট সার্ভার স্থাপন
  • নেটওয়ার্ক এ ইনকামিং এবং আউটগোয়িং ট্রাফিক কন্ট্রোল এর জন্য প্যাকেট ফিল্টারিং ফায়ারওয়্যাল স্থাপন
  • ফাইল এবং প্রিন্ট শেয়ারিং এর জন্য নোভেল অথবা এনটি/২০০০ এর মত ইন্টারনাল ল্যান সার্ভার তৈরী করা। সাম্বা নামে একটি প্যাকেজ আছে যেটি দিয়ে আপনার লিনাক্স সার্ভারকে নেটওয়ার্কে অবস্থিত উইন্ডোজ ক্লায়েন্টগুলির জন্য এনটি সার্ভার হিসেবে কাজ করানো যায়।
  • ইন্টারনাল ল্যান হোস্ট এবং ইন্টারনেট ডোমেইন নেম বেজড ডিএনএস সার্ভার স্থাপন
  • মাইএসকিউএল, ওরাকল অথবা পোস্টজিআরই নির্ভর ডাটাবেজ সার্ভার স্থাপন
  • ফ্যাক্স সার্ভার স্থাপন এবং নেটওয়ার্ক এ অবস্থিত সকল ব্যবহারকারীকে মেশিন থেকেই ফ্যাক্স পাঠানোর সুযোগ করে দেয়া যাতে ফ্যাক্স পাঠানোর আগে তা প্রিন্ট করতে না হয়।
  • ৫০০০ ডলার মূল্যের সিসকো রাউটার এর বদলে একটি ফ্রি ল্যান এবং ওয়ান রাউটার স্থাপন করা
  • কেন্দ্রীয়ভাবে নেটওয়ার্ক এবং সিস্টেম এর কার্যাবলী পর্যবেক্ষনের জন্য Syslog সার্ভার স্থাপন করা।
  • IDS (Intrusion Detection Systems) স্থাপনের মাধ্যমে ইন্টারনেট থেকে আগত হ্যাকিং ও বিভিন্ন ধরনের আক্রমন প্রতিহত করা।
ডস সদৃশ শেল স্ক্রিপ্টিং/কমান্ড
ডস এ যেখানে মাত্র একটি-ই ক্যারেক্টার নির্ভর ইন্টারফেস আছে সেখানে লিনাক্স(ইউনিক্স) এ আছে বেশ কয়েকটি । এদেরকে ইন্টারপ্রেটার এর বদলে শেল বলা হয়ে থাকে যদিও তারা ইন্টারপ্রেটার এর কাজই করে থাকে। ইউনিক্স এর মোট ৩টি শেল আছে যথাঃ 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 এর কমান্ড ব্যবহার করে আপনার লিনাক্স সিস্টেমকে একটি প্রক্সি সার্ভার/ফায়ারওয়াল মেশিন এ পরিনত করতে পারেন। এখানে মাত্র কয়েকটি উদাহরন দিয়েছি - এরকম অসংখ্য কাজ স্ক্রিপ্ট এর মাধ্যমে করা সম্ভব।

লিনাক্স অপারেটিং সিস্টেম এর প্রাথমিক ধারনা-১

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

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

সাধারনতা = সীমাবদ্ধতা
জটিলতা = সক্ষমতা

এটি প্রায় সকল ক্ষেত্রেই প্রযোজ্য। একটি সাধারন অডিও সিস্টেম তা যতই সহজভাবে পরিচালনা করা যাক না কেন একটি ১৫-ব্যান্ড ইকুয়ালাইজার এর মত মানসম্পন্ন কোয়ালিটি আউটপুট দিতে সক্ষম হবে না। উইন্ডোজ সার্ভার ওএস শেখা অনেক সহজ মনে হতে পারে তবে আপনাকে প্রতিটি কাজ নিজ হাতে ইনপুট প্রদানের মাধ্যমেই সম্পন্ন করতে হবে এবং স্বয়ংক্রিয় সিস্টেম তৈরী করার ক্ষমতা হ্রাস করেই তা করতে হবে। অটোমেশন যা কম্পিউটারকে নিজে নিজেই কাজ করতে সক্ষম করে তোলে সেটিই সত্যিকারের প্রোডাক্টিভিটি আনতে সক্ষম এবং একটি প্রতিষ্ঠানের তুলনামুলক সুবিধাকে বাড়িয়ে খরচ কমাতে ভূমিকা রাখে।

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

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

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

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

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

ডিস্ট্রিবিউশনগুলিতে কনফিগারেশন ফাইলগুলি কিছুটা ভিন্ন জায়গায় এবং ভিন্ন নামে থাকতে পারে। উদাহরনস্বরূপ, নেটওয়ার্ক ইন্টারফেস কনফিগারেশন (NIC)-

Debian - /etc/network/interfaces
Red Hat - /etc/sysconfig/network-scripts/ifcfg-eth0
(A separate file for each interface)
Suse - For versions >= 8.0
/etc/sysconfig/network/ifcfg-eth0
(A separate file for each interface)
For versions < 8.0
/etc/rc.config

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

ডেবিয়ান জিএনইউ লিনাক্সের এক সফল উত্তরাধিকার হওয়ায় এবং জিএনইউ এর স্ট্যান্ডার্ড কঠোরভাবে মেনে চলায় অনেকেই একে তাদের পছন্দের ডিস্ট্রিবিউশন হিসেবে ব্যবহার করছেন। ডেবিয়ান এর সাম্প্রতিক ভার্সনে (৫.০, কোড নেম - লেনি) প্রায় ২৫ হাজার সফটওয়্যার প্যাকেজ অন্তর্ভুক্ত হয়েছেহচ্ছে যেগুলি সবই ফ্রি (এ কারনেই এটি ৩১ টি সিডি /৫ টি ডিভিডি তে এসেছে)। একটি মাত্র কমান্ড এর সাহায্যে ডেস্কটপ প্রোগ্রাম, সার্ভার প্রোগ্রাম, ইউলিটিজ, ডেভেলপার টুলস এবং আরো অনেক কিছু ইনস্টল করা সম্ভব।

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

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

লিনাক্স - সাহসী এক অপারেটিং সিস্টেম

ছবি

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

কম্পিউটার টুমরোতে মার্চ, ২০০১ এ লিনাক্স নিয়ে একটি গুরুত্বপূর্ন প্রচ্ছদ রচনা বের হয়। আপনারা যারা এ সংখ্যাটি পড়েছেন তারা নিশ্চয়ই উপরের কয়েকটি লাইন দেখে এতক্ষনে বুঝে গেছেন।

বাংলা ভাষাতে লিনাক্স এর উপর যত লেখা বের হয়েছে আমার দেখা এটি তার মধ্যে অসাধারন।

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

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

এটি বেশ বড় একটি রচনা। প্রায় ১৪ পৃষ্ঠা এর ব্যাপ্তি। তাই আমি এটি পিডিএফ আকারে দিয়ে দিলাম। আপনাদের যাদের আগ্রহ আছে তারা এটি ডাউনলোড করে পড়তে পারেন। আর হ্যা যাদের লিনাক্স সম্পর্কে ধারনা আছে তারাও এটি পড়তে পারেন। কারন অন্যকে এই নতুন সিস্টেম সম্পর্কে ধারনা দিতে হলে রচনাটি বেশ সহায়ক হবে । এটিকে রেফারেন্স হিসেবে দিতে পারেন নতুনদেরকে। ফলে আপনার শ্রম ও সময় দুটোই বেচে যাবে।

এটির সাইজ (৮.০২ মেঃবাইট) একটু বড় হয়ে গেছে সরাসরি স্ক্যান করে পিডিএফ করার জন্য তাই আন্তরিকভাবে দুঃখিত।

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

ডাউনলোড করুন এখান থেকেঃ Linux-Computer Tomorrow

ডেবিয়ান/উবুন্তুতে বাংলা ফন্ট ইনস্টল করা

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

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

প্রথমেই ফন্ট প্যাকেজ দেখার জন্য কমান্ড দিতে পারেনঃ

aptitude search bengali

এভাবে আপনি যেকোন প্যাকেজ এর নামের কিছু অংশ দিয়ে সার্চ করতে পারেন।

ফলে আপনি প্যাকেজের নাম সঠিকভাবে খুজে পাবেন। যেমন আমার এখানে প্যাকেজটির নাম ttf-bengali-fonts

তাই উক্ত প্যাকেজটি ইনস্টলের কমান্ড হবে এরকমঃ

aptitude install ttf-bengali-fonts


যদি উবুন্তুতে ইনস্টল করতে চান কমান্ড এর আগে sudo শব্দটি ব্যবহার করুন। অর্থাৎ এক্ষেত্রে কমান্ড হবেঃ

sudo aptitude install ttf-bengali-fonts

উপরের ফন্টগুলি ইনস্টল হয়ে গেলে নিচের কমান্ড এর মাধ্যমে আপনার উইন্ডোজ ড্রাইভ/পেন ড্রাইভ থেকে ফন্টগুলি লিনাক্সের ড্রাইভে কপি করে দিন।

ফন্ট কপি করার কমান্ডঃ

syntax:

cp sourcepath destinationpath


command:
cp /media/win_D/banglafont/solaimanlipi.ttf /usr/share/fonts/truetype/ttf-bengali-fonts/

এখানে /media/win_D/banglafont/SolaimanLipi.ttf বলতে উইন্ডোজ এর ডি ড্রাইভের banglafont নামক ফোল্ডারে থাকা SolaimanLipi.ttf ফন্টকে বুঝিয়েছি। এটি আপনার পছন্দের যেকোন ফন্ট হতে পারে। তার পাথ উল্লেখ করে দিন এখানে।

সবশেষে ফন্ট ক্যাশ আপডেটের জন্য কমান্ড দিনঃ

fc-cache -fv


যাতে এটি সব এ্যাপ্লিকেশনের সাথে কাজ করতে পারে।

ডেবিয়ান লিনাক্সে উইন্ডোজের এনটিএফএস(NTFS) ড্রাইভার মাউন্ট করা

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

এজন্য প্রথমেই আপনাকে ntfs-3g এবং libfuse2 প্যাকেজ দুটি ইনস্টল করতে হবে যা এনটিএফএস ড্রাইভ মাউন্ট করতে লাগবে। ntfs-3g একটি থার্ড পার্টি প্যাকেজ যেটি এনটিএফএস ড্রাইভ কে উইন্ডোজ এর মত ব্যবহার করার সুযোগ তৈরী করে দেয় অর্থাৎ আপনি এ ড্রাইভগুলিতে রিড-রাইট সবই করতে পারবেন।

উপরোক্ত প্যাকেজ দুটি ইনস্টল করার কমান্ড দেইঃ

apt-get install libfuse2
apt-get install ntfs-3g

দুটি প্যাকেজ ইনস্টল হয়ে গেলে আমরা পরবর্তী কাজ শুরু করব।

আপনার মেশিনে যে ড্রাইভগুলি এনটিএফএস এ আছে তা দেখার জন্য নিচের কমান্ড দিনঃ

fdisk -l | grep NTFS

কারন যে ড্রাইভগুলি এখানে দেখতে পাবেন কেবল সেগুলিই আপনি মাউন্ট করতে পারবেন।

উপরের কমান্ড দেয়ার পর আপনি নিচের মত আউটপুট পাবেনঃ

/dev/hda1 * 1 14387 156288421+ 7 HPFS/NTFS

এখানে দেখা যাচ্ছে যে, আপনার এনটিএফএস ড্রাইভটি প্রথম হার্ডডিস্কে (hda1) অবস্থিত।

এখন আমরা মাউন্ট করার জন্য একটি ফোল্ডার তৈরী করি কারন লিনাক্সে এটি অটোমেটিক তৈরী করবে না। এখানে যেহেতু একটি পার্টিশন তাই এটিকে আপনি windows নামে অভিহিত করতে পারেন। যদি একের অধিক পার্টিশন থাকে তাহলে Win_C, Win_D, Win_E ইত্যাদি নামে ফোল্ডার তৈরী করে নিন।

এজন্য কমান্ড দিনঃ

mkdir /media/windows
mount –t ntfs-3g /dev/hda1 /media/windows


hda1 এর জায়গায় অনেক সময় sda1 দেয়ার প্রয়োজন হতে পারে কারন আজকাল নতুন হার্ডডিস্কগুলি সবই স্ক্যাজি সাপোর্টেড।

উপরে ২য় লাইনের কমান্ডটি আপনার windows ডিরেক্টরী কে /media/windows ডিরেক্টরী তে মাউন্ট করবে ফলে এখন আপনি এ ডিরেক্টরীতে গেলে আপনার এনটিএফএস ড্রাইভের ফাইলসমূহ দেখতে পারবেন। আপনি যদি উপরের মত কাজ করে থাকেন তাহলে ডেস্কটপ এর উপর একটি আইকন দেখতে পাবেন যেটির লেবেল / নাম আপনি ফোল্ডার এর যে নাম দিয়েছেন ঠিক সেরকম দেখাবে। এটির উপর ডাবল ক্লিক করেও আপনি ফাইল একসেস করতে পারবেন।
এখন আর একটি গুরুত্বপূর্ন কমান্ড শিখে নেই যেটি উক্ত ড্রাইভকে আনমাউন্ট করবেঃ

umount /dev/hda1

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

gedit /etc/fstab

এবার নিচের লাইনটিকে যোগ করুনঃ

/dev/hda1 /media/windows ntfs-3g defaults 0 0

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

/dev/sda1 /media/windows ntfs-3g defaults 0 0
/dev/sda2 /media/soft ntfs-3g defaults 0 0
/dev/sda3 /media/programming ntfs-3g defaults 0 0



লিনাক্স এর শক্তিশালী এডিটর -vi শিখুন

  • vi-এর ইতিহাস
vi টেক্সট এডিটরটি আমেরিকার বার্কলেতে অবস্থিত ইউনিভার্সিটি অফ ক্যালিফোর্নিয়াতে তৈরী করা হয়। ১৯৭৬ সালে এটি বিল জয় কর্তৃক তৈরী হয় ed নামক একটি দূর্বল টেক্সট এডিটর এর বিকল্প হিসেবে, এটিকে ৩০০ অথবা ১২০০ বড মডেম এর উপর ব্যবহার যোগ্য করে ডিজাইন করা হয় এবং খুব দ্রুতই এটি একটি শক্তিশালী কিন্তু হালকা টেক্সট এডিটিং প্রোগ্রাম হিসেবে আবির্ভূত হয় যেটিতে প্রত্যেকটি কি স্ট্রোকের সর্বোচ্চ ব্যবহার আদায় সম্ভব।
১৯৯৯ সালে বিল জয় তার এক সাক্ষাৎকারে যে সমস্ত বিষয় তাকে এই vi এডিটর তৈরীতে অনুপ্রানিত করেছিল তা বর্ননা করেন তার নিজের ভাষায়ঃ
… আমরা ed নামে যে এডিটরটি ব্যবহার করছিলাম তা নিয়ে খুবই হতাশ হয়ে পড়েছিলাম। ed সত্যিকার অর্থেই ছিল ব্যর্থ। আমরা এর কোডগুলি জর্জ কুলাউরিস নামে একজন ব্যক্তির কাছ থেকে পেয়েছিলাম … যেটিকে আমরা বলতাম মৃত ব্যক্তিদের জন্য em - Editor - যেহেতু একমাত্র অমরদের পক্ষেই এটিকে দিয়ে সব কাজ করা সম্ভব। সুতরাং আমরা em কে পরিবর্তিত করলাম এবং en তৈরী করলাম। আমি জানিনা পরবর্তীতে এর অন্যকোন ভার্সন যেমন eo অথবা ep বের হয়েছিল কিনা তবে শেষ পর্যন্ত আমরা ex পেয়েছিলাম।(হাসতে হাসতে বললেন) en এর কথা আমি মনে করতে পারি কিন্তু আমি জানিনা কিভাবে এটি ex এ পরিনত হয়েছিল। আমার বাসায় একটি টার্মিনাল ছিল এবং সাথে ছিল একটি ৩০০ বড মডেম যা দিয়ে আমি কার্সরকে মুভ করাতে পারতাম এবং কয়েকমাস দিনরাত প্রানান্ত চেষ্টার পর vi লিখতে সমর্থ হই।
  • vi কেন?
আধুনিক যুগ হওয়া সত্ত্বেও vi আজো গুরুত্বপূর্ন একটি টুলস। গত বিশ বছরে ইউনিক্স/লিনাক্সের যত ডিস্ট্রিবিউশন বের হয়েছে প্রত্যেকের সাথেই ডিফল্টভাবে এটি ইনস্টলড হয়ে থাকে যা থেকে এটির গুরুত্ব কতটুকু তা নিশ্চয়ই অনুমান করা যায়। vi এর অরিজিনাল ভার্সন এর পর এর অনেকগুলি ডেরিভেটিভ বের হয়েছে (যেমনঃ vim, vile এবং elvis) যেগুলির সাথে পরবর্তীতে অনেক ধরনের সুযোগ-সুবিধা যুক্ত হয়েছে। এসব কারনেই vi খুব সম্ভবত পৃথিবীর অন্যতম দ্রুত বিকাশমান এবং স্ট্যাবল একটি টেক্সট এডিটর।
vi এর সাম্প্রতিক ক্লোনগুলির অধিকাংশই যথেষ্ট উন্নত ফিচার সম্পন্ন হওয়ায় আপনি একটি ডকুমেন্ট টাইপ করার সময়ই ডকুমেন্টের টাইপ অনুযায়ী সে টেক্সট গুলিকে ইনডেন্টিং করা বা আপনার প্রোগ্রামিং এর সিনট্যাক্স অনুযায়ী হাইলাইট করার অপশনগুলি স্বয়ংক্রিয়ভাবেই পেয়ে যাবেন যা আপনার কাজকে অনেক সহজ করে দেবে। ইউনিক্স এর প্রথা অনুযায়ী যে সমস্ত ফিচারগুলি অপ্রয়োজনীয় সেগুলি বন্ধ করে রাখতে পারেন আপনার পছন্দ অনুযায়ী এবং সামান্য কয়েক মিনিট সময় ব্যয় করেই আপনি vi কে আপনার পছন্দ অনুযায়ী কাস্টোমাইজ করে ভবিষ্যতের অনেক সময় বাঁচাতে পারেন।
  • কার্যপ্রনালী
বেশীরভাগ টেক্সট এডিটর মাত্র একটি মোডে কাজ করে থাকে এবং মেনু সিস্টেম অথবা একাধিক কি কম্বিনেশন ব্যবহার এর মাধ্যমে আপনাকে ডকুমেন্টে বিভিন্ন ফাংশন প্রয়োগের সুযোগ করে দেয় যেমন উদাহরনস্বরূপ বলা যায় ডকুমেন্ট সেভ করা, সার্চিং করা, কোন টেক্সট রিপ্লেস করা ইত্যাদি। vi এডিটর এর দুটো মোড আছে যথাক্রমে: ইনসার্ট মোড - যে মোডে কোন টেক্সট এডিট করা বা যোগ করা যায় এবং অন্যটি কমান্ড মোড- যেখানে বিভিন্ন এডিটিং ফাংশন এবং ডকুমেন্ট স্থানান্তর এর কমান্ডগুলি দেয়া হয়ে থাকে। এটি শুরুতে কিছুটা অদ্ভুত মনে হলে ও খুব দ্রুতই ব্যবহারের মাধ্যমে এটি আয়ত্বে আনতে পারবেন নিঃসন্দেহে।
কমান্ড মোডে vi তে আপনি টেক্সট পেস্ট করা থেকে শুরু করে একটি শেল চালু করা বা বন্ধ করার মত যেকোন সংখ্যক ফাংশন পরিচালনার নির্দেশ দিতে পারেন। vi তে বেশীরভাগ কমান্ডই খুব সংক্ষিপ্ত এবং একটি অক্ষর চেপেই তা দেয়া সম্ভব। এমনকি ইনসার্ট মোড এ প্রবেশ করতে হয় কমান্ড মোড থেকেই। ইনসার্ট মোডে আপনি শুধুমাত্র লিখতে পারবেন। ব্যতিক্রম বলতে শুধুমাত্র নতুন লেখা ব্যাকস্পেস-কি দিয়ে মুছে সংশোধন করতে পারবেন -ব্যস এটুকুই। ইনসার্ট মোডে লেখা কপি পেস্ট করতে পারবেন না, সার্চ করতে পারবেন না বা ডকুমেন্ট কে সংরক্ষন/সেভ করতে পারবেন না। সব কিছুই কমান্ড মোড এ করতে হবে।
এ দু’মোডই আপনাকে ব্যাপকভাবে ব্যবহার করতে হবে vi তে এবং একবার অভ্যস্ত হয়ে গেলে দেখবেন আপনার বর্তমান ব্যবহৃত এডিটর (নোটপ্যাড, ওয়ার্ড বা অন্য যেকোন এডিটর) থেকেও আপনি কত দ্রুতগতিতে vi এর মাধ্যমে ডকুমেন্ট নিয়ে কাজ করতে পারছেন।
  • মোড এর ব্যবহার এবং লেখালেখি করা
অনেক আলোচনা তো হল। এবার ব্যবহারিক নিয়ে শুরু করা যাক- কি বলেন?
যখন আপনি প্রথম vi চালু করবেন (যেকোন শেল ওপেন করে vi টাইপ করে এন্টার কি চাপুন), আপনি নিচের মত একটি স্ক্রিন পাবেনঃ
~
~
~
~
~
~
প্রতিটি টাইলড(~) এর প্রতীক একটি লাইনকে নির্দেশ করে যেখানে কোন কিছু লেখা নাই । টাইলড কি দিয়ে একটি ফাঁকা লাইন এবং একটি লাইন যার অভ্যন্তরে কোন কিছু নাই - তার মধ্যে পার্থক্যকে নির্দেশ করে অর্থাৎ আপনি যখন এন্টার কি প্রেস করেন তখন একটি নতুন লাইন সৃষ্টি হয় যেটি দেখতে ফাকা মনে হলেও সেখানে একটি নতুন লাইন ক্যারেক্টার থাকে যা একটি নতুন লাইনকে নির্দেশ করে। vi প্রথমে চালু হলে আপনি একে কমান্ড মোডে পাবেন। এখানে একটু মনে রাখতে হবে যে, vi তে কমান্ডগুলি কিন্তু কেস সেনসিটিভ অর্থাৎ বড় হাতের এবং ছোট হাতের অক্ষরকে সে আলাদাভাবে বিবেচনা করে থাকে - উদাহরনস্বরূপ ছোট হাতের i এবং বড় হাতের I কখনই এক রকম কমান্ড এর নির্দেশ হবে না।
নতুন কিছু লিখতে প্রথমেই i চাপুন তাহলে আপনি ইনসার্ট মোডে প্রবেশ করবেন। আপনি এখন থেকে যা টাইপ করবেন তা ডকুমেন্টে নতুন লেখা হিসেবে টাইপ হতে থাকবে। এখন কিছু শব্দ লিখতে থাকুন এবং ব্যাকস্পেস কি চেপে কিছু লেখা মুছে আবার নতুন কিছু লিখুন।
এস্কেপ(Esc) কি চাপ দিলে আপনি ইনসার্ট মোড থেকে বেরিয়ে পূনরায় কমান্ড মোডে প্রবেশ করতে পারবেন। কয়েকবার মোড পরিবর্তন করুন আর কিছুটা অভ্যস্ত হওয়া পর্যন্ত একই কাজ করতে থাকুন। এখন vi থেকে বের হওয়ার জন্য আপনি কমান্ড মোডে সুইচ করুন প্রথমে তারপর টাইপ করুন :q (colon q) এবং enter কি চাপুন। সম্ভবত আপনার প্রত্যাশানুযায়ী এটি বের না হয়ে একটি বার্তা প্রদর্শন করবে যেখানে একটি সতর্কতাস্বরূপ সে জানতে চাইবে আপনি ডকুমেন্ট সংরক্ষন করতে চান কি না? যেহেতু আমরা ডকুমেন্টটি সংরক্ষন করবো না তাই আমরা vi কে একটি কমান্ড দিব যাতে সে এই বার্তা প্রদশন না করে। তাই টাইপ করুন :q! (colon q exclamation mark) এবং enter চাপুন। এখন vi এডিটর থেকে বের হয়ে আপনি পূনরায় শেল এ যেতে পারবেন।
  • ডকুমেন্টে স্থানান্তর করার পদ্ধতি
যারা মাউস দিয়ে ডকুমেন্টে স্থানান্তর করতে অভ্যস্ত তারা প্রথমেই একটু কঠিন মনে করতে পারেন vi এডিটর এ স্থানান্তর করাকে কিন্তু vi এর কি বোর্ড কমান্ড একবার শিখে গেলে দেখতে পাবেন যে এটি মাউস থেকে ও কত সহজ। এ পদ্ধতি গুলি জানতে প্রথমেই আপনি আগে থেকে কিছু টেক্সট আছে এমন একটি ডকুমেন্ট চালু করুন অথবা নতুন একটি ডকুমেন্ট তৈরী করে কিছু লিখুন যাতে এটিতে স্থানান্তর করার কমান্ড সমূহ দেয়া যায়। আগের কোন ডকুমেন্ট ওপেন করার জন্য কমান্ড দিন vi অথবা কমান্ড দিন vi এবং ইনসার্ট মোড এ প্রবেশ করে কয়েক লাইন লিখুনঃ
vi তে স্থানান্তর করার কমান্ডগুলি নিম্নরূপঃ
• h - বামে
• j - নিচে
• k - উপরে
• l - ডানে
কি সহজ মনে হচ্ছে না? যদি ও আধুনিক vi এর সংস্করনগুলিতে এ্যারো কি ব্যবহার করে করে মুভ করা যায় কিন্তু উপরের কি-গুলি ব্যবহারের মাধ্যমে আপনি সব ভার্সনের vi তেই সঠিকভাবে কাজ করতে পারবেন। তাই এটি শিখে রাখা অত্যন্ত গুরুত্বপূর্ণ যাতে আপনাকে কোন একটি বিশেষ ভার্সন এর vi উপর নির্ভর না করতে হয়। এটি শেখার আরেকটি সুবিধা হচ্ছে যে আপনি কি-বোর্ডের কেন্দ্র থেকেই স্থানান্তর করতে পারছেন ফলে টাইপিং স্পিড অনেকগুন বেড়ে যাবে। তাই চেষ্টা চালিয়ে যান।
vi এ স্থানান্তর করার জন্য সার্চ ফাংশনগুলির গুরুত্ব অনেক। কমান্ড মোডে থাকা অবস্থায় টাইপ করুন / (একটি অগ্রবর্তী স্ল্যাশ, তারপর যে শব্দ বা অক্ষর আপনি খুজতে চান) তারপর enter দিন এবং আপনার স্থান থেকে সরাসরি প্রথম মিল পাওয়া স্থানে নিয়ে যাবে। পূনরায় একই সার্চ করতে চাইলে টাইপ করুন / এবং enter চাপুন। পিছন দিকে খোজার অপশনটিও সহজ। শুধুমাত্র টাইপ করুন / এর পরিবর্তে ? । লক্ষ্য রাখবেন যে, সকল কমান্ডই কেস সেনসিটিভ; যদি আপনি এ অপশনটি বন্ধ করতে চান তবে সার্চের আগে কমান্ড দিন :set ic
সার্চ এর ব্যবহার করার সময় মনে রাখতে হবে যে কিছু বিশেষ অক্ষর vi তে বিশেষ অর্থ বহন করে। উদাহরনস্বরূপ ফুল স্টপ অক্ষরটি (.) বলতে যেকোন অক্ষর ম্যাচ করাকে বোঝায়। অর্থাৎ আপনি যখন সার্চ করবেন /192.168, তখন 192.168.1.125 শব্দটি ও খুজে পাবে, কিন্তু সে একইসাথে 1920168 শব্দটি ও খুজে পাবে। আপনি এ সমস্ত বিশেষ অক্ষরের আগে একটি স্ল্যাশ ব্যবহার করে এ সমস্যার সমাধান করতে পারেন । আগের উদাহরনে আপনি যদি প্রথম প্যাটার্নটি খুজে পেতে চান দ্বিতীয়টির বদলে তাহলে টাইপ করুন /192\.168।
  • লেখা সংশোধন করা
পূনরায় একটু স্মরন করা যাক - vi যখন চালু হয় তখন আমরা কমান্ড মোডে থাকি। এখান থেকে i চেপে আপনি ইনসার্ট মোডে প্রবেশ করতে পারেন এবং বিষয়বস্তুর অভ্যন্তরে টাইপ করতে পারেন। কিন্তু আর কি কোন পদ্ধতি আছে ইনসার্ট মোডে প্রবেশ করার জন্য এবং যা লিখেছেন তা সংশোধন কিভাবে করবেন? কমান্ড মোড থেকে ইনসার্ট মোডে যাওয়ার জন্য অনেক অপশন রয়েছে।
আমরা ইতিমধ্যেই জেনেছি যে, i টাইপ করলে আমাদেরকে ইনসার্ট মোডে কার্সর অবস্থানে নিয়ে যায়। এছাড়া আরো কয়েকটি উপায় রয়েছে ইনসার্ট মোডে যাওয়ার। উদাহরনস্বরূপ, যদি I টাইপ করেন, আপনি ইনসার্ট মোডে প্রবেশ করে বর্তমান লাইনের একদম শুরুতে যেতে পারবেন। a টাইপ করে আপনি বর্তমান কার্সরের ডান দিক লেখা থেকে শুরু করতে পারেন এবং A টাইপ করে বর্তমান লাইনের একদম শেষ থেকে শুরু করতে পারবেন। কার্সরের নিচে একটি ফাকা লাইন তৈরী করে লেখার জন্য o টাইপ করুন এবং উপরে তৈরীর জন্য O চাপুন।
একটি একটি করে অক্ষর মুছতে হলে কার্সরটাকে টেক্সট এর সামনে নিয়ে আসুন আর চাপতে থাকুন x। আর ব্যাকস্পেস এর মত অন্যদিক থেকে মুছতে চাপুন X। ব্যস মোছামুছি শিখে গেলেন-তাই না? পুরো লাইন মুছতে চান? তাহলে টাইপ করুন dd। আর একটি শব্দ মুছতে চাপুন dw তাহলে পরের শব্দটি গায়েব হয়ে যাবে। বর্তমান কার্সর অবস্থান থেকে লাইনের শেষ মাথা পর্যন্ত মুছতে হলে D কমান্ড ব্যবহার করুন।
খুব বেশী মোছা হয়ে গেল কি? কোন সমস্যা নাই। আগের লেখা ফিরে পেতে চাপুন u এবং পুরো লাইন ফেরত পেতে U। vi এর কিছু ক্লোন মাল্টিলেভেল আনডু সাপোর্ট করে তাই একের অধিকবার u চাপলে আপনাকে এটি ডকুমেন্ট এ যত আগের অবস্থানে ছিলেন সেখানে নিয়ে যেতে থাকবে। এই আনডু কমান্ডটি ভালোভাবে শিখে নিন কারন তা প্রায়ই আপনার কাজে লাগবে।
  • কপি এবং পেস্ট করা
vi এডিটর এ কপি এবং পেস্ট করার দারুন সুবিধা আছে।
নিশ্চয়ই অনুমান করতে কষ্ট হচ্ছে না যে, এজন্য কয়েকটি কমান্ড শিখতে হবে। yw টাইপ করলে একটি শব্দ কপি হবে, yy একটি লাইন কপি করবে, এবং y বর্তমান কার্সর থেকে আপনার টার্গেট motion পর্যন্ত কপি করবে। উদাহরনস্বরূপঃ আপনি কার্সর থেকে ডকুমেন্ট এর প্রায় নিচে অবস্থিত একটি অক্ষর blue পর্যন্ত কপি করার জন্য টাইপ করুন y/blue এবং enter চাপুন। এটি আসলে সার্চ এর স্থানান্তর পদ্ধতি ব্যবহার করেই কপি করে থাকে। আপনি স্থানান্তর করার যেকোন কমান্ড এখানে ব্যবহার করতে পারেন।
কপি করা টেক্সট পেস্ট করাটা মোটেও কঠিন নয়- p চাপুন কার্সর এর আগে পেস্ট করতে চাইলে আর P চাপুন কার্সর এর পরে পেস্ট করতে চাইলে।
বাফার এর ব্যবহার সাধারন কপি এবং পেস্ট করা থেকে খুব একটা ভিন্ন নয়- একটি নির্দিষ্ট বাফারে কোন টেক্সট কপি করার জন্য টাইপ করুন- "x যেখানে x হচ্ছে বাফার এর নাম (a-z), এবং action হচ্ছে কপি করার কোন কমান্ড, যেমন yy। নির্দিষ্ট বাফার থেকে পেস্ট করতে চাইলে টাইপ করুন "xp অথবা "xP, যেখানে x হচ্ছে বাফারের নাম। কিছুক্ষন প্র্যাকটিস করলে আপনি ঘুমের মধ্যে ও কপি পেস্ট করতে পারবেন এটা নিশ্চিত।
  • ফাইল সংরক্ষন করা
এখন পর্যন্ত আপনি কিভাবে ডকুমেন্ট খুলতে হয়, কিভাবে লিখতে হয়, সংশোধন করতে হয়, স্থানান্তর করতে হয় তা শিখেছেন - তাই কিভাবে ডকুমেন্ট কে সংরক্ষন করবেন তা শেখার সব থেকে ভাল সময় এখন ।
যদি আপনি vi চালু করে থাকেন একটি ফাইলনেমকে প্যারামিটার হিসেবে দিয়ে (যেমনঃ vi )তবে শুধুমাত্র :w টাইপ করলেই আপনার ডকুমেন্টটিকে filename এর নাম হিসেবেই সংরক্ষন করবে। যদি অন্য কোন সমস্যা যেমন পারমিশন বা রিড অনলি সমস্যা দেখা দেয় তবে আপনার যদি সঠিক পারমিশন থাকে আপনি এটিকে ওভাররাইড করার জন্য কমান্ড দিতে পারেনঃ:w!
যদি ডকুমেন্টের নতুন একটি কপি সংরক্ষন করতে চান (ধরি, ব্যাকআপ হিসেবে) অথবা যদি vi চালু করে থাকেন ফাইলনেম প্যারামিটার না দিয়ে তবে নতুন একটি নামসহ সংরক্ষন এর জন্য কমান্ড দিনঃ:w । এছাড়া আরো একটি চমৎকার অপশন % টাইপ করে (যেটি বর্তমান ফাইল এর নামকে বোঝায়) একই কমান্ড দেয়া যায়। উদাহরনস্বরূপ, typing :w %.bak টাইপ করলে বর্তমান ফাইলটিকে একই নামে .bak এক্সটেনশনসহ সংরক্ষন করবে।
একটি মাত্র কমান্ডের সাহায্যে vi থেকে বের হওয়ার জন্য টাইপ করুন:x অথবা :wq; দুটি কমান্ড এর কাজ মূলত একই। আপনি ZZ (কোলন ছাড়া) ব্যবহার করে ও ডকুমেন্ট সংরক্ষন করা ও বের হওযার কাজ করতে পারেন। আগের মত এখানে ও কমান্ড এর শেষে আপনি একটি বিস্ময়চিহ্ন ব্যবহার করে কোন বার্তা প্রদর্শন করা থেকে vi কে বিরত রাখতে পারেন।
  • স্থানান্তরের আরো কয়েকটি কমান্ড
হয়ত খেয়াল করে থাকবেন vi তে কোন কাজ করার জন্য একের অধিক কমান্ড আছে। স্থানান্তর করা ও এক্ষেত্রে ব্যতিক্রম নয় এবং এখানে আরও চমৎকার কিছু পদ্ধতির ব্যবহার আমরা দেখব।
বড়সড় ফাইল প্রায়ই এডিটের প্রয়োজন হয়ে থাকে। তাই যদি লাইন বাই লাইন আপনি স্ক্রলিং করতে থাকেন তাহলে সেটি খুব একটি সুবিধার কাজ হবে না নিশ্চয়ই। এজন্য এক স্ক্রিন পরিমান সামনের দিকে স্থানান্তরের জন্য চাপুন ctrl-F এবং এক স্ক্রিন পিছনে যাওয়ার জন্য চাপুন ctrl-B। সামনের দিকে অর্ধেক পরিমান পেজ স্ক্রল করার জন্য চাপুন ctrl-D, অথবা পিছনে যাওয়ার জন্য ctrl-U । স্ক্রিন এর উপরে এক লাইন বেশী দেখার জন্য টাইপ করুন ctrl-Y এবং নিচে এক লাইন বেশী দেখার জন্য টাইপ করুন ctrl-E.
মাঝে মাঝে কার্সর এর উপর ভিত্তি করে পেজ এ স্থানান্তর করা বেশ সুবিধাজনক। z চাপার পর enter চাপলে বর্তমান কার্সর এর অবস্থানকে পেজ এর উপর স্থানান্তর করবে। z. পেজকে মধ্যভাগে নিয়ে যাবে এবং z- নিচের দিকে নিয়ে যাবে। এ কমান্ডগুলি কিছুটা ঝামেলপূর্ন হলে ও মনোযোগ দিয়ে শিখে রাখুন।
প্রোগ্রামিং করার এর সময় আরো একটি গুরুত্বপূর্ন কমান্ড কাজে লাগে আর সেটি হচ্ছে একটি নির্দিষ্ট লাইন নম্বরে স্থানান্তর করা। আপনি এটি: (কোলন এর পর লাইন নম্বর দিন) কমান্ড দিয়ে করতে পারেন এবং enter চাপুন। উদাহরনস্বরূপ যদি :32 টাইপ করেন তাহলে আপনার ফাইলের ৩২ নম্বর লাইন যেতে পারবেন।
  • অনুসন্ধান এবং বদল করা
আমি কি আপনাকে ইনসার্ট মোডের আর একটি বিশেষ অবস্থা ওভারটাইপ মোড দেখিয়েছি যেটা R টাইপ করে দেয়া হয়ে থাকে অথবা একটি অক্ষর বদলে দেয়ার জন্য শুধুমাত্র r কমান্ড করেই কাজ করা যায় সেটি? যাই হোক এখন তো জানলেন। কিন্তু এখন একটি অন্য বিষয নিয়ে আপনাকে বলতে চাই।
vi তে অনুসন্ধান এবং বদল করার কাজটি মূলত রেগুলার এক্সপ্রেশন ব্যবহার করেই করা হয়ে থাকে এবং এটি দিয়ে অনেক জটিল কাজ সম্পাদন করা সম্ভব। যেমন প্রথম সাতটি potato শব্দের জন্য দ্বিতীয় o টিকে পরিবর্তন করা অথবা দুটি p সম্বলিত যেকোন শব্দকে parrot শব্দ দিয়ে রূপান্তর করা ইত্যাদি। যেকোন সার্চ অপশনের মত এখানে ও সকল কিছুই কেস সেনসিটিভ। এটি বন্ধের জন্য কমান্ড দিন :set ic যাতে কেস সেনসিটিভিটি সংক্রান্ত সমস্যা এড়াতে পারেন।
সাধারন অনুসন্ধান এবং বদল করার কমান্ডগুলি খুবই সহজ; টাইপ করুন :s/foo/bar এর ফলে বর্তমান লাইনে foo শব্দটির বদলে bar শব্দটি দিয়ে বদল করতে পারবেন। ডকুমেন্টের কতটুকু অংশে এ পরিবর্তন করতে হবে তা নির্দিষ্ট করে দেয়া যায় - যেমন :1,4s/foo/bar টি দিলে ১-৪ নম্বর লাইনে যতগুলি পরিবর্তন করা সম্ভব তা করবে। সমস্ত ডকুমেন্টে পরিবর্তন করতে চাইলে টাইপ করুন:%s/chicken/dog যেখানে chicken এর বদলে সব জায়গাতে dog লেখা হয়ে যাবে, একই কমান্ড আরেকটু অন্যভাবে দিতে পারেন :1,$s/chicken/dog, যেখানে $ এর অর্থ একবারে শেষ লাইন পর্যন্ত।
যদি খুব বেশী পরিবর্তন এর আশঙ্কা করেন তবে প্রতিবার বদল করার সময় একটি বার্তা প্রদর্শনের অপশন দিতে পারেন। এজন্য অনুসন্ধান কমান্ড এর একদম শেষে /c অতিরিক্ত যোগ করুন যেমন :%s/abuot/about/c। /p অপশন ব্যবহার করে যতগুলি পরিবর্তন করা হবে সবগুলি একটি বার্তা এর মাধ্যমে দেখানোর কমান্ড দেয়া যায়।
  • শেষকথা
এ টিউটোরিয়ালে vi এডিটর এর শক্তিশালী দিকটি ফুটিয়ে তোলার চেষ্টা করেছি যাতে আপনি দৈনন্দিন জীবনে এটি থেকে সর্বোচ্চ সুবিধা আদায় করে নিতে পারেন। একটু ধৈর্য্য ও পরিশ্রম করে শিখে নিলে আশা করি এতে কাজ করে আনন্দ পাবেন। এটি আপনার আগামী দিনের একটি সম্ভাবনা উম্মোচনে সাহায্য করুক সেই প্রত্যাশায় শেষ করছি।

স্কুইড দিয়ে ট্রান্সপারেন্ট প্রক্সি তৈরী

আমরা বাসাবাড়ি বা অফিসে এখন প্রতিনিয়তই ইন্টারনেট ব্যবহার করে থাকি। এ ইন্টারনেট যখন একের অধিক মেশিনে ব্যবহার করতে চাই তখন কি একের অধিক কানেকশন নিতে হবে? নাকি একটি কানেকশনকেই আপনি একের অধিক মেশিনে নেটওয়ার্কের সাহায্যে ব্যবহার করতে পারবেন?

যদি আপনি একটি প্রক্সি সার্ভার তৈরী করে নিতে পারেন তবে আপনার ল্যানের আওতায় সকল মেশিনই এ প্রক্সি সার্ভার এর কানেকশনটিকে ব্যবহার করতে পারবে। অর্থাৎ একটি ইন্টারনেট কানেকশনই আপনার অফিস অথবা বাসার জন্য যথেষ্ট। কি চমৎকার সুবিধা তাই না? লিনাক্সে অনেক ধরনের প্রক্সি সার্ভার তৈরি করার প্রোগ্রাম আছে। স্কুইড তার মধ্যে অন্যতম।
যে মেশিন কে আপনি প্রক্সি সার্ভার হিসেবে সেটআপ করবেন তাতে কমপক্ষে দুটি ল্যান কার্ড লাগানো থাকতে হবে। আর যদি এজ/জিপিআরএস মডেম এর সাহায্যে সেট আপ করেন তবে একটি ল্যান কার্ড হলেই চলে। এ মডেম দিয়ে যখন ইন্টারনেট কানেকশন তৈরী হবে তখন এটি একটি নেটওয়ার্ক ইন্টারফেসের কাজ করবে। আপনার মেশিনে এ দুটি নেটওয়ার্ক ইন্টারফেসের মধ্যে একটি (eth0) নিশ্চয়ই আভ্যন্তরীন ব্যবহারের জন্য এবং আরেকটি (eth1) ইন্টারনেটের মাধ্যমে বহির্বিশ্বের সাথে যোগাযোগ করার জন্য।

এই গেটওয়ে মেশিনে অবশ্যই কিছু ফায়ারওয়্যাল নিয়ম দিতে হবে যেগুলি হচ্ছেঃ

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

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

• একটি ক্যাশিং প্রক্সি সার্ভার ইনস্টল করব
• কিছু নিয়ম স্থাপন করবো যাতে অন্যান্য মেশিন এটিকে গেটওয়ে হিসেবে কাজে লাগাতে পারে

প্রথমটি খুবই সোজা. রুট হিসেবে এজন্য কমান্ড দিনঃ

apt-get install squid

ফলে স্কুইড ক্যাশিং প্রক্সি সার্ভার ইনস্টল হবে।
/etc/squid/squid.conf ফাইলের মাধ্যমে এটিকে কনফিগার করা হয় এবং এখানে আমাদেরকে কিছু পরিবর্তন করতে হবে।

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

এখানে ইন্টারনাল ইন্টারফেস আমরা ব্যবহার করব এবং এটিকে নিচের মত করে কনফিগারেশন ফাইলে যোগ করবঃ

http_port 127.0.0.1:8080
http_port 192.168.1.1:8080


(আমার মেশিনের ক্ষেত্রে এর এ্যাড্রেস হচ্ছে 192.168.1.1, সার্ভার এর জন্য লুপব্যাক এ্যাড্রেস 127.0.0.1 কে ও অনুমতি দিয়ে রাখলে পরবর্তীতে বেশ কাজে লাগে। তাই আমরা এটিকেও এখানে অনুমতি দিয়ে রাখছি)

এখানে সার্ভারকে একইসাথে হোস্টনেম এবং ভুল প্রদর্শনের জন্য কোন ইমেইল এ্যাড্রেস ব্যবহৃত হবে তাও দিয়ে দেই।

visible_hostname gateway.my.flat
cache_mgr proxy@foo.com

নিচের কমান্ড/অপশনগুলি যোগ করলে এটি একটি ট্রান্সপারেন্ট প্রক্সি হিসেবে কাজ করতে পারবে যদিও এজন্য নিচে বর্নিত আরো কয়েকটি কমান্ড দিতে হবে। ট্রান্সপারেন্ট প্রক্সি হল যে প্রক্সি ব্রাউজারকে কোন কনফিগারেশন না করেই ব্যবহার করা যায়। যদি আপনি ট্রান্সপারেন্ট প্রক্সি না তৈরী করেন তাহলে আপনার প্রতিটি মেশিন এর ব্রাউজারের অপশনে প্রক্সি সার্ভার এর এড্রেস অর্থাৎ গেটওয়ে এবং তার পোর্ট নম্বর (৮০৮০ বা ৩১২৮ ইত্যাদি) উল্লেখ করে দিতে হবে।

httpd_accel_host virtual
httpd_accel_port 80
httpd_accel_with_proxy on
httpd_accel_uses_host_header on


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

192.168.1.x টাইপের এ্যাড্রেস সম্বলিত একটি নেটওয়ার্ক এর জন্য(যা আমার ক্ষেত্রে প্রযোজ্য) নিচের অপশনসমূহ সেট করিঃ

# INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS

# Example rule allowing access from your local networks. Adapt
# to list your (internal) IP networks from where browsing should
# be allowed

acl our_networks src 192.168.1.0/24
http_access allow our_networks
http_access allow localhost

# And finally deny all other access to this proxy
http_access deny all


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

/etc/init.d/squid restart

এটিই আমাদের ক্যাশিং প্রক্সি সার্ভার যার রিকোয়েস্ট রেসপন্স এর এ্যাড্রেস/সকেট হচ্ছে 192.168.1.1:8080. যদি ব্রাউজারে এ এ্যাড্রেস সেট করে দেয়া হয় তখন এটি কাজ করবে কিন্তু আমরা এটিকে এখন ট্রান্সপারেন্ট হিসেবে সেট করতে চাই।

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

নিচের কমান্ডগুলিকে ফায়ারওয়্যালের নিয়মের সাথে যোগ করিঃ

# Transparent proxying
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port
8080


উপরের কমান্ডটি সব ধরনের রিকোয়েস্ট যা পোর্ট 8080 জন্য টার্গেট করা হয়েছে তাকে নতুন স্কুইড ইনস্টলের পোর্ট 80 তে রিডাইরেক্ট করে থাকে।

ফায়ারওয়্যাল নতুন করে চালু করি।

স্কুইড চেক করার জন্য এর লগফাইল দেখতে হবে যখন অন্য মেশিন থেকে কোন ওয়েব ব্রাউজ করা হয়ঃ
গেটওয়ে মেশিন এ নিচের কমান্ডটি দিইঃ

tail -f /var/log/squid/access.log

আপনার ল্যান এর কোন মেশিন ইন্টারনেটে ব্রাউজ করার সময় লগ ফাইলে যদি নিচের মত আউটপুট দেখতে পান তাহলে এটি কাজ করছে বলে ধরে নিতে পারেনঃ

1104854410.086 159 192.168.1.50 TCP_MISS/302 469 GET http://www.google.com/ -
DIRECT/216.239.59.104 text/html
1104854410.217 128 192.168.1.50 TCP_MISS/200 1459 GET http://www.google.co.uk
/ - DIRECT/216.239.59.99 text/html
1104854410.397 180 192.168.1.50 TCP_MISS/200 9022 GET http://www.google.co.uk
/intl/en_uk/images/logo.gif - DIRECT/216.239.59.99 image/gif
1104854415.196 200 192.168.1.50 TCP_MISS/200 1459 GET http://www.google.co.uk
/ - DIRECT/216.239.59.99 text/html
1104854415.271 74 192.168.1.50 TCP_REFRESH_HIT/304 235 GET http://www.google
.co.uk/intl/en_uk/images/logo.gif - DIRECT/216.239.59.99 text/html

ডেবিয়ানে LAMP (Linux Apache Mysql PHP) কনফিগারেশন/ইনস্টলেশন

পি এইচ পি, মাইএসকিউএল এবং অ্যাপাচি ওয়েব সার্ভার প্রোগ্রামিং এর জগতে বেশ পরিচিত কিছু শব্দ। ওয়েব নির্ভর ডাটাবেজ পরিচালিত অ্যাপ্লিকেশন তৈরীতে এ টেকনোলজিগুলির সমন্বয়ে শক্তিশালী, গতিশীল এবং সুরক্ষিত ব্যবস্থা এক কথায় অপ্রতিদ্বন্ধী। তাই অনেকেই আজকাল এ টেকনোলজির ব্যাপারে ক্রমান্বয়েই আগ্রহী হয়ে উঠছেন। যদিও উইন্ডোজে এ টেকনোলজি গুলি ব্যবহার করা যায় কিন্তু আদতেই তারা ওপেন সোর্স প্রজেক্ট হিসেবে লিনাক্সকে কেন্দ্র করেই বিকশিত হয়েছে। আমরা জানি যে, অ্যাপাচি ওয়েব সার্ভার এ বিশ্বের প্রায় ৬০% সার্ভার পরিচালিত হয় যেটি মূলত পিএইচপি এর কন্টেইনার হিসেবে কাজ করে থাকে এবং মাইএসকিউএল ব্যাকএন্ডে ডাটাবেজের চাহিদা পূরন করে। এ টেকনোলজিগুলি যখন লিনাক্সে একসাথে ব্যবহার করা হয় তখন এদের নামের প্রথম অক্ষরগুলি একসাথে সংযুক্ত করে সহজ ভাষায় বলা হয়-LAMP। আমরা এ টেকনোলজিগুলি কিভাবে লিনাক্স এ ইনস্টল করব তা দেখব আজ।
  • LAMP কি?
LAMP বলতে একগুচ্ছ ফ্রি সফটওয়্যার এর সমষ্টিকেই বোঝায় যেগুলি একটি ডায়নামিক ওয়েব সাইট অথবা সার্ভার তৈরির জন্য ব্যবহৃত হয়ে থাকে।

Linux, অপারেটিং সিস্টেম;

Apache, ওয়েব সার্ভার;

MySQL, ডাটাবেজ ব্যবস্থাপনা পদ্ধতি (অথবা ডাটাবেজ সার্ভার) যেখানে ডাটা সুরক্ষিত থাকে।

Perl, PHP এবং অথবা Python, স্ক্রিপ্টিং ল্যাঙ্গুয়েজ যা ডাটাবেজ এর ডাটা কে গ্রাহকের জন্য ওয়েবপেজ এ উপস্থাপন করে থাকে।

  • ডেবিয়ানে Apache2 ইনস্টল করা

ডিফল্ট apache2 প্যাকেজ হিসেবে সাধারনত apache2-mpm-worker প্যাকেজই দেয়া হয়, অন্যান্য প্যাকেজগুলিও পাওয়া যায়।

apache2-mpm-worker

MPM ওয়ার্কার এ্যাপাচি ২ এর জন্য একটি থ্রেড ভিত্তিক সিস্টেম প্রদান করে থাকে। এটা প্রচলিত মডেল থেকে অনেকগুন দ্রুত কাজ করে এবং এটিই রিকমেন্ডেড MPM।

apache2-mpm-prefork

মাল্টি প্রসেসিং মডিউল (MPM) একটি নন-থ্রেডেড, বিভক্ত ওয়েব সার্ভার তৈরী করে দেয় যা এ্যাপাচি ১.৩ এর মত পদ্ধতিতে কোন রিকোয়েস্ট হ্যান্ডেল করে থাকে। এটি সে সমস্ত সাইটগুলির জন্য প্রয়োজন যেখানে থ্রেডিং কে বাদ দিয়ে non-thread-safe লাইব্রেরি সমূহ নিয়ে কাজ করতে হয়।

#apt-get install apache2

#apt-get install apache2-mpm-prefork

এটিই এ্যাপাচি২ এর বেসিক ইনস্টলেশন যা সম্পন্ন করা হল উপরের কমান্ড দুটি দিয়ে। ইনস্টলেশন চেক করার জন্য আপনার ব্রাউজার চালু করে নিচের কমান্ডটি দিন

http://youripaddress/apache2-default/

এটি একটি স্বাগতম বার্তা প্রদানের মাধ্যমে আপনাকে ইনস্টলেশন সফল হওয়ার বার্তা প্রদর্শন করবে।

apache2 এর জন্য ডিফল্ট ডকুমেন্ট রুট ডিরেক্টরী হচ্ছে /var/www

যদি আপনি এর ডিফল্ট ডকুমেন্ট রুট ডিরেক্টরী পরিবর্তন করতে চান তবে আপনাকে /etc/apache2/sites-available/default ফাইলটি পরিবর্তন করতে হবে। এ ফাইলটি পরিবর্তন করু এবং পাথটি দেখিয়ে দিন যেখানে আপনি তা চান।

  • ডেবিয়ানে Mysql Server ইনস্টল করা

MySQL server ইনস্টল করার জন্য নিচের কমান্ডটি দিন

#apt-get install mysql-server4.1 mysql-client4.1 php4-mysql

আপনার apache2.conf ফাইলে অথবা আপনার conf.d/php.ini ফাইলে নিচের লাইনগুলি আনকমেন্ট করেছেন কিনা তা নিশ্চিত হয়ে নিন

;extension=php_mysql.so

আনকমেন্ট করার পর তা হবে

extension=php_mysql.so

যদি আপনার মাইএসকিউএল সার্ভার এর জন্য কোন ওয়েব ইন্টারফেস ইনস্টল করতে চান তবে কমান্ড দিনঃ

#apt-get install phpmyadmin

ইনস্টলেশন শেষ হবার পর আপনি যদি এর ওয়েব ইন্টারফেস এ ঢুকতে চান তবে নিচের কমান্ড দিন আপনার ওয়েব ব্রাউজার চালু করার পর। যখন আপনার নাম ও পাসওয়ার্ড চাইবে তখন ব্যবহারকারি হিসেবে root দিন এবং পাসওয়ার্ড দিন (ডিফল্ট হিসেবে রুট ব্যবহারকারীর জন্য কোন পাসওয়ার্ড থাকে না তাই এটি ফাকা রাখতে পারেন।)

http://ipaddress/phpmyadmin/

  • এ্যাপাচি২ এর জন্য PHP সাপোর্ট ইনস্টল করা

যদি আপনি পিএইচপি এবং সিজিআই স্ক্রিপ্ট সাপোর্ট যোগ করতে চান তবে নিচের প্যাকেজগুলি ইনস্টল করুন

libapache2-mod-php4,php4-cli,php44-common,php4-cgi

# apt-get install libapache2-mod-php4 php4-cli php4-common php4-cgi

আপনার apache2.conf ফাইলে (অথবা আপনার conf.d/php.ini )ফাইলে নিচের লাইনটি আনকমেন্ট করেছেন কিনা তা নিশ্চিত হয়ে নিন

LoadModule php4_module modules/libphp4.so

# এক্সটেনশন সম্বলিত ফাইলগুলিকে পিএইচপি যাতে ইন্টারপ্রেট করতে পারে তার জন্য কমান্ড

AddType application/x-httpd-php .php

যদি আপনি ভিন্ন কোন ইনডেক্স ফাইলকে অনুমতি দিতে চান তবে /etc/apache2/apache2.conf ফাইলে নিচের লাইনটি চেক করুন

DirectoryIndex index.html index.cgi index.pl index.php index.xhtml index.shtml

এখন পরিবর্তন কার্যকরী করার জন্য অ্যাপাচি২ রিস্টার্ট করার কমান্ড দিনঃ

#/etc/init.d/apache2 restart

  • ডেবিয়ান লিনাক্সে এএসপি(ASP) সাপোর্ট ইনস্টল করা

যদি আপনি এ্যাপাচি সার্ভার এর জন্য এএসপি সাপোর্ট দিতে চান তবে আপনাকে libapache-asp-perl package প্যাকেজটি ডেবিয়ানে ইনস্টল করে নিতে হবে।

perl Apache::ASP - Active Server Pages for Apache with mod_perl

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

এটি একটি বহনযোগ্য সমাধান যেটি অনেকখানি ActiveState এর পার্ল স্ক্রিপ্ট এর জন্য NT/IIS ASP যেভাবে কাজ করে থাকে তার অনুরূপ। অনেকখানি কাজ সম্পন্ন হয়েছে এবং এর কর্মক্ষমতা মসৃন করার জন্য আরো কাজ চলছে অব্যাহতভাবে।

#apt-get install libapache-asp-perl

ডেবিয়ান প্যাকেজ সিস্টেম পরিচালনা/সফটওয়্যার ইনস্টলের কমান্ডসমূহ

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

ডেবিয়ান এবং ডেবিয়ান বেজড ডিস্ট্রো যেমন উবুন্তু, কোরেল ইত্যাদি লিনাক্সগুলিতে কয়েকটি কমান্ড যেমনঃ apt-get, aptitude, dpkg ইত্যাদি প্যাকেজ ইনস্টলের জন্য বহুলভাবে ব্যবহৃত হয়। প্রত্যেকটি কমান্ড এরই বেশ কিছু সুবিধা আছে যা অন্য প্যাকেজ এ নেই। তাই এ তিনটি কমান্ড ই শিখতে হয় প্যাকেজ ইনস্টলের জন্য।

যেমনঃ .deb এক্সটেনশনযুক্ত ফাইল দিয়ে প্যাকেজ ইনস্টলের জন্য আপনাকে dpkg কমান্ড দিতে হবে। আবার সিডি, ডিভিডি বা ডেবিয়ান এর সার্ভার থেকে ইনস্টলের জন্য apt-get এবং aptitude কমান্ড দুটি ব্যবহৃত হয়। কিন্তু এ কমান্ডগুলি কিভাবে খুজে নেয় যে প্যাকেজটি কোথায় আছে? এজন্য একটি টেক্সট ফাইল আছে যার নাম ও পাথ হচ্ছে- /etc/apt/sources.list । এ ফাইলে যে এন্ট্রিগুলি আছে তা থেকেই এ কমান্ডগুলি প্যাকেজ ইনস্টল করে থাকে। তাই প্রথমেই এ ফাইলটি কাস্টমাইজ কিভাবে করা যায় আমরা তা দেখব।
  • বেসিক কনফিগারেশন
/etc/apt/sources.list ফাইলে যে ফরম্যাটে ডাটাগুলি থাকে তা নিম্নরূপঃ

deb http://host/debian distribution section1 section2 section3
deb-src http://host/debian distribution section1 section2 section3

উপরে যে এন্ট্রিগুলি দেওয়া হয়েছে তা অবশ্যই কাল্পনিক এবং তা ব্যবহারের জন্য নয়-বোঝার জন্য। প্রত্যেকটি লাইনের প্রথম শব্দ deb অথবা deb-src দ্বারা আর্কাইভের প্রকারভেদকে বোঝায়- অর্থাৎ এটি কি বাইনারি প্যাকেজ (deb), যেটি সাধারনত আমরা প্রিকম্পাইল্ড হিসেবে ব্যবহার করে থাকি অথবা সোর্স প্যাকজ (deb-src) কি-না যেটি অরিজিনাল সোর্স ফাইল, ডেবিয়ান কন্ট্রোল ফাইল (.dsc) এবং diff.gz ফাইল থাকে যেখানে প্রোগ্রামটিকে ডেবিয়ান স্ট্যান্ডার্ড করতে কি কি করা দরকার তার লিস্ট থাকে।

আমরা সাধারনত ডেবিয়ান এর sources.list ফাইলে নিচের তথ্য অনুযায়ী পেয়ে থাকিঃ

# See sources.list(5) for more information, especially
# Remember that you can only use http, ftp or file URIs
# CDROMs are managed through the apt-cdrom tool.
deb http://http.us.debian.org/debian stable main contrib non-free
deb http://non-us.debian.org/debian-non-US stable/non-US main contrib non-free
deb http://security.debian.org stable/updates main contrib non-free

# Uncomment if you want the apt-get source function to work
#deb-src http://http.us.debian.org/debian stable main contrib non-free
#deb-src http://non-us.debian.org/debian-non-US stable/non-US main contrib non-free


এ কয়টি লাইন-ই সাধারনত একটি বেসিক ডেবিয়ান ইনস্টল করার জন্য প্রয়োজন। প্রথম লাইনটি ডেবিয়ান এর অফিসিয়াল আর্কাইভকে-ই নির্দেশ করে থাকে, দ্বিতীয় লাইনটি non-us আর্কাইভকে নির্দেশ করে এবং তৃতীয় লাইনটি ডেবিয়ান সিকিউরিটি আপডেট এর জন্য।

শেষের দুটি লাইনকে উপেক্ষা করার জন্য সামনে একটি # চিহ্ন দেয়া আছে। ফলে apt-get এটিকে কমেন্ট হিসেবে উপেক্ষা করবে। এগুলিই হচ্ছে deb-src লাইনসমূহ যা ডেবিয়ান এর প্যাকেজ সোর্স হিসেবে কাজ করে থাকে। যদি আপনি মাঝে মাঝে প্রোগ্রাম এর মূল সোর্স কোড ডাউনলোড করে থাকেন টেস্টিং এর জন্য বা রি-কম্পাইল করার জন্য তাহলে এগুলিকে আনকমেন্ট করে দিন অর্থাৎ সামনের # চিহ্নটি উঠিয়ে দিন।
যদি নতুন সিডি/ডিভিডি যোগ করতে চান তবে সিডি/ডিভিডি রমে সিডি/ডিভিডি ঢুকিয়ে নিচের কমান্ডটি দিনঃ

apt-cdrom add

এর ফলে নতুন সিডি/ডিভিডি sources.list ফাইলে যোগ হবে।


/etc/apt/sources.list ফাইলটিতে আরো কিছু লাইন থাকতে পারে। APT বিভিন্ন ধরনের আর্কাইভ যথা http, ftp, file (লোকাল ফাইলসমূহ, e.g., একটি ডিরেক্টরী বা ফোল্ডার যেটি ISO9660 টাইপের ফাইলকে মাউন্ট করেছে) এবং ssh নিয়ে কাজ করতে পারে।

/etc/apt/sources.list ফাইল এ পরিবর্তন করার পর apt-get চালাতে যেন ভুলবেন না। এটি অবশ্যই জরুরী কারন যা আপনি নতুন সোর্স হিসেবে দিলেন সেটি থেকে APT কে প্যাকেজ ডাউনলোড করতে সক্ষম করে। অন্যথায় APT আপনার দেয়া তথ্য পাবে না।

যখন আপনি কোন প্যাকেজ বা প্রোগ্রাম ইনস্টল করেন তখন APT যে সমস্ত ফাইলগুলি প্রয়োজন তা /etc/apt/sources.list এ বর্নিত হোস্টগুলি থেকে ডাউনলোড করে তারপর /var/cache/apt/archives/ এ সেভ করে থাকে এবং সবশেষে ইনস্টলেশন প্রক্রিয়া শুরু করে।
প্রধান প্যাকেজ ম্যানেজমেন্ট টুলসমূহঃ ডেবিয়ান এ বেশ কিছু প্যাকেজ ম্যানেজমেন্ট টুলস ব্যবহার করা হয়।

প্রধান প্রধান টুলসগুলি হচ্ছেঃ

dpkg – ডেবিয়ান প্যাকেজ ফাইল ইনস্টলার
apt-get – APT এর জন্য কমান্ড লাইন ইন্টারফেস
aptitude – APT এর জন্য এ্যাডভ্যান্সড টেক্সট এবং কমান্ড লাইন বেসড ইন্টারফেস
synaptic – APT এর জন্য Gtk GUI বেসড ইন্টারফেস
dselect – মেনুভিত্তিক প্যাকেজ ম্যানেজার
tasksel – টাস্ক ইনস্টলার
  • apt দ্বারা সফটওয়্যার ইনস্টলের জন্য কমান্ড
#apt-get install software

-h সাহায্য দেখার জন্য
-d শুধুমাত্র ডাউনলোড এর জন্য- ইনস্টল বা আর্কাইভ খোলার জন্য নয়
-f যদি ইনটেগ্রিটি ফেইল করে তারপর চালানোর জন্য
-s শুধুমাত্র সিমুলেশন এর জন্য। কোন প্যাকেজ ইনস্টল হবে না।
-y সব অপশনের ইয়েস সিলেক্ট করবে অটোমেটিক এবং কোন প্রম্পট দেখাবে না
-u সমস্ত আপগ্রেডেড প্যাকেজসমূহ দেখার জন্য
যদি কোন ইনস্টলকৃত প্রোগ্রাম নষ্ট হয়ে যায় অথবা যদি আপনি কোন সফটওয়্যার এর নতুন ভার্সন ইনস্টল করতে চান পুরনোটি বাদ দিয়ে তাহলে আপনি --reinstall কমান্ডটি ব্যবহার করতে পারেন নিচের মতঃ

# apt-get --reinstall install packagename

আপনার sources.list ফাইল এর প্যাকেজসমূহ এর লিস্ট নবায়ন করতে নিচের কমান্ডটি দিনঃ
#apt-get update

apt এর সাহায্যে সফটওয়্যার আপডেট করার জন্য নিচের কমান্ডঃ
#apt-get -u upgrade

apt এর মিরর লিস্ট সমূহ পরিবর্তন করার কমান্ড
#apt-setup

প্যাকেজ বা প্রোগ্রাম খুজতে হলে কমান্ড
#apt-cache search package

apt দিয়ে প্রোগ্রাম আনইনস্টল করার কমান্ড
#apt-get remove software

  • কিছু শর্টকার্ট কমান্ড
প্যাকেজ লিস্ট আপডেট করার কমান্ড
# apt-get update

বর্তমান লভ্য প্যাকেজ লিস্ট আপডেট করুন
# dselect update

ইনস্টলকৃত প্যাকেজ আপডেট করুন
# apt-get upgrade

প্যাকেজ ইনস্টল এর কমান্ড
# apt-get install pkg

প্যাকেজ আনইনস্টল করুন
# apt-get remove pkg

সমস্ত ইনস্টলকৃত এবং রিমুভকৃত প্রোগ্রাম দেখার জন্য
#dpkg -l

প্যাকেজ এর ইনস্টল স্ট্যাটাস দেখুন
#dpkg -l pkg

সমস্ত প্যাকেজ দেখুন যেগুলি প্যাটার্ন এর সাথে মিলে যায়
#dpkg -S pattern

প্যাকেজ লিস্ট দেখার জন্য যে অক্ষরগুলির সাথে মিলে
#dpkg

প্যাকেজ এ যে সমস্ত ফাইল আছে তার লিস্ট দেখার জন্য
#dpkg -L pkg

প্যাকেজ এর বর্তমান স্ট্যাটাস দেখার জন্য
#dpkg -s pkg
প্যাজেক এর বিস্তারিত দেখার জন্য
#dpkg -p pkg

প্রাসঙ্গিক প্যাকেজ লিস্ট দেখার জন্য
#apt-cache search string

ডেব ফাইল থেকে প্যাকেজ ইনস্টল করার জন্য
# dpkg -i file.deb

প্যাকেজ শুদ্ধিকরন করা
# dpkg -P pkg

একটি প্যাকেজকে পুনরায় কনফিগার করার জন্য
# dpkg-reconfigure pkg

প্যাকেজ এর সোর্স কোড পাওয়ার জন্য
# apt-get source pkg

build-deps কনফিগার করুন সোর্স এর জন্য এবং যেমন প্রয়োজন ইনস্টল করুন
# apt-get build-dep

কোন বিশেষ রিলিজড ভার্সন ইনস্টল করুন
# apt-get -t release install pkg

bootup এর সময় রান হওয়া বন্ধ করার জন্য
# update-rc.d -f name remove

ডিস্ট্রিবিউশন আপগ্রেড করুন
# apt-get –u dist-upgrade

  • কি করে জানতে হবে যে কোন কোন প্যাকেজ সমূহ আপগ্রেড করা প্রয়োজন
apt-show-versions এমন একটি প্রোগ্রাম যার সাহায্যে সিস্টেম এ কোন কোন প্রোগ্রাম আপডেট করা প্রয়োজন তা দেখা যায় এবং আরো বেশ কিছু দরকারী তথ্য ও দেখা যায়।

-u অপশনটি যে সমস্ত প্যাকেজ আপগ্রেড করা সম্ভব তার লিস্ট দেখিয়ে থাকে যার কমান্ডটি হচ্ছে নিম্নরূপঃ
# apt-show-versions -u
APT অর্থাৎ এ্যাডভান্সড প্যাকেজ টুল এর টেক্সট মোডের ক্ষেত্রে পছন্দনীয় কমান্ড হচ্ছে aptitude। এটি আপনি কোন প্যাকেজগুলি ইচ্ছানুযায়ী ইনস্টল করেছেন এবং কোন প্যাকেজগুলি ডিপেনডেন্সী হিসেবে ডাউনলোড করেছেন তা মনে রাখে। ডিপেনডেন্সী প্যাকেজগুলি স্বয়ংক্রিয়ভাবে সে আনইনস্টল করে যখন এগুলি আর কোন প্যাকেজ কর্তৃক প্রয়োজন হয় না। এটির আরো উন্নত ধরনের প্যাকেজ ফিল্টারিং সিস্টেম রয়েছে তবে সেটি কনফিগার করাটা কিছুটা কঠিন মনে হতে পারে।

aptitude update: বর্তমান এ সহজলভ্য প্যাকেজসমূহের লিস্ট আপডেট করে থাকে (পূর্বের কমান্ড apt-get update.)

aptitude upgrade: সহজলভ্য প্যাকেজসমূহকে আপগ্রেড করে থাকে (পূর্বের কমান্ড apt-get upgrade).

aptitude dist-upgrade: আপগ্রেড করার জন্য বিভিন্ন কম্পোনেন্টস মুছে ফেলার দরকার হলেও করবে (পূর্বের কমান্ড apt-get dist-upgrade).

aptitude install pkgname: প্যাকেজ ইনস্টলের কমান্ড (পূর্বের কমান্ড apt-get install).

aptitude remove pkgname: প্যাকেজ আনইনস্টলের কমান্ড (পূর্বের কমান্ড apt-get remove).

aptitude purge pkgname: প্যাকেজ এবং কনফিগ ফাইল সবকিছু রিমুভ করবে (পূর্বের কমান্ড apt-get –purge remove).

aptitude search string: প্যাকেজ সার্চের কমান্ড - “string” সম্বলিত নাম অথবা বর্ননা রয়েছে এমন প্যাকেজ খুজে বের করে (পূর্বের কমান্ড apt-cache search string).

aptitude show pkgname: একটি প্যাকেজের বিস্তারিত দেখার জন্য(পূর্বের কমান্ড apt-cache show pkgname).

aptitude clean: ডাউনলোডকৃত প্যাকেজ ফাইল মুছে ফেলার জন্য (পূর্বের কমান্ড apt-get clean).

aptitude autoclean: বর্তমান প্রচলিত ভার্সনগুলি রেখে অপ্রচলিত প্যাকেজ ফাইলগুলি মুছে ফেলবে (পূর্বের কমান্ড apt-get autoclean).

aptitude hold pkgname: একটি প্যাকেজকে তার ভার্সনেই অক্ষুন্ন রেখে সমস্যাগুলি ঠিক করবে এবং স্বয়ংক্রিয়ভাবে আপডেট করবে না (পূর্বের কমান্ড an obscure echo-to-file command). unhold ব্যবহার করুন যেটি hold আছে সেটিকে unhold করতে।

  • একটি কার্যকরী sources.list
একটি জাকালো পদক্ষেপই খুব ভালো মানের একটি sources.list ফাইল তৈরীর জন্য যথেষ্ট নয়। বরং আপনার সবচেয়ে নিকটে অবস্থিত এমন কোন সাইট পছন্দ করাই সব থেকে ভাল apt-setup ব্যবহারের মাধ্যম।

apt-spy sources.list স্বয়ংক্রিয়ভাবে তৈরী করে থাকে ব্যান্ডউইথ এবং পর্যাপ্ত সাড়া প্রদানের উপর নির্ভর করে।

netselect-apt আরো পূর্নাঙ্গ sources.list তৈরী করে থাকে, কিন্তু পিং টাইম তুলনা সিস্টেমে তা করে যা মোটেও মানসম্পন্ন কোন পদ্ধতি নয়।

# aptitude install apt-spy
# cd /etc/apt ; mv sources.list sources.list.org
# apt-spy -d testing -l sources.apt


  • dpkg-divert কমান্ড

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

# dpkg-divert [--add] filename # add "diversion"
# dpkg-divert --remove filename # remove "diversion"


  • যদি dpkg কমান্ড এর কাজ সঠিকভাবে সম্পন্ন না হয় তখন কি করবেন?

একটি অসম্পন্ন dpkg যেকোন .deb ফাইলের ইনস্টলের ক্ষেত্রে প্রতিবন্ধকতা হয়ে দাড়াতে পারে। নিচের বর্নিত পদ্ধতির সাহায্যে আপনি এ সকল অবস্থা থেকে পরিত্রান পেতে পারেন। (প্রথম লাইনে "links" এর জায়গায় আপনার পছন্দের ব্রাউজার কমান্ড এর নাম দিতে পারেন)

$ links http://http.us.debian.org/debian/pool/main/d/dpkg/
... download the good dpkg_version_arch.deb
$ su
password: *****
# ar x dpkg_version_arch.deb
# mv data.tar.gz /data.tar.gz
# cd /
# tar xzfv data.tar.gz

i386 এর জন্য http://packages.debian.org/dpkg লিংকটি URL হিসেবে ব্যবহার করা যেতে পারে।

  • লোকাল প্যাকেজ আর্কাইভ তৈরী করা
APT এবং dselect সিস্টেম এর সাথে সংগতিপূর্ন লোকাল প্যাকেজ আর্কাইভ তৈরী করার জন্য প্রথমেই প্যাকেজগুলিকে তৈরী করতে হবে তারপর সেটি একটি নির্দিষ্ট ডিরেক্টরীতে রাখতে হবে।

নিচের পদ্ধতির সাহায্যে ডেবিয়ান এর অফিসিয়াল আর্কাইভের মত একটি লোকাল ডেব রিপজিটরী তৈরী করা যেতে পারেঃ

# aptitude install dpkg-dev
# cd /usr/local
# install -d pool # ফিজিক্যাল প্যাকেজ সমূহ এখানে অবস্থিত
# install -d dists/unstable/main/binary-i386
# ls -1 pool | sed 's/_.*$/ priority section/' | uniq > override
# editor override # adjust priority and section
# dpkg-scanpackages pool override /usr/local/ \
> dists/unstable/main/binary-i386/Packages
# cat > dists/unstable/main/Release <<>> /etc/apt/sources.list


  • দ্রুত ডেব রিপজিটরী নিচের ভিন্ন পদ্ধতিতেও করা যায়ঃ
# aptitude install dpkg-dev
# mkdir /usr/local/debian
# mv /some/where/package.deb /usr/local/debian
# dpkg-scanpackages /usr/local/debian /dev/null | \
gzip - > /usr/local/debian/Packages.gz
# echo "deb file:/usr/local/debian ./" >> /etc/apt/sources.list


এ আর্কাইভকে আপনি HTTP বা FTP এর মাধ্যমে দূর থেকে ও ব্যবহার করতে পারবেন তবে সেক্ষেত্রে /etc/apt/sources.list ফাইলে একইসাথে পাথ দেখিয়ে দিতে হবে।

  • auto-apt কমান্ড

auto-apt হচ্ছে একটি চাহিদা মাফিক প্যাকেজ ইনস্টলেশন টুলস।

$ sudo auto-apt update
... update database
$ auto-apt -x -y run
Entering auto-apt mode: /bin/bash
Exit the command to leave auto-apt mode.
$ less /usr/share/doc/med-bio/copyright # access non-existing file
... Install the package which provide this file.
... Also install dependencies

  • প্যাকেজ ম্যানেজমেন্ট এর সাধারন সমস্যাসমূহ

সমস্যা যেকোন সময়ই হতে পারে কিন্তু বেশীরভাগ ক্ষেত্রেই যথাযথ ভাবে ব্যবহারকারীর মনোনিবেশ না করার কারনেই তা হয়ে থাকে। নিচে কিছু সমস্যা যা প্রায়ই ঘটে থাকে তার রিপোর্ট এবং কিভাবে তার সমাধান করতে হবে তা দেয়া হলঃ

apt-get install package কমান্ড দেয়ার সময় যদি আপনি নিচের মত ম্যাসেজ পেয়ে থাকেন

Reading Package Lists... Done
Building Dependency Tree... Done
W: Couldn't stat source package list 'http://people.debian.org unstable/ Packages' (/var/state/apt/lists/people.debian.org_%7ekov_debian_unstable_Packages) - stat (2 No such file or directory)
W: You may want to run apt-get update to correct these missing files
E: Couldn't find package penguineyes


তাহলে আপনি apt-get update কমান্ড দিতে ভুলে গিয়েছিলেন /etc/apt/sources.list ফাইলে সর্বশেষ পরিবর্তনের পর।

যদি নিচে মত সমস্যা দেখায়ঃ

E: Could not open lock file /var/lib/dpkg/lock - open (13 Permission denied)
E: Unable to lock the administration directory (/var/lib/dpkg/), are you root?
when trying any apt-get method other than source, you don't have root permission, that is, you're running as a normal user.


উপরের মত সমস্যা দেখা যায় যদি আপনি apt-get এর দুটো কপি একই সাথে চালাতে যান অথবা এমনকি যদি dpkg প্রসেস চালু থাকা অবস্থায় apt-get চালাতে যান । একমাত্র সোর্স মেথড ই একসাথে একের অধিক চলতে পারে অন্যগুলি নয়।

যদি কোন প্রসেস হঠাৎ করেই বন্ধ হয়ে যায় এবং যদি দেখেন যে প্যাকেজটিকে ইনস্টল বা রিমুভ কোনটিই করা যাচ্ছে না তখন নিচের দুটি কমান্ড ব্যবহার করে চেষ্টা করতে পারেনঃ

# apt-get -f install
# dpkg --configure -a


এবং আবার চেষ্টা করুন। উপরের দ্বিতীয় কমান্ডটি একের অধিকবার রান করা লাগতে পারে। এটি খুব গুরুত্বপূর্ন তাদের জন্য যারা প্রায়ই আনস্ট্যাবল ভার্সন নিয়ে পরীক্ষা নিরীক্ষা করে থাকেন।

যদি আপনি "E: Dynamic MMap ran out of room" এ এররটি পান apt-get update কমান্ড চালানোর সময় তবে নিচের লাইনটি /etc/apt/apt.conf ফাইলে যোগ করুনঃ

APT::Cache-Limit 10000000;

ডেবিয়ান লিনাক্সে সাম্বা সার্ভার কনফিগারেশন

  • সাম্বা কি?
সাম্বা হচ্ছে কিছু ইউনিক্স অ্যাপ্লিকেশনের সমষ্টি যেটি SMB(সার্ভার মেসেজ ব্লক) প্রটোকল নিয়ে কাজ করে থাকে। উইন্ডোজ এবং ওএস/2 এর মত অপারেটিং সিস্টেমগুলি‍ ক্লায়েন্ট সার্ভার নেটওয়ার্কিং এর জন্য SMB প্রটোকল ব্যবহার করে থাকে। এ প্রটোকল সাপোর্টের মাধ্যমে সাম্বা ইউনিক্স সার্ভারকে কার্যকরী করে তোলে এবং মাইক্রোসফট এর প্রোডাক্ট সমূহ যে প্রটোকল ব্যবহার করে সেই একই প্রটোকল এর সাথে যোগাযোগে সহায়তা করে থাকে।

  • সাম্বা ডেবিয়ান প্যাকেজসমূহ

এ প্যাকেজ সমূহ সেই সমস্ত কম্পোনেন্টসগুলোর সমষ্টি যা একটি ডেবিয়ান জিএনইউ/লিনাক্স সিস্টেমকে শক্তিশালী ফাইল এবং প্রিন্টার সার্ভারে পরিনত করে।

বর্তমানে সাম্বা ডেবিয়ান প্যাকেজসমূহ যে কম্পোনেন্টসগুলো নিয়ে গঠিত আসুন তা এক নজরে দেখে নিইঃ

samba – ল্যান ম্যানেজার- ইউনিক্স সিস্টেমে ফাইল এবং প্রিন্টার সার্ভারের ন্যায় কাজ করে থাকে
samba-common – সাম্বার কমন ফাইলসমূহ যা একই সাথে সার্ভার এবং ক্লায়েন্ট ব্যবহার করে থাকে
smbclient – ল্যান ম্যানেজার-ইউনিক্স সিস্টেমের জন্য একটি সাধারন ক্লায়েন্ট
swat – সাম্বা ওয়েব এডমিনিস্ট্রেশন টুল
samba-doc – সাম্বা ডকুমেনটেশন
smbfs - smbfs এর জন্য মাউন্ট এবং আনমাউন্ট কমান্ডসমূহ (কার্নেল 2.2.x এবং তার উপরের).
libpam-smbpass – সাম্বা পাসওয়ার্ড ডাটাবেজ এর জন্য বিশেষ ক্ষমতা প্রদানকারী মডিউল
libsmbclient – সাম্বা সার্ভার এর সাথে প্রোগ্রামসমূহের যোগাযোগের জন্য একটি সাধারন লাইব্রেরী
libsmbclient-dev - libsmbclient সাধারন সাম্বা ক্লায়েন্ট লাইব্রেরী
winbind: উইন্ডোজ এনটি সার্ভার হতে ব্যবহারকারী এবং গ্রুপ তথ্য পাওয়ার জন্য বিশেষ সার্ভিস
python2.3-samba: সাম্বার জন্য পাইথন এর সমন্বয়করন যেটি সাম্বার বিভিন্ন সার্ভিসগুলি আদায়ের জন্য সহায়তা করে থাকে

উল্লেখ্য যে, সব প্যাকেজ ইনস্টল না করে শুধুমাত্র প্রয়োজন ভিত্তিক নির্দিষ্ট সংখ্যক প্যাকজে ইনস্টল করলেই চলে। উদাহরনস্বরূপ, অন্যান্য সাম্বা সার্ভার এ প্রবেশ করার জন্য শুধুমাত্র smbclient এবং samba-common প্যাকেজ দুটিই যথেষ্ট।

  • ডেবিয়ানে সাম্বা ইনস্টল করা

#apt-get install samba samba-client

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

  • ডিরেক্টরী বা ফোল্ডার এবং ব্যবহারকারী তৈরী করা
উইন্ডোজ এর সাথে ব্যবহার এর জন্য আসুন প্রথমেই একটি ফোল্ডার তৈরী করিঃ

#mkdir samba

এ ফোল্ডার এ কাজ করার জন্য একজন ব্যবহারকারী তৈরী করে নেই

#useradd ruchi

এ ব্যবহারকারীর জন্য একটি পাসওয়ার্ড তৈরী করিঃ

#smbpasswd -a ruchi

  • সাম্বা কনফিগারেশন ফাইল
সাম্বা কনফিগারেশন ফাইলটি /etc/samba/smb.conf লোকেশনে অবস্থিত।

এ ফাইলের প্রধান সেকশনটি হচ্ছে Global যেখানে আপনি নিচের উদাহরনের মত সমস্ত অপশনগুলি সেট করতে পারেনঃ

[global]

workgroup = debian
netbios name = debianserver
server string = %h server (Samba %v)
log file = /var/log/samba/log.%m
max log size = 1000
syslog = 0

এরপর আপনাকে শেয়ার ফোল্ডার এর অপশনগুলি কনফিগার করতে হবে (ex:-samba) ব্যবহারকারীর জন্য-নিচের মত করেঃ

[SAMBA]

path=/samba
browseable=yes
writeable=yes
valid users = ruchi
admin users = debain

আপনার কনফিগারেশ ঠিক হল কিনা তা পরীক্ষা করার জন্য নিচের কমান্ডটি দিনঃ

#testparm

এখন আপনাকে সাম্বা সার্ভিস রিস্টার্ট করতে হবে নতুন পরিবর্তনগুলি কার্যকরী করার জন্যঃ

#/etc/init.d/samba restart

আরো বেশি অপশন জানতে চেক করুন
man smb.conf

  • আপনার সাম্বা কনফিগারেশন পরীক্ষা করুন

ruchi ব্যবহারকারীর জন্য আপনার সাম্বা কনফিগারেশন পরীক্ষা করতে নিচের কমান্ডটি দিনঃ

#smbclient -L //debianserver -U ruchi

  • উইন্ডোজ সিস্টেমকে কনফিগার করুন

প্রত্যেকটি সিস্টেমকে অনুমোদন দিন

উইন্ডোজ মেশিনে লগইন করুন যেকোন ব্যবহারকারী হিসেবে যার এ্যাডমিনিস্ট্রেটর ক্ষমতা রয়েছে।

[Windows 2000] Start -> Settings -> Control Panel -> System -> Network Identification -> Properties -> Member of -> Domain -> ডোমেইন নেম দিন যেটি smb.conf ফাইলের 'workgroup' সেকশনে দেওয়া আছে-> ok

সাম্বা ফাইল সার্ভার এর জন্য রুট ব্যবহারকারী নাম এবং পাসওয়ার্ড দিন

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

ডেবিয়ান লিনাক্সে আইপি নেটওয়ার্কিং এর সাধারন বিষয়সমূহ

একটি ডেবিয়ান হোস্ট বা মেশিন এর ভিন্ন ভিন্ন ইন্টারনেট প্রটোকল (আইপি) এড্রেস সম্বলিত কয়েকটি ইন্টারফেস থাকতে পারে। ইন্টারফেসগুলিকে বেশ কয়েকভাগে বিভক্ত করা যায় যেমনঃ

• Loopback: lo
• Ethernet: eth0, eth1
• Wi-Fi: wlan0, wlan1, wifi0,
• Token Ring: tr0, tr1
• PPP: ppp0, ppp1

এছাড়াও আরো বেশ কয়েকধরনের নেটওয়ার্ক ডিভাইস রয়েছে যেমন SLIP, PLIP (serial and parallel line IP), নির্দিষ্ট ইন্টারফেসে ট্রাফিক কন্ট্রোলিং এর জন্য"shaper" ডিভাইস, frame relay, AX.25, X.25, ARCnet, এবং LocalTalk.

ইন্টারনেট অথবা আইপি নির্ভর নেটওয়ার্কে যুক্ত প্রত্যেকটি নেটওয়ার্ক ইন্টারফেসকে/কম্পিউটারকে একটি ৩২ বিটের আইপি এড্রেস দ্বারা চিহ্নিত করা হয়ে থাকে। আইপি এড্রেটি মূলত দুটি অংশে বিভক্ত-প্রথম অংশটি সরাসরি নেটওয়ার্ক এর সাথে যুক্ত এবং দ্বিতীয় অংশটি হোস্ট পার্ট হিসেবে কাজ করে থাকে। এবার আপনি একটি নেটওয়ার্ক এড্রেসকে নিয়ে এর নেটওয়ার্ক এড্রেস এর জন্য ১ এবং হোস্ট এর জন্য ০ বরাদ্দ করুন তাহলে আপনি এ ইন্টারফেসের netmask পেয়ে যাবেন।

প্রথাগতভাবে আইপি নেটওয়ার্কসমূহ কে বিভিন্ন গ্রুপভিত্তিক ক্লাসে বিভক্ত করা হয়ে থাকে যাদের নেটওয়ার্ক এড্রেস অংশ সাধারনতঃ ৮, ১৬ অথবা ২৪ বিট দৈর্ঘ্যের হয়ে থাকে। এ সিস্টেমটি যথেষ্ট সুবিধা দিতে পারেনি এবং অনেক আইপি এড্রেস এখানে অব্যবহৃত থাকত তাই বর্তমানে বিভিন্ন লেন্থের নেটওয়ার্ক পার্ট হিসেবে IPv4 টাইপের নেটওয়ার্ক বন্টন করা হয়ে থাকে।

IP addresses net mask length
Class A 1.0.0.0 - 126.255.255.255 255.0.0.0 = /8
Class B 128.0.0.0 - 191.255.255.255 255.255.0.0 = /16
Class C 192.0.0.0 - 223.255.255.255 255.255.255.0 = /24

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

network addresses length how many
Class A 10.x.x.x /8 1
Class B 172.16.x.x - 172.31.x.x /16 16
Class C 192.168.0.x - 192.168.255.x /24 256

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

রাউটিং টেবিল এ একটি আইপি প্যাকেটকে কিভাবে তার গন্তব্যস্থলে পাঠানো হবে কার্নেলের সেই সংক্রান্ত তথ্যগুলি থাকে। এখানে লোকাল এরিয়া নেটওয়ার্ক এ অবস্থিত একটি ডেবিয়ান হোস্ট এর রাউটিং টেবিল এর স্যাম্পল প্রিন্ট আউটপুট দেয়া হল যার এড্রেস 192.168.50.x/24। কর্পোরেট নেটওয়ার্ক এর জন্য হোস্ট ১৯২.১৬৮.৫০.১ (যেটি একই সাথে ল্যানে অবস্থিত) হচ্ছে একটি রাউটার এবং অপেক্ষাকৃত বড় নেটওয়ার্ক ইন্টারনেট এর জন্য রাউটার হচ্ছে ১৯২.১৬৮.৫০.২৫৪ হোস্টটি।

# route

Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
127.0.0.0 * 255.0.0.0 U 0 0 2 lo
192.168.50.0 * 255.255.255.0 U 0 0 137 eth0
172.20.0.0 192.168.50.1 255.255.0.0 UG 1 0 7 eth0
default 192.168.50.254 0.0.0.0 UG 1 0 36 eth0

• হেডিং এর পর প্রথম লাইনটিতে বলা হয়েছে যে নেটওয়ার্কটি 127.x.x.x সম্বলিত সেটি লুপব্যাক ইন্টারফেস এর মাধ্যমে রাউটেড/নির্দেশিত হবে।
• দ্বিতীয় লাইনে বলা হয়েছে ল্যান এ অবস্থিত হোস্টসমূহের ট্রাফিকগুলি eth0 এর মাধ্যমে রাউটেড হবে।
• তৃতীয় লাইনে বলা হচ্ছে কর্পোরেট নেটওয়ার্ক এর ট্রাফিকগুলি eth0 এর মাধ্যমে 192.168.50.1 গেটওয়ে ব্যবহার করে রাউটেড হবে।
• চতুর্থ লাইন বলছে বৃহৎ ইন্টারনেট নেটওয়ার্ক এর জন্য ট্রাফিকটি 192.168.50.254 এড্রেস এর মাধ্যমে রাউটেড হবে যেটি আসলে eth0।

টেবিলে আইপি এড্রেস সমূহকে তাদের নাম অনুযায়ী ও দেয়া হয় অনেকসময় যেটি সাধারন /etc/networks এ অবস্থিত এড্রেসগুলি থেকে নেয়া হয় অথবা সি লাইব্রেরী পরিবর্তক ব্যবহার করেও পাওয়া যায়।

রাউটিং এর কাজ ছাড়াও কার্নেল এ সংক্রান্ত আরো বেশ কিছু কাজ যেমন নেটওয়ার্ক এড্রেস পরিবর্তক, ট্রাফিক সিস্টেম এর আকার তৈরী এবং ফিল্টারিং এর কাজ করে থাকে।

  • কিভাবে হোস্ট নেম সেট করবেন
ডেবিয়ান ইনস্টলেশনের সময় হোস্টনেম সেট করার জন্য খুব সহজ পথ রয়েছে। আপনি hostname কমান্ড এর সাহায্যে এটি সরাসরি খুজতে পারেন ও সেট করতে পারেন।
একজন ব্যবহারকারী হিসেবে বর্তমান হোস্টনেম দেখার কমান্ড হচ্ছেঃ
$ /bin/hostname

উদাহরন

সরাসরি হোস্টনেম সেট করতে হলে রুট হিসেবে লগইন করে কমান্ড দিনঃ
/bin/hostname newname

যখন আপনার সিস্টেম নতুন করে বুট হবে তখন /etc/hostname থেকে এটি স্বয়ংক্রিয়ভাবে হোস্টনেমগুলি রিড করবে।

  • কিভাবে DNS সেট করবেন
ডেবিয়ান DNS সেট করার প্রক্রিয়াটি অন্যান্য ডিস্ট্রিবিউশনের থেকে ভিন্ন নয়। আপনি হোস্টনেম এবং আইপি এড্রেসগুলি /etc/hosts ফাইলে যোগ করতে পারেন স্ট্যাটিক ভাবে শো করার জন্য।
আপনার মেশিনকে কোন একটি নির্দিষ্ট সার্ভারে নাম খোজার জন্য আপনি তার এড্রেস /etc/resolv.conf ফাইলে সেট করে দিতে পারেন।
উদাহরনস্বরূপ একটি মেশিনকে 192.168.1.1 এড্রেসে DNS সার্ভার খুজে পেতে হলে তার resolv.conf ফাইল এর অপশনগুলি মোটামুটি এরকম হবেঃ
search test.com
nameserver 192.168.3.2

  • আইপি এড্রেস সেট করার প্রক্রিয়া
যেকোন নেটওয়ার্ক কার্ড এর সাথে সংশ্লিষ্ট আইপি এড্রেসগুলিকে /etc/network/interfaces ফাইল হতে দেখে নেয়া যেতে পারে।

একটি স্ট্যাটিক এড্রেস সম্বলিত মেশিনের স্যাম্পল মোটামুটি নিচের মত হয়ে থাকেঃ

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet static
address 192.168.3.90
gateway 192.168.3.1
netmask 255.255.255.0
network 192.168.3.0
broadcast 192.168.3.255

এখানে আমরা আইপি এড্রেস হিসেবে 192.168.3.90 সেট করেছি, ডিফল্ট গেটওয়ে হচ্ছে 192.168.3.1, এবং সবশেষে নেটমাস্ক।

যে মেশিন DHCP দ্বারা পরিচালিত তার কনফিগারেশন আরো সহজঃ

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface - use DHCP to find our address
auto eth0
iface eth0 inet dhcp

(যদি আপনি DHCP নির্ভর সেটআপ ব্যবহার করেন তবে আপনাকে অবশ্যই DHCP ক্লায়েন্ট প্যাকেজ ইনস্টল করে নিতে হবে যেমন - pump,dhcpcd অথবা dhcp3-client এর যেকোন একটি। যদি আপনি এ ফাইলে কোন পরির্বতন করেন/নেটওয়ার্ক সেটআপে কোন পরিবর্তন করেন তবে সেটি কার্যকর করার জন্য নিচের কমান্ডটি দিতে হবেঃ

/etc/init.d/networking restart

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

auto eth0:1
iface eth0:1 inet static
address 192.168.1.60
netmask 255.255.255.0
network x.x.x.x
broadcast x.x.x.x
gateway x.x.x.x

আপনাকে পরিপূর্ন বিবরন যথা এড্রেস, নেটমাস্ক, নেটওয়ার্ক ব্রডকাস্ট এবং গেটওয়ের মান বসিয়ে ফাইলটি সংরক্ষন করতে হবে এবং নেটওয়ার্ক সার্ভিসটি নতুন করে চালু করতে হবে নতুন আইপি এড্রেসটি কার্যকর করার জন্য নিচের কমান্ডটি প্রয়োগের মাধ্যমেঃ

#/etc/init.d/networking restart
নতুন আইপি এড্রেস ঠিকমত বসানো হয়েছে কিনা তা দেখার জন্য নিচের কমান্ডটি দিনঃ

#/sbin/ifconfig

  • ডিফল্ট গেটওয়ে বসানো
যদি আপনি আগের সেকশন পড়ে থাকেন তাহলে আপনি দেখবেন /etc/network/interfaces ফাইলে একটি হোস্টের জন্য একটি স্ট্যাটিক আইপি এড্রেসকে ডিফল্ট রুট হিসেবে সেট করা যায়। যদি আপনি আপনার বর্তমান ডিফল্ট রুট/গেটওয়ে দেখতে চান তাহলে নিচের কমান্ডটি দিনঃ

# netstat -nr

Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
192.168.3.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
0.0.0.0 192.168.3.1 0.0.0.0 UG 0 0 0 eth0

অথবা আপনি route কমান্ডটি ও ব্যবহার করতে পারেনঃ

# /sbin/route

Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.3.0 * 255.255.255.0 U 0 0 0 eth0
default router 0.0.0.0 UG 0 0 0 eth0

(এখানে আইপি এড্রেস 192.168.3.1 এর বদলে হোস্ট নেম দিয়ে রাউটারকে দেখানো হয়েছে- এটি করতে না চাইলে "/sbin/route -n" কমান্ড দিন).

আপনি ডিফল্ট রুট পরিবর্তন করতে চাইলে প্রথমে অবশ্যই আগেরটিকে মুছে ফেলতে হবেঃ

/sbin/route del default gw 192.168.3.1

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

/sbin/route add default gw 192.168.3.100
  • নেটওয়ার্ক পরীক্ষার মৌলিক কিছু কমান্ড
netkit-ping, traceroute, dnsutils, ipchains (for 2.2 kernel), iptables (for 2.4 kernel)এবং net-tools প্যাকেজগুলি ইনস্টল করে নিন এবং নিচের কমান্ডগুলি দিন

$ ping google.com # ইন্টারনেট কানেকশন চেক করুন

$ traceroute google.com # আইপি প্যাকেট ট্রেস করার জন্য

$ ifconfig # হোস্ট এর কনফিগারেশন চেক করার জন্য

$ route -n # রাউটিং ইনফরমেশন চেক করার জন্য

$ dig [@dns-server.com] host.dom [{a|mx|any}] |less # host.dom এর জন্য
dns-server.com এর DNS records চেক করুন[{a|mx|any}]রেকর্ডের জন্য

$ ipchains -L -n |less # প্যাকেট ফিল্টার চেক করার জন্য (2.2 kernel)

$ iptables -L -n |less # প্যাকেট ফিল্টার চেক করার জন্য(2.4 kernel)

$ netstat -a # সকল খোলা পোর্ট খুজে বের করে

$ netstat -l --inet # যে সকল পোর্ট কাজ করছে সেগুলো খুজে বের করে

$ netstat -ln --tcp # কার্যকর টিসিপি পোর্ট খুজে বের করে

সাধারন লিনাক্স কমান্ডসমূহ-১

  • mkdir - ডিরেক্টরী বা ফোল্ডার তৈরী করে
ব্যবহারসমূহ
mkdir [OPTION] DIRECTORY
অপশনসমূহ
ডিরেক্টরী বা ফোল্ডার তৈরী করে, যদি আগে তৈরী করা না থাকে
-m, mode=MODE পারমিশন মোড সেট করার জন্য (যেমনটি chmod এ করা হয়), rwxrwxrwx - নয় umask
-p, parents যদি থাকে তবে কোন এরর দেখাবে না, প্যারেন্ট ডিরেক্টরী তৈরী করবে যখন প্রয়োজন হবে
-v, verbose প্রতিটি তৈরীকৃত ফোল্ডারের জন্য একটি মেসেজ স্ক্রিনে প্রিন্ট করবে
-help সাহায্য প্রদর্শন করবে এ কমান্ডের জন্য এবং কমান্ড থেকে বের হয়ে যাবে
-version ভার্সন এর তথ্য দেখাবে এবং বের হয়ে যাবে কমান্ড থেকে
  • cd - ডিরেক্টরী বা ফোল্ডার এর অবস্থান পরিবর্তন
ডিরেক্টরী পরির্তনের জন্য cd ব্যবহার করুন। ডিরেক্টরীতে প্রবেশের জন্য টাইপ করুন cd তারপর ডিরেক্টরীর নাম। একটি ব্যাপার মনে রাখা দরকার যে, আপনি সবসময়ই কোন না কোন ডিরেক্টরীতে অবস্থান করেন এবং যেকোন সময়ই আপনি ডিরেক্টরী স্ট্রাকচার এর উপরে বা নীচে যেতে পারেন।
  • mv- একটি ফোল্ডার বা ডিরেক্টরী এর নাম পরিবর্তন করে
টাইপ করুন mv তারপর বর্তমান ফোল্ডারের নাম এবং সবার শেষে নতুন নাম।
উদাহরনস্বরূপ: mv testdir newnamedir
  • pwd - বর্তমান ডিরেক্টরী প্রিন্ট করে (print working directory)
বর্তমানে যে ডিরেক্টরীতে অবস্থান করছেন সেটি দেখাবে। বিভিন্ন কমান্ড প্রয়োগের সময় এটি খুব কাজে লাগে।
  • rmdir - ডিরেক্টরী বা ফোল্ডার মুছে ফেলার জন্য (Remove an existing directory)
rm –r এই অপশনটি ডিরেক্টরী ফাইলসহ মুছে ফেলে।
  • chown - ফাইল এর মালিক এবং গ্রুপ পরিবর্তনের জন্য (change file owner and group)
ব্যবহারসমূহ
chown [OPTION] OWNER[:[GROUP]] FILE
chown [OPTION] :GROUP FILE
chown [OPTION] --reference=RFILE FILE
অপশনসমূহ
প্রতিটি ফাইলের মালিক এবং গ্রুপ একটি থেকে আরেকটিতে পরিবর্তন করে থাকে। যখন --reference সহ ব্যবহার করা হয়, তখন প্রতিটি ফাইলের মালিক এবং গ্রুপ RFILE এর মালিক এবং গ্রুপ এ পরিবর্তন করে দেয়।
-c, verbose এর মতই কাজ করে কিন্তু যখন পরিবর্তন হয় কেবল তখনই রিপোর্ট দেখিয়ে থাকে।
-dereference বর্তমান সিমবোলিক লিংককে পরিবর্তন না করে দেখিয়ে দেয়া সিমবোলিক লিংকগুলিকে পরিবর্তন করে দেয়।
-from=CURRENT_OWNER:CURRENT_GROUP
change the owner and/or group of each file only if its current owner and/or group match those specified here. Either may be omitted, in which case a match is not required for the omitted attribute.
-no-preserve-root বিশেষভাবে `/' কে বিবেচনা না করে (ডিফল্ট)
-preserve-root ‘/’ কে বিবেচনা না করে কাজ করা
-f, -silent, -quiet এরর মেসেজগুলিকে বন্ধ করার জন্য
-reference=RFILE use RFILE's owner and group rather than the specifying OWNER:GROUP values
-R, -recursive ফোল্ডার এবং ফাইল এর উপর একসাথে কাজ করার জন্য
-v, -verbose প্রতিটি পরিবর্তনকৃত ফাইলের একটি ডায়াগনোস্টিক রিপোর্ট দেখার জন্য
The following options modify how a hierarchy is traversed when the -R option is also specified. If more than one is specified, only the final one takes effect.
-H if a command line argument is a symbolic link to a directory, traverse it
-L যতগুলি ডিরেক্টরী পাবে তার মধ্যে সকল সিমবোলিক লিংককে পাশ কাটানোর জন্য।
-P কোন সিমবোলিক লিংকে পাশ কাটাবে না।(ডিফল্ট)
  • chmod - ফাইল পারমিশন পরিবর্তন করার জন্য (change file access permissions)
ব্যবহারসমূহ
chmod [-r] permissions filenames
r বর্তমান ডিরেক্টরীর অভ্যন্তরে সাবডিরেক্টরীসমূহের ফাইলগুলির পারমিশন পরিবর্তন করে। পারমিশন এর মাধ্যমে অধিকারসমূহকে নির্ধারিত করে দেয়া হয় যা আমরা অনুমোদন করে থাকি। নিচে বিভিন্ন পারমিশনের অপশনগুলি বর্নিত হল যা অক্ষর বা নাম্বার যেকোন একটি ব্যবহার করেই দেয়া সম্ভব।
u - ব্যবহারকারীকে নির্দেশ করে যিনি ফাইলটির মালিক।
g - ফাইলের গ্রুপ মালিককে নির্দেশ করে।
o - অন্যান্য।
a - সব অধিকার।
r - শুধুমাত্র সব পড়ার অধিকরা।
w - লেখা বা পরিবর্তন করার অধিকার।
x - ফাইলকে প্রোগ্রাম হিসেবে চালানোর অধিকার।
নাম্বার দিয়ে পারমিশনঃ

CHMOD এ নম্বর দিয়ে অধিকার দেয়া যায় যা নিম্নরূপঃ
400 শুধুমাত্র ব্যবহারকারীকে পড়ার অধিকার
040 গ্রুপকর্তৃক পড়ার অধিকার
004 যেকোন ব্যক্তিকে পড়ার অধিকার
200 মালিক কর্তৃক পরিবর্তনের অধিকার
020 গ্রুপ কর্তৃক পরিবর্তনের অধিকার
002 যেকোন ব্যক্তিকে পরিবর্তনের অধিকার
100 মালিক কর্তৃক প্রোগ্রাম হিসেবে চালানোর অধিকার
010 গ্রুপ কর্তৃক প্রোগ্রাম হিসেবে চালানোর অধিকার
001 যে কোন ব্যক্তি কর্তৃক প্রোগ্রাম হিসেবে চালানোর অধিকার execute by anybody
  • ls - ডিরেক্টরী বা ফোল্ডারের সংক্ষিপ্ত তালিকা প্রদর্শন (Short listing of directory contents)
-a লুকায়িত ফাইলগুলি দেখার জন্য
-d বর্তমান ডিরেক্টরীর নাম প্রদর্শনের জন্য
-F একটি / চিহ্নসহ ডিরেক্টরী প্রদর্শনের জন্য। প্রোগ্রাম ফাইলগুলিকে * চিহ্ন দিয়ে প্রদর্শন করে।
-g গ্রুপ মালিকানা প্রদর্শন করে।
-i আইনোড নম্বর প্রদর্শন করে প্রতিটি ফাইলের।
-l প্রতিটি ফাইল এবং ডিরেক্টরির বিস্তারিত দীর্ঘ তালিকা প্রদর্শনের জন্য।
-R সকল সাবডিরেক্টরী সমূহ প্রদর্শনের জন্য্।
-t পরিবর্তন এর সময় অনুসারে তালিকা করে দেখার জন্য্।
  • cp - ফাইল কপি করার জন্য (Copy files)
cp myfile yourfile
"myfile" কে কপি করে "yourfile" নামে বর্তমান ডিরেক্টরি বা ফোল্ডারে। এ কমান্ডের মাধ্যমে সাধারনত "yourfile" নামে ফাইলটি তৈরী হবে যদি তা পূর্বেই তৈরী করা না থাকে। যদি আগেই তৈরীকৃত থাকে তবে কোন সতর্ক বার্তা দেয়া ছাড়াই সেই ফাইলটিকে মুছে নতুন ভাবে কপি করবে।
cp -i myfile yourfile
যদি "-i" অপশন ব্যবহার করা হয় তবে "yourfile" নামে কোন ফাইল থাকলে ওভাররাইট করার আগেই সতর্ক বার্তা দেখাবে।
cp -i /data/myfile
উপরের কমান্ডে বর্তমান ফোল্ডারে "/data/myfile" টি কপি করবে এবং তার নাম হবে একই অর্থাৎ "myfile".
cp -dpr srcdir destdir
"srcdir" ডিরেক্টরী হতে সকল ফাইলকে "destdir" ডিরেক্টরীতে কপি করবে লিংক কে সংরক্ষিত করে(-d), ফাইল এর গুনাবলিকে অক্ষুন্ন রেখে(-p) এবং পৌনঃপুনিকভাবে কপি করে(-r). এই অপশনের সাহায্যে একটি ফোল্ডার বা ডিরেক্টরী এবং তার অভ্যন্তরে অবস্থিত সকল কিছু অন্য একটি ফোল্ডারে কপি করা সম্ভব।
  • ln - একটি ফাইলের সিমবোলিক লিংক তৈরী করে (Creates a symbolic link to a file.)
ln -s test symlink
উপরের কমান্ড symlink নামে একটি লিংক তৈরী করবে যেটি test নামক ফাইলকে পয়েন্ট করে। "ls -i test symlink" কমান্ডটি দেখাবে যে দুটো ফাইলই ভিন্ন যাদের আইনোড ও ভিন্ন ভিন্ন। "ls -l test symlink" কমান্ডটি দেখায় যে symlink লিংকটি test ফাইলকে পয়েন্ট করে।
  • locate - একটি ডাটাবেজ নিয়ন্ত্রিত ফাইল খোজার টুলস।
slocate -u
এ কমান্ডটি slocate ডাটাবেজটিকে তৈরী করে থাকে। এ কমান্ডটি সম্পন্ন হতে বেশ কয়েক মিনিট লাগতে পারে। এ কমান্ডটি যেকোন ফাইল খোজার আগে অবশ্যই ব্যবহার করা উচিত। তবে বেশীরভাগ সিস্টেম এ cron এ সময়ভিত্তিক চালনা হওয়ার কমান্ড দেয়া থাকে। locate whereis কমান্ডটি সমস্ত ফাইলগুলি খুজে বের করে যার নামে whereis শব্দটি আছে।
  • more - এক পেজ এক পেজ আকারে কোন ফাইলের বিষয়বস্তু অথবা কোন কমান্ড এর আউটপুট স্ক্রিন এ শো করে।
  • less - more কমান্ড এর বিপরীত কাজ করে থাকে।
  • cat - ফাইলের বিষয়বস্তুকে স্ট্যান্ডার্ড প্রদর্শন ব্যবস্থাতে পাঠায়। এটি কোন ছোট ফাইলের বিষয়বস্তু প্রদর্শনের জন্য ব্যবহৃত হয়। এটি পাইপিং এর সাথেও ভালভাবে কাজ করে।
  • whereis - একটি কমান্ড কোথায় অবস্থিত তা দেখায়।
  • wc - বাইট, শব্দ এবং লাইন গননা প্রিন্ট করে।

  • df –h - কতটুকু জায়গা ব্যবহৃত হয়েছে হার্ডডিস্কে তা প্রদর্শন করে

  • bg
bg jobs কমান্ডটি বর্তমান job টিকে ব্যাকগ্রাউন্ডে নিয়ে যায়, বর্তমান কোন প্রোগ্রাম কে বন্ধ করে নতুন ইউজার প্রম্পট প্রদান করে। jobs কমান্ডটির মাধ্যমে ব্যাকগ্রাউন্ডে কি কি কাজ সাসপেন্ড অবস্থায় আছে তা দেখা যায়।
  • cal month year - ক্যালেন্ডারের কোন একটি নির্দিষ্ট মাস(month) এবং বছরকে(year) দেখায়।
  • cat files - নির্দিষ্ট ফাইলটির বিষয়বস্তু প্রদর্শন করে।
  • clear - টার্মিনাল স্ক্রিন কে ক্লিয়ার করে।
  • cmp file1 file2 - দুটো ফাইলের তুলনা করতে ব্যবহৃত হয় ও সকল ধরনের পার্থক্য রিপোর্ট করে থাকে। খানিকটা diff কমান্ড এর মতই যদি ও আউটপুট ফরম্যাট ভিন্ন ভিন্ন।
  • diff file1 file2 - দুটো ফাইলের তুলনা করতে ব্যবহৃত হয় ও সকল ধরনের পার্থক্য রিপোর্ট করে থাকে।
  • dmesg - সর্বশেষ সিস্টেম বুট এর সময় যে সকল বার্তা প্রদর্শন করে তা পুনরায় দেখতে এ কমান্ডটি কাজে লাগে।
  • fg
fg jobs - নতুন কোন একটি কাজকে পুনরায় উপরের অবস্থানে নিয়ে আসে।
  • file files - নির্দিষ্ট একটি ফাইলের বিবরণ দেখতে এ কমান্ডটি ব্যবহৃত হয়।
  • find path -name pattern -print
নির্দিষ্ট নামের, প্যাটার্নের(সাধারনত সিঙ্গেল কোটেশন এর ভিতর দেয়া হয়) একটি ফাইল নির্দিষ্ট পাথে খুজে দেখে এবং তার নাম প্রিন্ট করে।
  • finger users - নির্দিষ্ট ব্যবহারকারীর যাবতীয় তথ্য প্রদর্শন করে থাকে।
  • free - ব্যবহৃত এবং অব্যবহৃত মেমোরীর/স্মৃতিভান্ডার এর পরিমান দেখিয়ে থাকে।
  • ftp hostname
নির্দিষ্ট হোস্ট এর সাথে FTP কানেকশন তৈরী করে ফাইল ট্রান্সফারের সুযোগ তৈরী করে দেয়।
  • head files – নির্দিষ্ট ফাইলের প্রথম কয়েক লাইন দেখার জন্য ব্যবহৃত হয়।
  • ispell files - নির্দিষ্ট ফাইলের বানান পরীক্ষার জন্য ব্যবহৃত হয়।
  • kill process_ids
kill - signal process_ids
kill -l
নির্দিষ্ট কাজ কে বন্ধ করতে, নির্দিষ্ট কোন কাজকে কোন সিগন্যাল পাঠানো (যেটি নাম বা নম্বর এর সাহয্যে দেয়া হয়) অথবা কি কি সিগন্যাল পাওয়া যাবে তার লিস্ট দেখায়।
killall program
killall - signal program
কোন নির্দিষ্ট প্রোগ্রামের সকল কপিকে বন্ধ করার জন্য অথবা কোন একটি নির্দিষ্ট সিগন্যাল কোন প্রোগ্রামের সকল কপিকে পাঠানোর জন্য।
  • mail - সাধারন একটি মেইল ক্লায়েন্ট চালু করে যা ই-মেইল পাঠানো এবং গ্রহন করার কাজ করে থাকে।
  • man title
man section title - নির্দিষ্ট ম্যানুয়াল পৃষ্ঠা প্রদর্শন করে থাকে।
  • ping host - একটি ইকো রিকোয়েস্ট পাঠায় TCP/IP এর মাধ্যমে নির্দিষ্ট কোন হোস্টে। একটি রেসপন্স এর সাহায্যে নিশ্চিত হওয়া যায় যে হোস্টটি কর্মক্ষম রয়েছে কিনা।
  • reboot - সিস্টেম রিস্টার্ট করার জন্য (রুট পারমিশন প্রয়োজন হয়).
  • shutdown minutes
shutdown -r minutes
নির্দিষ্ট সময় পর মেশিন বন্ধ করার জন্য কমান্ড। (রুট পারমিশন প্রয়োজন). –r অপশনটি কারনে মেশিন রিবুটের প্রয়োজন হয় একবার বন্ধ হওয়ার পর।
  • sleep time - কমান্ড পরিচালনাকে নিদিষ্ট সেকেন্ড এর জন্য থামিয়ে রাখে।
  • sort files - নির্দিষ্ট ফাইলকে সাজিয়ে দেয়ার কমান্ড।
  • split file - একটি ফাইলকে নির্দিষ্ট সংখ্যক ছোট ফাইলে বিভক্ত করে থাকে।
  • sync - সকল স্থগিত ইনপুট/আউটপুট কমান্ড কমপ্লিট করার জন্য। (রুট পারমিশন প্রয়োজন)
  • telnet host - নির্দিষ্ট হোস্ট এ লগইন সেশন খোলার জন্য।
  • top - প্রতিনিয়ত আপডেটেডেড প্রসেসগুলি প্রদর্শন করে থাকে যতক্ষন না ব্যবহারকারী q বাটন প্রেস করে।
  • traceroute host - ইকো কমান্ড ব্যবহারের মাধ্যমে নিশ্চিত করে এবং হোস্ট এর নেটওয়ার্ক পাথটি প্রিন্ট করে থাকে।
  • uptime - সিস্টেম কতক্ষন ধরে চলছে তা প্রদর্শন করে।
  • w - বর্তমান সিস্টেম ব্যবহারকারীদের তালিক প্রদর্শন করে।
  • wall - বার্তা প্রদর্শন এর অপশন বন্ধকারী ব্যতীত সকল ব্যবহারকারীকে কোন বার্তা প্রদর্শন করার জন্য। Ctrl-D চাপুন ম্যাসেজ বন্ধ করার জন্য।