ইংরেজী ও বাংলা টাইপিং শিখুন - Typing Tutorial


উপরের ছবির মত করে কি-বোর্ডের উপর হাত রাখুন। টাইপিং শেখার জন্য এটিই সবচেয়ে গুরুত্বপূর্ন বিষয় যা আপনাকে প্রতিনিয়তই করতে হবে। এ জায়গা থেকে অন্যান্য সব কি-চেপে টাইপ করতে হয়। তাই লাইনটিকে হোম-রো বা কি-বোর্ডের বাড়ি বলা হয়ে থাকে। অর্থাৎ আপনি যা কিছু টাইপ করুন না কেন আপনার হাত সবসময় এ অবস্থানে থাকবে। সুতরাং বুঝতে পারছেন এটি কত গুরুত্বপূর্ন। দুই শাহাদাত আঙ্গুল যে অবস্থানে থাকে অর্থাৎ F (বাম হাতের শাহাদাত আঙ্গুল) এবং J (ডান হাতের শাহাদাত আঙ্গুল) এর উপর সেখানে প্রত্যেকটি কি-বোর্ডে একটি চিহ্ন দেয়া থাকে যেটি একটু স্পর্শ করলেই বুঝতে পারবেন। এখানে সামান্য একটু উচু করে দেয়া থাকে। ফলে আপনি অন্যান্য অবস্থান থেকে এখানে খুব সহজেই না দেখে হাতের আংগুল সেট করতে পারবেন। স্পেসবার চাপার জন্য দুই বৃদ্ধাংগুল ব্যবহার করুন(ঠিক ছবির মত)।
  • প্রথমে হোম রো-তে আঙ্গুল স্থাপন করে এ লাইনের অক্ষরগুলি চাপুন আর মনে মনে বলতে থাকুন যাতে মুখস্ত হয়ে যায়। উদাহরনঃ বাম হাতে চাপুন asdfg - তারপর ডান হাতে চাপুন ;lkjh। এভাবে বারবার চাপুন আর মুখস্ত করতে থাকুন।
মোটামুটি মুখস্ত হয়ে গেলে এই লাইনের (Home Row) অক্ষরগুলি দিয়ে তৈরী করা যায় এমন কিছু শব্দ টাইপ করুন যেমনঃ
as, ass, salad, dhaka, kajal, jalala, halal, lad, lass, hall, dalal, asad, dad, fall
আমার দেয়া শব্দ ছাড়াও আপনি নিজে নিজে বানিয়ে আরও এর
কম শব্দ টাইপ করুন।
কি সহজ মনে হচ্ছে না? না দেখে টাইপ করা এমন কোন কঠিন বিষয় নয়। আপনি মাত্র এক সপ্তাহ এভাবে চেষ্টা করলেই টাইপ শিখতে পারবেন যাতে মোটামুটি ১৫/২০ অক্ষর মিনিটে টাইপ করা সম্ভব।
  • মাঝের লাইন মুখস্ত হয়ে গেলে এবার যথারীতি আগের মত অবস্থান অর্থাৎ Home Row তে হাত রেখে উপরের সারিতে একটি একটি করে অক্ষর চাপুন এবং আবার হাত Home Row তে নিয়ে আসুন।
চাপুনঃ qwerty(বাম হাত) poiuy(ডান হাত)। চাপার পর হাত আবার হোম-রো তে নিয়ে আসুন। এভাবে মুখস্ত করতে থাকুন।
এবার হোম রো এবং উপরের লাইনের অক্ষর দিয়ে তৈরী করা যায় এমন শব্দ সমূহ টাইপ করুন।
উদাহরনঃ raw, you, tour, power, turag, reward,
query, pot, post, toast, we, weak, week
  • একইভাবে নিচের লাইন প্র্যাকটিস করুন । চাপুন zxcvb(বাম হাত) এবং /.,mn(ডান হাত)। মুখস্ত হলে বিভিন্ন শব্দ টাইপ করুন।
যেমনঃ cow, horse, zoo, ball, nurse, lamp, qatar, umbrella, hot, summer, green, white, blue, red, navy, bounce, connection, remote

সবার শেষে ২৬ টি ইংরেজী অক্ষর দিয়ে তৈরী একটি বাক্য টাইপ করুন-

a quick brown fox jumps over the lazy dog.

টিপসঃ
  • সব সময় মনিটর বা স্ক্রিনের দিকে তাকিয়ে টাইপ করুন- কি-বোর্ডের দিকে তাকাবেন না। বাসায় কম্পিউটার না থাকলে এখানে দেওয়া কি-বোর্ডটি প্রিন্ট করে নিন আর বাসায় এর উপর হাত রেখে প্র্যাকটিস করতে থাকুন।
  • বাংলা টাইপের জন্য নিচের কি-বোর্ডটি প্রিন্ট করে নিন। এটি অভ্র কি-বোর্ড যেটি হুবহু বিজয়ের মতই-দু’একটি কি-বাদে। এটি মূলত অভ্র সফটওয়্যার এ ব্যবহৃত একটি কি-বোর্ড। এ সফটওয়্যারটি www.omicronlab.com থেকে ফ্রি ডাউনলোড করে ইনস্টল করে নিন। তাহলেই বাংলা টাইপ করতে পারবেন। সফটওয়্যারটি পেন ড্রাইভে করে যেকোন জায়গার কম্পিউটারেই টাইপ করা সম্ভব। এজন্য পোর্টেবল ভার্সনটি ডাউনলোড করুন এবং ম্যানুয়াল পড়ে ব্যবহার করুন।

অফলাইনেই ডেবিয়ান বা উবুন্তুতে ইউনিজয় কি-বোর্ড ইনস্টল করুন

যাদের মেশিনে নেট কানেকশন নেই তাদের জন্যই আমি প্যাকেজটি তৈরী করেছি। বাংলা লেখার জন্য ইউনিজয় কি-বোর্ড লিনাক্সে পেতে হলে scim-m17n নামের প্যাকেজটি scim প্যাকেজের সাথে মেশিনে ইনস্টল করতে হয়। কিন্তু যাদের নেট কানেকশন নেই তারা scim-m17n কিভাবে ইনস্টল করবেন? এটিতো সিডিতে দেয়া থাকে না। এমনকি ডেবিয়ান লেনি ৫.০ এ ৩য় ডিভিডিতে এ প্যাকেজটি দেয়া থাকে-যেখানে একটি ডিভিডি যোগাড়েই হিমশিম খেতে হয়। আপনাদের কথা চিন্তা করেই আমি প্যাকেজটি মিডিয়া ফায়ারে আপলোড করে দিলাম।

ডাউনলোড লিংকঃ http://www.mediafire.com/?z4y0gkqncj4

এটি ডাউনলোড করে আনজিপ করুন আপনার লিনাক্স মেশিনে। তারপর উক্ত ফোল্ডারে শেল প্রম্পট এর সাহায্যে ঢুকে কমান্ড দিনঃ

dpkg -i *.deb

সাথে সাথে আপনার মেশিনে SCIM Input Method এর ইউনিজয় ইনস্টল হয়ে যাবে। এরপর কিছু কনফিগারেশন করে নিলেই ব্যবহার করতে পারবেন ইউনিজয় বা আপনার পছন্দের কোন বাংলা কি-বোর্ড। এজন্য আমার আগের একটি পোস্ট দেখুন।

লিংকঃ http://iusumon.blogspot.com/2009/05/using-unijoy-bijoy-keyboard-in-linux.html

ডেবিয়ান/উবুন্তুতে ইন্টারনেট ছাড়া গান শোনা/মুভি দেখার উপায়

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

সফটওয়্যারটি ডাউনলোড করুন এখান থেকেঃ http://code.google.com/p/uec-pack/downloads/list
উপরের লিংক থেকে UEC-Pack_u1.tar.gz প্যাকেজটি নামিয়ে নিন। তারপর আনজিপ করে ফোল্ডার এর ভিতের install.sh বাটনটিতে ডাবল ক্লিক করুন। তারপর ডায়ালগ বক্স থেকে Run in terminal এ ক্লিক করুন। আপনার রুট পাসওয়ার্ড দিন। সব ঠিকঠাক থাকলে ইনস্টল হয়ে যাবে। এখন থেকে আপনি MP3, WMA, WAV, RM, AAC, MPG, AVI, WMV, MP4, FLV, 3GP, MOV, MKV ফর‌ম্যাটগুলির গান এবং ভিডিও ফাইল চালাতে পারবেন।

এ ছাড়াও ইন্টারনেটে আরেকটি লিংকে VLC player, restricted codecs ইত্যাদির জন্য কয়েকটি অফলাইন ইনস্টলার দেয়া আছে। সেগুলিও পরখ করে দেখতে পারেন। এখানে উবুন্তুর বিভিন্ন ভার্সনের জন্য আলাদা ইনস্টলার আছে।
লিংকঃ http://hacktolive.org/wiki/Ubuntu_offline_installers

লিনাক্স কমান্ডের কিছু টিপস

লিনাক্সে কমান্ড মোডে কাজ করার সময় আমরা ছোটখাট কিছু ট্রিকস প্রয়োগ করে অনেক সহজে কাজ করতে পারি। আজ সে রকম কয়েকটি ট্রিকস নিয়ে আলোচনা করব। আশা করি আপনাদের কাজে লাগবে।

  • লিনাক্সে ফাইল অনুসন্ধান করা
লিনাক্সে বিভিন্ন কনফিগারেশন ফাইল এডিট করতে হয় বিভিন্ন প্রোগ্রামকে কাস্টমাইজের জন্য। কিন্তু এগুলির লোকেশন আমরা প্রায়ই ভুলে যাই। তাই এগুলি খুজে বের করার জন্য নিচের কমান্ডটি প্রয়োগ করতে পারেনঃ
find location -option pattern

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

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

find / -name "fstab"
অথবা
find / -name "fst*"

এছাড়া আরো একটি কমান্ড ব্যবহার করতে পারেন। সেটি হল locate filename। এটি find কমান্ড থেকে দ্রুত কাজ করে তবে এটি মূলত এর ডাটাবেজকে ব্যবহার করে সার্চ করে তাই অনেকসময় ফাইল খুজে নাও পেতে পারেন। তবে চেষ্টা করে দেখতে পারেন প্রথমে।

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

rm -v `find / -name "*.tmp"

এখানে ব্যাককোট(‌‌`) ব্যবহার করতে হবে find কমান্ডের দু'পাশে যেটি ট্যাব কি এর উপরে যে key আছে shift এ এটি পাওয়া যাবে। তাহলে উপরের কমান্ড দিয়ে আমরা শিখলাম যে, টেম্পরারি ফাইল (যেগুলির এক্সটেনশন *.tmp) যেগুলি find কমান্ড খুজে পাবে তা মোছার জন্য rm কমান্ডের কাছে পাঠাবে। এখানে -v অপশন ব্যবহার করা হয়েছে যার অর্থ verbose
অর্থাৎ এটি মোছার সময় কোন কোন ফাইল মুছবে তা স্ক্রিনে দেখাবে। এটি বিভিন্ন কমান্ডের ক্ষেত্রে ব্যবহৃত হয়। এটি না দিলে কোন কোন ফাইল মুছবে তা দেখতে পাবেন না। তাই এটি ব্যবহার করাই সুবিধাজনক।

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

লিনাক্সে তারিখ দেখার জন্য date কমান্ডটি ব্যবহার করা হয়। এ কমান্ডটির সাহায্যেই আপনি তারিখ ও সময় পরিবর্তন করতে পারবেন। সেজন্য নিচের ফরম্যাট অনুযায়ী কমান্ড দিতে হবেঃ
date MMDDhhmm

MM অর্থ মাস যা ১-১২ এর যেকোন একটি মান হবে।
DD অর্থ দিন যা ০১-৩১ এর মধ্যে যেকোন মান।
hh এখানে ঘন্টা হিসেবে ০০-২৪ পর্যন্ত যেকোন মান হবে।
mm এখানে মিনিট দিতে হবে যা ০০-৫৯ পর্যন্ত যেকোন মান।
যদি সাল দিতে চান তবে সবার শেষে চার ডিজিটের সাল দিতে পারেন যেমন ২০০৯।

অর্থাৎ যদি তারিখটি আজকের তারিখ ১৮.০৫.২০০৯ এবং সময় ০৬.৪৫ সেট করতে চাই তার জন্য কমান্ড হবেঃ
date 051806452009

লিনাক্সে বাংলা ইউনিজয় (বিজয়) কী-বোর্ড ব্যবহার-Using Unijoy (Bijoy) Keyboard in Linux

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

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

আসুন এজন্য প্রথমেই প্রয়োজনীয় প্যাকেজ ইনস্টল করে নেই। একটি টার্মিনাল খুলে কমান্ড দেইঃ

aptitude install m17n-db
aptitude install scim-m17n

যদি scim এর ভার্সন নম্বর না জানা থাকে তাহলে প্রথমে সার্চ করে নিন নিচের কমান্ড দিয়ে-

aptitude serach scim


ফলাফল দেখে প্রথম কমান্ডে প্যাকেজ এর নাম সঠিকভাবে দিন এবং ইনস্টল করুন।

এখন থেকে আপনি ইউনিজয় কি-বোর্ড সাধারন এডিটর যেমন-gedit এ ব্যবহার করতে পারবেন। এজন্য উক্ত এ্যাপ্লিকেশনের ফাঁকা জায়গায় মাউস এর ডান বাটন ক্লিক করে কি-বোর্ড পরিবর্তন করে নিন।

আর অন্যান্য এ্যাপ্লিকেশনে ব্যবহার করার জন্য নিচের বর্নিত পদ্ধতিতে কাজ করুন তাহলে ctrl + spacebar চেপে বাংলা লিখতে পারবেন সব প্রোগ্রামে।

আগের মতই টার্মিনাল/শেল খুলুন এবং কমান্ড দিনঃ

gedit ব্যবহার করলে কমান্ডঃ
gedit /etc/X11/Xsession.d/90im-switch

অথবা

vi editor ব্যবহার করলে কমান্ড
vim /etc/X11/Xsession.d/90im-switch

খুব সাবধানতার সাথে কমান্ডটি দিবেন। যদি 90im-switch নামে কোন ফাইল থাকে তাহলে সেটি খুলবে নতুবা নতুন একটি ফাইল তৈরী হবে ঐ নামে।

export XMODIFIERS="@im=SCIM"
export XIM_PROGRAM="scim -d"
export GTK_IM_MODULE="scim"
export QT_IM_MODULE="scim"

যদি ফাইলে কোন কিছু লেখা থাকে সব মুছে দিন। vim এডিটর এ খুললে কয়েকবার dd চাপুন তাহলে এক লাইন করে মুছতে পারবেন অথবা একসাথে সব লাইন মুছতে চাপুন 100dd- যেখানে 100 হচ্ছে লাইন নম্বর। আর geditor এ খুললে মাউস দিয়ে সিলেক্ট করে মুছে দিন। এবার উপরের ৪টি লাইন কপি করে পেস্ট করুন এ ফাইলে অথবা নিজে টাইপ করে দিতে পারেন। যদি কপি করতে চান তাহলে কপি করে পেস্ট করার পর "(ডাবল ইনভার্টেড) কমাগুলিকে মুছে নিজে হাতে টাইপ করে দিন। অনেক সময় এগুলি বিভিন্ন এডিটরে বিভিন্ন রকম ক্যারেক্টার হিসেবে দেখায় তাই কপি পেস্ট করলে অন্য ক্যারেক্টারে রূপান্তরিত হয়ে যায়।

সবশেষে সেভ করুন সেভ বাটনে ক্লিক করে। vi এডিটর হলে কমান্ড দিন :wq।এবার মেশিন রিস্টার্ট করুন।

এখন যেকোন প্রোগ্রাম থেকেই ctrl + space bar চাপ দিয়ে বাংলা লেখা শুরু করতে পারবেন। লেখার শুরুতেই টাস্কবারে কি-বোর্ড এর মত একটি আইকন
দেখতে পাবেন যেখানে M17-bn-unijoy কথাটি লেখা আছে। এটিতে ক্লিক করেও কি-বোর্ড পরিবর্তন করতে পারবেন।

এখন যে-কোনো একটি এ্যপ্লিকেশন চালু করে Ctrl এবং Space Bar চাপ দিলে বাংলা লেখা যাবে।

যদি এরপরও সমস্যা হয় তবে System--> Administration --> Scim Input Method Setup এ ক্লিক করে বাংলা কি-বোর্ড (ইউনিজয়) এর জন্য ctrl + spacebar কে কনফিগার করে দিন। এখান থেকে আপনি প্রভাত বা অন্যান্য কি-বোর্ড ও সেট করতে পারবেন। আশা করি আর সমস্যায় পড়তে হবে না লিনাক্সে বাংলা লেখা নিয়ে।

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

আজ এ সিরিজের শেষ পোস্টটি করতে যাচ্ছি। আশা করি এ সিরিজটি নতুন, পুরাতন সব ধরনের লিনাক্স ব্যবহারকারীদের কাজে আসবে। ভবিষ্যতে লিনাক্স নিয়ে বিষয়ভিত্তিক ছোট-খাট টপিকস্ পোস্ট করার ইচ্ছা আছে। তাহলে আসুন শুরু করি-

প্যাকেজ এবং টারবল কি?

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

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

যে ফাইলগুলি ডাউনলোড করবেন তা একটি আর্কাইভ বা সংকুচিত আকারে পাওয়া যায় যেটি উইন্ডোজে আমরা সাধারন উইনজিপ এর মত সফটওয়্যার এর সাহায্যে করে থাকি। লিনাক্সেরও নিজস্ব এরকম একটি জিপ প্রোগ্রাম পাওয়া যায় যার নাম gzip (GNU Zip)। বেশীরভাগ লিনাক্স ডিস্ট্রোতেই gzip/gunzip ইউটিলিটি ডিফল্টভাবে দেয়া থাকে। এ প্রোগ্রামের সাহায্যে সংকুচিত ফাইলগুলি সাধারনত.gz এক্সটেনশনের হয়ে থাকে। লিনাক্সে একটি কমপ্রেশড ফাইলকে আনজিপ করার কমান্ড হচ্ছে নিচের মতঃ

gunzip file-name.tar.gz

PKZip এবং WinZip দুটি কাজ করে থাকে। তারা একাধিক ফাইলকে প্রথমে একটি আর্কাইভে রূপান্তরিত করে এবং তারপর এটিকে কমপ্রেস করে থাকে। লিনাক্স/ইউনিক্সে এ দুটি ধাপ আলাদাভাবে সংঘটিত হয়। gzip কমপ্রেশনের কাজ করে থাকে এবং tar একাধিক ফাইলকে আর্কাইভে রূপান্তরিত করার কাজটি করে থাকে। tar ইউটিলিটি একাধিক ফাইলকে একত্রিত/এক্সট্রাক্ট করার কাজটি করে কিন্তু কোন কমপ্রেশন/সংকোচনের কাজ করে না। যে ফাইলগুলি বড় নয় সেগুলি সাধারনত কমপ্রেস অবস্থায় থাকে না। যদি আপনার ডাউনলোডকৃত ফাইলটি একাধিক ফাইলের আনকমপ্রেসড আর্কাইভ হয় তবে এটিতে .tar এক্সটেনশন থাকবে। এ ফাইলগুলিকে টারবল বলা হয়। এ টারবল থেকে আসল ফাইল ফিরে পাওয়ার জন্য নিচের কমান্ডটি দিতে হয়ঃ

tar -xvf file-name.tar

এখানে লক্ষ্যনীয় যে, যদি কমপ্রেস করার সময় tar বিভিন্ন সাবডিরেক্টরীকে অর্ন্তভুক্ত করে থাকে তবে এটি ডিরেক্টরী স্ট্রাকচার-কে আসলের মত হুবহু ফিরে পেতে সাহায্য করে।

কোন ফাইলকে একত্রিত এবং কমপ্রেসড উভয়টি করা হলে তার জন্য দুটি এক্সটেনশন থাকে। যদি কোন ফাইলের এক্সটেনশন.tar.gz অথবা.tgz পেয়ে থাকেন তাহলে আপনাকে প্রথমে এটি আনজিপ করতে হবে gunzip কমান্ডের সাহায্যে ফলে এর এক্সটেনশন.gz ফাইলের নাম থেকে মুছে যাবে। তারপর আপনি একে tar এর সাহায্যে এক্সট্রাক্ট করতে পারবেন।

tar এর নতুন ভার্সনে আনকমপ্রেস এবং এক্সট্রাক্ট করার কাজ একইসাথে করা যায়ঃ

tar -zxvf file-name.tar.gz

এখানে অতিরিক্ত z সুইচটি আনকমপ্রেসের কাজ করবে যদি আপনার tar টি নতুন ভার্সনের হয়।

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

লিনাক্স কার্নেল পরিচিতি

অন্যান্য অপারেটিং সিস্টেম এর মত লিনাক্সের কার্নেল ও হচ্ছে অপারেটিং সিস্টেম এর মূল অংশ। এটি একটি এক্সিকিউটেবল ফাইল যেখানে অপারেটিং সিস্টেম এর মূল কোডসমূহ থাকে। সকল ডিস্ট্রিবিউশনই লিনাক্স কার্নেল ব্যবহার করে থাকে।

নতুন এবং উন্নত সংস্করনে প্রোগ্রামসমূহ একটু বেশী ভার্সন নম্বর দিয়ে প্রকাশ করা হয় (যেমন নেটস্কেপ ৩, নেটস্কেপ ৪) অথবা সামান্য পরিবর্তনের জন্য একটু ছোট ভার্সন নম্বর দিয়ে প্রকাশ করা হয় (যেমন নেটস্কেপ ৪.০, ৪.৫, ৪.৭৬)। একইভাবে লিনাক্স কার্নেল এর নতুন এবং উন্নত ভার্সনসমূহ এ রকম ভার্সন নম্বর দিয়ে প্রকাশ করা হয়। ডেবিয়ান ৩.১(সার্জ) লিনাক্স কার্নেল এর ২.৪ ভার্সন ব্যবহার করে থাকে যেখানে ডেবিয়ান ৪.০ ডিফল্ট হিসেবে (কোড নেম এচ্‌) ব্যবহার করে ভার্সন ২.৬।

ডিস্ট্রোর ভার্সন জানার সাথে সাথে এই কার্নেল ভার্সনটিও জানতে হবে কারন কার্নেল ভার্সন পরিবর্তনের সাথে সাথে বিভিন্ন সিস্টেম ফাংশন সেটিংস এর প্রক্রিয়া পরিবর্তিত হয়ে থাকে। উদাহরনস্বরূপ বলা যায়, ফায়ারওয়াল এর জন্য যে IPTABLES ইউটিলিটি ব্যবহার করা হয় সেটি শুধুমাত্র ২.৪ অথবা তার পরের কার্নেল এর জন্য প্রযোজ্য ( ২.২ ভার্সন কার্নেলে এর বদলে IPCHAINS ব্যবহার করা হত।)

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

লিনাক্সের ফাইল সিস্টেমে একটি অংশ আছে যেটি আদৌ কোন ফাইল সিস্টেম নয়। এটি সিস্টেম মেমোরীতে কি ঘটছে তা দেখার জন্য একটি দরজা স্বরূপ মাত্র যেখানে কার্নেল এই মুহুর্তে যা পর্যবেক্ষন করছে তা দেখায়। এজন্য নিচের কমান্ড দিনঃ

cd /proc
ls -laF | more

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

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

আরো জানার উপায়

ইউনিক্স এবং লিনাক্স এর জন্য নিজস্ব অনলাইন হেল্প রয়েছে। তাদের বলা হয় "man pages"। এজন্য প্রথমে man টাইপ করুন তারপর কমান্ডের নাম টাইপ করুন। উদাহরনস্বরূপঃ

man mount

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

man পেজ ছাড়াও HOWTOs নামে একটি বিশাল ডকুমেন্টেশন প্রোজেক্ট আছে লিনাক্সের জন্য যেটি স্বেচ্ছাসেবীদের দ্বারা পরিচালিত হয়ে থাকে। যত ধরনের বিষয় আছে প্রায় প্রত্যেকের উপরই HOWTO নামক টপিক রয়েছে। কিছু HOWTOs আছে যা ততটা স্পষ্ট নয় কিন্তু বাকিগুলি যথেষ্ট মানসম্পন্ন ও সুলিখিত। HOWTO ডকুমেন্টসমূহ কেন্দ্রীয়ভাবে লিনাক্স ডকুমেন্টেশন প্রজেক্ট ওয়েব সাইটে(http://tldp.org/) দেখভাল করা হয়।

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

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

উইন্ডোজ ভুবনে জড়িয়ে আছেন?

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

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

  • নেটওয়ার্ক মনিটরিং এবং ট্রাবলশুটিং টুলস হিসেবে ব্যবহার
  • সিকিউরিটি মনিটরিং এবং টেস্টিং টুলস হিসেবে ব্যবহার (বিশেষতঃ যদি ইন্টারনেট কানেক্টড সিস্টেম হয়)

এ কাজগুলি করার জন্য লিনাক্সে অসংখ্য ফ্রি নেটওয়ার্ক মনিটরিং টুলস (যেমন ntop network traffic probe) এবং সিকিউরিটি ইউটিলিটিজ (যেমন nmap port scanner) পাওয়া যায় এবং আপনার বস নিঃসন্দেহে ‘ফ্রি’ শব্দটি নিয়ে আর শংকিত হবেন না। সিকিউরিটি চেক করার জন্য বিভিন্ন ইউটিলিটি রান করা ছাড়াও আপনার ইন্টারনেট কানেক্টেড সার্ভারে কোন Intrusion Detection System যেমন Snort সবসময় চালু রাখতে পারেন যা আপনার নেটওয়ার্ক-কে করবে আরো সুরক্ষিত।

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

  • লিনাক্স সিস্টেম এর স্টার্ট আপ ধাপসমূহ
ইউনিক্স এর বিবর্তনের কারনে যাবতীয় লিনাক্স ডিস্ট্রো এবং ইউনিক্স এর ফ্লেভারগুলিকে দুটি প্রধান ভাগে বিভক্ত করা যায়-

১. সিস্টেম V (সিস্টেম ফাইভ)
২. বিএসডি (BSD)

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

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

ডিরেক্টরীর নাম ডিস্ট্রোভেদে কিছুটা ভিন্ন ভিন্ন হতে পারে তবে ধারনাগত দিক থেকে সবই অভিন্ন প্রকৃতির।

যখন আপনি সিস্টেমে বুট করেন তখন সার্ভিস, প্রসেস সবই শেল স্ক্রিপ্টের সাহায্যে চালু হয়ে থাকে। সকল ধরনের শেল স্ক্রিপ্ট যা মেশিন বুট এর সময় চালু হতে পারে তার সবই /etc/init.d ডিরেক্টরীতে অবস্থিত। এখানে লক্ষ্যনীয় যে, ডিরেক্টরীর নামেও ফাইলের মত পিরিয়ড (init.d) থাকতে পারে।

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

0 - সিস্টেম বন্ধ করার মোড
1 - একক ব্যবহারকারী মোড
2 - 5 - বহু ব্যবহারকারী মোড
6 - রিবুট/রিস্টার্ট এর মোড

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

মেশিন চালু অবস্থায় আপনি যেকোন রান লেভেলে সুইচ করতে পারেন যার কমান্ড হচ্ছে নিম্নরূপঃ

init runlevel

উদাহরনস্বরূপঃ রিমোট স্থান হতে যদি মেশিন রিস্টার্ট করতে চান তাহলে এ অপশনটি বেশ কাজে লাগে। টেলনেট সেশন এর মাধ্যমে মেশিন এ লগইন করলে Ctrl-Alt-Del কি-ব্যবহার করে মেশিন রিস্টার্ট করা যায় না। এর বদলে আপনি init 6 কমান্ড দিয়েই কাজ করতে পারেন। অবশ্য মেশিন রিস্টার্ট দিলে আপনার টেলনেট সেশন বন্ধ হয়ে যাবে তবে মেশিন রিবুট করলে আবার কানেক্ট হতে পারবেন।

উপরের আলোচনার ফলে আমরা জানতে পারলাম যে, সিস্টেম স্টার্ট আপ এর সময়ে যে শেল স্ক্রিপ্টগুলি রান হয় সেগুলি /etc/init.d ডিরেক্টরীতে অবস্থিত। এ রান লেভেলগুলি ভিন্ন ভিন্ন স্ক্রিপ্টসমূহ রান করে থাকে যা এই ডিরেক্টরীতে অবস্থিত। মেশিন বুটের সময় /etc/inittab নামের একটি টেক্সট ফাইল এর নির্দেশগুলি প্রথম পালন করা শুরু করে। নিচের উল্লেখিত লাইনটির সাহায্যে এ ফাইলটি মেশিনকে কোন রানলেভেল এ বুট করতে হবে সে নির্দেশ প্রদান করে থাকেঃ

id:2:initdefault:

/etc/inittab ফাইলের এ লাইনটি পরিবর্তনের মাধ্যমে আপনি মেশিন এর ডিফল্ট রানলেভেলটি পরিবর্তন করতে পারবেন। বেশীরভাগ ডিস্ট্রোই রানলেভেল ৩ এ বুট করে থাকে যা ইন্টারনেট সার্ভার এর জন্য মোটেও সুরক্ষিত নয়।

প্রতিটি রান লেভেল এর জন্য /etc ডিরেক্টরীর অভ্যন্তরে একটি করে সাব-ডিরেক্টরী আছে এবং সাব-ডিরেক্টরীর নামটি রানলেভেল এর নামে হয়ে থাকে। সাবডিরেক্টরীর নামটি নিচের ফরম্যাটে হয়ে থাকেঃ

rcX.d

যেখানে X এর মান ০-৬ পর্যন্ত।

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

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

উদাহরনস্বরূপ, আপনি যদি রানলেভেল ২ কে ইন্টারনেট সার্ভিস এর জন্য নির্ধারিত করতে চান তবে /etc/rc2.d ফোল্ডারটিতে গিয়ে এনএফএস(NFS) স্ক্রিপ্ট এর লিংকটি মুছে দিলেই হবে। তারপর রানলেভেল ৩ অর্থাৎ /etc/rc3.d ডিরেক্টরীতে গিয়ে সকল ইন্টারনেট সার্ভিসের স্ক্রিপ্ট যথা এ্যাপাচি, সেন্ডমেইল এবং আইনেটডি এর লিংকগুলি মুছে দিন যাতে রানলেভেল ৩ শুধুমাত্র নেটওয়ার্ক ফাইল শেয়ারিং এর জন্য ব্যবহার করতে পারেন।

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

মাল্টিইউজার রান লেভেল এর ডিরেক্টরীসমূহে শুধুমাত্র S দিয়ে শুরু এমন লিংকগুলিই থাকে। যে সব রানলেভেল সিস্টেম শাট ডাউন/বন্ধ করা এবং কাজের উপর নিয়ন্ত্রন আরোপে ব্যবহৃত হয় (০, ১, ৬) কেবল সেগুলির ডিরেক্টরীতেই সার্ভিস কিল করার জন্য K দিয়ে শুরু এমন লিংকসমূহ থাকে।

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

S20thisservice
S30thatservice
S40anotherservice
S80yetanother
  • সিস্টেম বন্ধ করার প্রসেস
ডস সিস্টেম এর মত আপনি লিনাক্স সিস্টেমকে বন্ধ করতে পারবেন না। এটিকে অবশ্যই যথার্থ নিয়মে বন্ধ করতে হয়। লিনাক্সে সিস্টেম শাট ডাউন করার জন্য বেশ কয়েকটি পদ্ধতি আছে তবে অধিকাংশ লিনাক্স ডিস্ট্রোতেই আমার কাছে ctrl-alt-del কমান্ড দিয়ে বন্ধ করার নিয়মটি বেশ সহজ মনে হয়। এ কমান্ডটি দিলে ডস সিস্টেম এর মত মেশিন রিবুট হয় না। এটি প্রথমে সকল ধরনের প্রসেসগুলিকে বন্ধ করবে এবং তারপর ফাইল সিস্টেমকে আনমাউন্ট করবে। তারপর এটি যখন পুনরায় রিবুট শুরু করবে তখন সিপিইউ এর পাওয়ার অন করার সুইচ দিয়ে সিস্টেম বন্ধ করে দিতে পারেন । এছাড়া বন্ধ করার জন্য কমান্ড দিতে পারেন - halt -p অথবা poweroff অথবা shutdown

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

  • সোর্স এবং বাইনারী কি?
অন্যান্য অপারেটিং সিস্টেম এর মত লিনাক্স ও দু’ধরনের ফাইল নিয়ে কাজ করে থাকে যথাক্রমে ১) বাইনারী ফাইল ও ২) টেক্সট ফাইল। বাইনারী ফাইল আমাদের কাছে হিজিবিজি ধরনের কিছু লেখা ছাড়া আর কিছুই মনে হয় না। তারা হতে পারে প্রোগ্রাম অথবা প্রোগ্রাম বা অপারেটিং সিস্টেম কর্তৃক লিখিত কোন ডাটা ফাইল। টেক্সট ফাইল হচ্ছে যা আমরা পড়ে বুঝতে সক্ষম সে ধরনের কোন ফাইল। নোটপ্যাড বা অন্য সাধারন কোন টেক্সট এডিটরের সাহায্যে এগুলিকে দেখা এবং পরিবর্তন করা যায়।

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

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

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

ls কমান্ড দিয়ে কোন ফাইল এর ধরন কি তা জানা সম্ভব নয়। এজন্য file কমান্ড দিতে হয়ঃ

file /bin/ls

যদি ফাইলটি কোন বাইনারী ফাইল হয় তবে উক্ত কমান্ডটি কিছু ডাটা রিটার্ন করবে অথবা কিছু লম্বা লাইন প্রদর্শন করবে যার মাঝে ELF 32-bit কথাটি ও থাকবে (ELF এর অর্থ হচ্ছে Executable and Link Format)। যদি এটি কোন টেক্সট ফাইল হয় তবে এর অভ্যন্তরে text শব্দটি সহ কিছু লাইন প্রদর্শন করবে।

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

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

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

সকল ধরনের সোর্স কোড ফাইলই কম্পাইল করার মাধ্যমে এক্সিকিউটেবল বাইনারীতে রূপান্তর করা যায়। লিনাক্স/ইউনিক্স এর জগতে তাই প্রোগ্রাম এর সোর্স কোড সহ (টেক্সট ফরম্যাট) বিতরন করাটা হরহামেশাই চোখে পড়ে। কারন লিনাক্স এর অনেক ফ্লেভার বাজারে পাওয়া যায় এবং তা বিভিন্ন প্লাটফরমে রান করে থাকে। তাই প্রতিটি প্লাটফরমের জন্য আলাদা বাইনারী তৈরীর চেয়ে সোর্স কোড দিয়ে দেয়া হয় যেন প্রত্যেকেই তার প্লাটফরমের জন্য বাইনারী তৈরী করে নিতে পারেন। এজন্যই আপনি ভিন্ন ভিন্ন প্লাটফরমের জন্য লিনাক্সের ভিন্ন ভিন্ন ডিস্ক সেট দেখে থাকবেন। যেমনঃ i386-Intel, m68K-Mac, Sparc-Sun, ppc-PowerPC। উইন্ডোজ শুধুমাত্র ইন্টেল /ইন্টেল কম্প্যাটিয়েবল প্লাটফরমের জন্যই কম্পাইল করা হয়। তাই লিনাক্স আপনাকে একই অপারেটিং সিস্টেম বিভিন্ন প্লাটফরমে চালানোর সুযোগ করে দিচ্ছে যে তালিকাতে এমনকি S/390 মেইন ফ্রেম কম্পিউটারও আছে।

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

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

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

আজ মূলত লিনাক্স এর মাল্টি ইউজার কনসেপ্ট, ফাইল সিস্টেম, সিমলিংকস, ফাইল সার্চিং ইত্যাদি নিয়ে আলোচনা করব।

মাল্টি ইউজার বা একাধিক ব্যবহারকারী ভিত্তিক

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

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

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

এমনকি আপনার যদি স্ট্যান্ড এলোন লিনাক্স সিস্টেম ও থাকে আপনি সেটিকে মাল্টি ইউজার সিস্টেম হিসেবে কাজে লাগাতে পারবেন। যখন মেশিন একটি লগইন প্রম্পটসহ প্রথমে বুট হয় তখন আসলে আপনি বেশ কয়েকটি টার্মিনাল সেশনের প্রথমটিই দেখতে পান। বাকিগুলি দেখতে হলে লগইন করার পর কি-বোর্ডের Alt Key চেপে রেখে F2 চাপুন। আপনি আর ও একটি লগইন প্রম্পট দেখতে পাবেন এবং এটি হচ্ছে দ্বিতীয় টার্মিনাল সেশন। এভাবে আপনি F3 থেকে F6 পর্যন্ত চাপলে পরপর লগইন প্রম্পটগুলি একের পর এক পেতে থাকবেন। F7 হচ্ছে বর্তমানে লগইন করা আপনার গ্রাফিক্যাল ইন্টারফেস। মেশিন যদি প্রথমে গ্রাফিক্যাল মোডে বুট হয় তবে Altএবং F7চাপলে এটি আবার পূনরায় আপনাকে গ্রাফিক্যাল মোডে নিয়ে আসবে। প্রতিটি টার্মিনাল সেশনেই আপনি ভিন্ন ভিন্ন নামে লগইন করতে পারবেন। এ ধরনের টার্মিনাল সেশনকে 'কনসোল' অথবা 'ভার্চুয়াল টার্মিনাল' বলা হয়ে থাকে। এ ধরনের একাধিক টার্মিনাল ব্যবহার বেশ সুবিধা জনক যখন আপনি কোন নির্দিষ্ট ফাইল বা ডিরেক্টরীর পারমিশন লেভেল সমন্বয় এর মত কাজ করবেন। এ ধরনের কাজে একটি টার্মিনাল এ রুট হিসেবে লগইন করে যাবতীয় পারমিশন সেট এর কাজ করতে পারেন এবং সেই সাথে অন্য আরেকটি কনসোলে সাধারন ব্যবহারকারী হিসেবে লগইন করে সেটিংসগুলি পরীক্ষা করে দেখতে পারেন।

এই একাধিক কনসোলগুলি শুধুমাত্র ভার্চুয়াল টার্মিনাল ব্যবহারের মধ্যেই সীমাবদ্ধ নয়। চাইলে আপনি একটি ডাম্ব টার্মিনাল (dumb terminal) এর সাহায্যে লিনাক্স পিসির সাথে সিরিয়াল পোর্টের মাধ্যমে কানেক্ট হতে পারেন এবং /etc/inittab ফাইলের কয়েকটি লাইন আনকমেন্ট করার মাধ্যমেই তাদের নিজস্ব টার্মিনাল সেশন ব্যবহারের সুযোগ করে দিতে পারেন। ডাম্ব টার্মিনাল ব্যবহারের বদলে আপনি সাধারন পিসি ও ব্যবহার করতে পারেন যেটি HyperTerm নামক প্রোগ্রামের সাহায্যে লিনাক্স মেশিনের সিরিয়াল পোর্টের মাধ্যমে কানেক্ট হবে। একটি পিসি টু পিসি কানেকশনের জন্য নাল-মডেম কেবল প্রয়োজন হয়ে থাকে। ডাম্ব টার্মিনাল এর ক্ষেত্রে এ ধরনের কেবল লাগতেও পারে আবার নাও লাগতে পারে যেটি মূলত ইন্টারফেস এর উপর নির্ভর করে থাকে। যেহেতু বেশিরভাগ পিসি-তেই দুটি সিরিয়াল পোর্ট থাকে তাই একই লিনাক্স সিস্টেম কমপক্ষে ৩ জন লোক একসাথে ব্যবহার করতে পারবে।

নির্দিষ্ট সার্ভিস প্রদানের জন্য কিছু ইউজার একাউন্ট স্বয়ংক্রিয়ভাবে সেট আপ/তৈরী হয়ে থাকে। উদাহরনস্বরূপ, আপনার লিনাক্স সিস্টেমকে যদি এফটিপি সার্ভার হিসেবে ব্যবহার করতে চান তবে ftp নামে একটি ইউজার একাউন্ট তৈরী হবে। এই ftp একাউন্ট এর সাহায্যে সাধারন যে কেউ সার্ভার এর সাথে যুক্ত হয়ে যাবতীয় কাজ করতে পারবে।

লিনাক্সের ফাইল সিস্টেম

লিনাক্স/ইউনিক্সে ফাইল নিয়ে কাজ করার আগে যেটি জানা সবচেয়ে গুরুত্বপূর্ন তা হচ্ছে -

লিনাক্স/ইউনিক্স সর্বদা কেস সেনসিটিভ!

অর্থাৎ বড় হাতের অক্ষর এবং ছোট হাতের অক্ষরকে সে আলাদা বিবেচনা করে থাকে।

নিচের প্রত্যেকটি ফাইল-ই লিনাক্সে ভিন্ন ভিন্ন ফাইল হিসেবে বিবেচিত হয়ঃ

README
readme
Readme
ReadMe

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

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

Primary Master- hda
Primary Slave- hdb
Secondary Master-hdc
Secondary Slave- hdd


বর্তমানে নতুন হার্ডড্রাইভসমূহ সাটা নির্ভর হওয়ার এগুলিকে hda, hdb, hdc ইত্যাদির বদলে sda, sdb, sdc ইত্যাদি হিসেবে দেখিয়ে থাকে। যদি হার্ডডিস্কে একাধিক পার্টিশন থাকে তবে প্রতিটি পার্টিশনকেই উপরে বর্নিত ড্রাইভের নামের শেষে একটি নম্বর দিয়ে চিহ্নিত করা হয়। উদাহরনস্বরূপঃ আপনার যদি একটি হার্ডডিস্ক থাকে এবং সেই সাথে তার তিনটি পার্টিশন থাকে তবে প্রথম ড্রাইভটি(c:) হবে hda1 অথবা sda1। তারপর প্রাইমারি পার্টিশন এর জন্য আরো তিনটি ড্রাইভ লেটার সংরক্ষিত থাকে বিধায় পরবর্তী ড্রাইভগুলি দেখাবে 5 নম্বর সিরিয়াল হতে। অর্থাৎ বাকি দুটি পার্টিশনকে দেখাবে hda5/sda5, hda6/sda6 হিসেবে। এ পার্টিশনগুলি একসেস করতে হলে অবশ্যই সেগুলি মাউন্ট করে নিতে হবে যদিও বর্তমানে বেশ কিছু ডিস্ট্রোতে এগুলি অটো মাউন্ট হয়ে থাকে। ইনস্টলেশনের সময় যে পার্টিশনগুলি তৈরী করবেন তা লিনাক্স বুটের সময় নিজে থেকেই মাউন্ট করে নিবে।

হার্ডডিস্কের পার্টিশনসমূহ দেখতে কমান্ড দিনঃ

fdisk -l

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

mount -t iso9660 /dev/hda /cdrom

উপরের কমান্ডটি প্রথমেই একটু অপরিচিত মনে হতে পারে কিন্তু এটি আসলে খুবই সহজ। আসুন এর অপশনগুলি এক নজরে দেখে নেই।

  • mount একটি ডিভাইসকে ফাইল সিস্টেম এর অংশে পরিনত করে
  • -t iso9660 মাউন্টকৃত ফাইল সিস্টেম এর ফরম্যাট কে নির্দেশ করে। (ডাটা সিডি এবং অধিকাংশ ডিভিডির জন্য স্ট্যান্ডার্ড ফরম্যাট হচ্ছে iso9660 কিন্তু যদি আমরা ফ্লপি ড্রাইভ মাউন্ট করি সেক্ষেত্রে এটি হবে msdos)
  • /dev/hda ডিভিডি/সিডিরম ড্রাইভের ডিভাইস ফাইলের পাথ। hda এর a দ্বারা এটি প্রথম হার্ডড্রাইভের প্রথম আইডিই চ্যানেল কে নির্দেশ করে। SCSI হার্ডড্রাইভের ক্ষেত্রে আমার মেশিনে ডিভিডি রম কে দেখায় scd.
  • /cdrom দ্বারা সিস্টেম এর একটি ডিরেক্টরী বা ফোল্ডারকে বোঝায় যেখানে এটি মাউন্ট করা হবে এবং একসেস করা হবে। এটি আগে থেকেই তৈরী করা থাকতে হবে কিন্তু এটি যেকোন নামে যেকোন জায়গাতেই তৈরী করতে পারেন। এ জন্য mkdir কমান্ডের মাধ্যমে একটি ফোল্ডার তৈরী করুন যেমনঃ yourname এবং উপরের কমান্ড এ /cdrom এর বদলে দিন /yourname - যেমনটি আপনি চান।

উপরে মাউন্ট কমান্ডের সাহায্যে /cdrom ডিরেক্টরীতে (যেটি মূলত ইনস্টলেশনের সময়ই তৈরী) ডিভিডি রম ড্রাইভটি ম্যাপ করা হবে। যে ডিরেক্টরীতে একটি ডিভাইসকে ম্যাপ করা হয় প্রবেশ করার জন্য তাকে মাউন্ট পয়েন্ট বলে। তাই একটি ডিভিডি রম মাউন্ট করা হলে যে মাউন্ট পয়েন্টে একে ম্যাপ করা হয় সেখানে প্রবেশের জন্য শুধুমাত্র নিচের কমান্ডটি দিনঃ

cd /cdrom

এবং ফাইলসমূহ প্রদর্শনের জন্য ls কমান্ডটি ব্যবহার করুন। যদি আপনি নিচের লাইনের মত বার্তা পানঃ

kernel does not recognize /dev/hda

তাহলে আপনার ডিভিডি-রমটি সম্ভবত স্লেভ হিসেবে প্রাইমারি আইডিই চ্যানেল এ যুক্ত আছে।(অর্থাৎ /dev/hdb)।
ডেবিয়ান সাধারনতঃ ইনস্টলেশনের সময়ই /cdrom ডিরেক্টরীটি তৈরী করে থাকে। অন্যান্য ডিস্ট্রিবিউশনে এটি সাধারনত /mnt ডিরেক্টরীর অধীনে থাকে। এ সব সিস্টেমে মাউন্ট করার জন্য টার্গেট ডিরেক্টরীটি পরিবর্তন করে দিলেই হল যা হবে নিম্নরূপঃ

mount -t iso9660 /dev/hda /mnt/cdrom

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

umount /mnt/cdrom

লিনাক্সের ফাইল সিস্টেমের একটি গুরুত্বপূর্ন বিষয় হলো যে, ফাইল এক্সটেনশন এখানে অপারেটিং সিস্টেম এর জন্য কিছুই নির্দেশ করে না। উইন্ডোজে সাধারনত ফাইলের নামের শেষে একটি পিরিয়ড(.) চিহ্ন দিয়ে যে তিনটি ক্যারেক্টর এর এক্সটেনশন থাকে সেটিই সাধারনত তার কাজকে নির্দেশ করে থাকে- উদাহরনস্বরূপ এটি কি একটি প্রোগ্রাম (.exe) নাকি একটি সাধারন এমএস ওয়ার্ড এর ফাইল(.doc)। লিনাক্স এ ধরনের কোন এক্সটেনশন এর ব্যবহার-ই নেই। ফাইল এর নামে পিরিয়ড (.) থাকতে পারে তবে সেটি লিনাক্সের কাছে কোন এক্সটেনশন হিসেবে বিবেচিত হয় না।
অবশ্য লিনাক্সের কিছু কিছু এপ্লিকেশনে তাদের ডাটা ফাইলকে এক্সটেনশন দিয়ে চিহ্নিত করতে পারে যেমন এ্যাপাচি ওয়েব সার্ভার .htm, .html, এবং .shtmlযুক্ত ফাইলগুলিকে খুঁজে থাকে এবং এগুলিকে মনে হতে পারে যে এক্সটেনশন। টেকনিক্যালি কিন্তু তারা তা মোটেও নয় এবং লিনাক্স/ইউনিক্স অপারেটিং সিস্টেমের কাছে তাদের কোন অর্থই নেই।

আপনার একটি ফাইলের নাম হতে পারে this.is.a.file-এ রকম যদি আপনি চান। অপারেটিং সিস্টেম এর কাছে সবই এক। সুতরাং কিভাবে লিনাক্স বুঝতে পারে যে, এ ফাইলটি একটি প্রোগ্রাম/এ্যাপ্লিকেশন? লিনাক্সের আছে প্রত্যেকটি ফাইলের জন্য একসেট পারমিশন যেগুলি হচ্ছে যথাক্রমে-read, writeএবং execute। আপনাকে শুধুমাত্র একটি ফাইল/স্ক্রিপ্টকে execute পারমিশন সেট করে দিলেই হবে তাহলে এটি যে একটি এক্সিকিউটেবল প্রোগ্রাম তা অপারেটিং সিস্টেম বুঝে নেবে। আপনি এক্ষেত্রে প্রোগ্রাম বা স্ক্রিপ্ট নয় এমন ফাইলকে ও execute পারমিশন দিতে পারেন কিন্তু সেক্ষেত্রে অপারেটিং সিস্টেম এটিকে শেল স্ক্রিপ্ট কমান্ড হিসেবে রান করার চেষ্টা করবে। তাই ফলস্বরূপ আপনি অনেকগুলি এরর মেসেজ পেতে পারেন -এমনকি ফাইলের ভিতরে লেখাগুলির কারনে মারাত্মক কোন ফলাফল হিসেবে একটি খালি হার্ডডিস্ক ও পেতে পারেন!!!

আমি এখানে ফাইল পারমিশন নিয়ে ব্যাপক আলোচনা টানতে চাই না। শুধুমাত্র কিছু বেসিক নিয়ে আলোচনা করতে চাই।

আপনি যদি ডসে কাজ করে থাকেন তাহলে নিচের কমান্ডটি শেল প্রম্পটে টাইপ করে লিনাক্সে কাজ করাকে আরেকটু সহজ করতে পারেনঃ

alias dir="ls -laF"

এটি ফাইল লিস্ট দেখার জন্য ডসে ব্যবহৃত dirকমান্ডকে লিনাক্সের ls কমান্ড এর বদলে ব্যবহারের সুযোগ করে দেয়। আমি অবশ্য লিনাক্সের ভার্সনটিতে বেশী অভ্যস্ত এজন্য মাঝে মাঝে উইন্ডোজেও ভুল করে ls কমান্ড দিয়ে বসি। কোন প্যারামিটার বাদে শুধুমাত্র ls কমান্ডটি একটি সাধারন লিস্ট প্রদান করে থাকে যেখানে এমনকি কোনটি ফাইল আর কোনটি ডিরেক্টরী তাও বোঝা যায় না। একটি ভাল লিস্ট দেখার জন্য তাই কমান্ড দিতে হবে ls -laF কিন্তু প্রতিবারই আপনাকে তা টাইপ করতে হবে। তাই উপরের কমান্ডটি দেয়ার পর আপনাকে শুধুমাত্র dir টাইপ করলেই চলবে।

drwxrwxrwx 3 keith web 4096 Aug 8 03:59 ./
dr-xr-sr-x 3 keith web 4096 Aug 6 13:56 ../
-rw-r--r-- 1 keith web 17181 Aug 6 16:04 bdl21dlx.zip
-rwxr-xr-x 1 keith web 15818 Aug 6 16:04 bdlogger.cgi*
-rw-r--r-- 1 keith web 1 Aug 6 16:04 history.log
-rw-r--r-- 1 keith web 1 Aug 6 16:04 pagehits.cnt
-rw-r--r-- 1 keith web 1 Aug 6 16:04 period.log
-rw-r--r-- 1 keith web 30586 Aug 6 16:04 readme.txt
-rw-r--r-- 1 keith web 1 Aug 6 16:04 trigger.dat
drwxrwxr-x 2 keith web 4096 Aug 8 03:59 zips/

“zips/” এর পর '/' দিয়ে এটি যে একটি ডিরেক্টরী তা নির্দেশ করে (ঠিক যেমনটি লাইনের শুরুতে পারমিশন ব্লকের বামেরd দিয়ে বোঝানো হয়)। bdlogger.cgi ফাইল এর পর * দিয়ে এটি যে একটি এক্সিকিউটেবল ফাইল তা নির্দেশিত হয়। bdlogger.cgi ফাইলের পারমিশন ব্লকে -rwxr-xr-x (যা মূলত অক্টেট হিসেবে 755) (x) ফ্লাগের সাহায্যে ও বোঝা যায় যে এটি একটি এক্সিকিউটেবল ফাইল।

এখানে একটি বিষয় লক্ষ্যনীয় যে, ফাইলের নামের ক্ষেত্রে লিনাক্স শুধুমাত্র একটি বিশেষ উদ্দেশ্যেই পিরিয়ড ব্যবহার করে থাকে। যে ফাইলগুলির নাম পিরিয়ড দিয়ে শুরু হয় সেটি সাধারনত কনফিগারেশন ফাইল হয়ে থাকে। লিনাক্স/ইউনিক্সে প্রত্যেক ব্যবহারকারীর হোম ফোল্ডারেই .profile নামে একটি ফাইল থাকে। একজন ব্যবহারকারীর এনভারোনমেন্ট সেটআপ করার জন্য এ ফাইলটি ব্যবহার হয়ে থাকে (যেমন ডিফল্ট শেল কোনটি, এনভারোনমেন্ট ভেরিয়েবলস সমূহ ইত্যাদি)। এটি খানিকটা ডসের config.sys ফাইলের মত কাজ করে থাকে। vi টেক্সট এডিরের নিজস্ব কনফিগারেশন ফাইল (.vimrc) আছে। এ রকম আরো আছে ক্যারেক্টার নির্ভর প্রোগ্রাম telnet এবং ftp এর জন্য এবং তাদের কনফিগারেশন ফাইলসমূহ ব্যবহারের মাধ্যমে এ প্রোগ্রামগুলিকে অটোমেট করা যায়। উদাহরনস্বরূপ, আপনি একটি এফটিপি এর প্রোফাইল সেট আপ করে cron শিডিউলার প্রোগ্রাম এর সাহায্যে প্রতি রাত্রে আপনার ওয়েব সাইট হতে একটি লগ ফাইল ডাউনলোড করার জন্য নির্দেশ দিয়ে রাখতে পারেন। যদি শুধুমাত্র ls কমান্ড দেয়া হয় তাহলে যে ফাইলগুলি পিরিয়ড(.)দিয়ে শুরু তাদের তালিকা দেখা যাবে না এজন্যই আমরা উপরের কমান্ডে ls -laF কমান্ড ব্যবহার করেছি।

হোম ডিরেক্টরী প্রসঙ্গে বলা যায় যে, প্রতিবার যখন একজন নতুন ব্যবহারকারী তৈরী করা হয় তার জন্য একটি ব্যক্তিগত হোম ডিরেক্টরী/ফোল্ডার ও একই সাথে তৈরী হয়ে থাকে। এ ফোল্ডারটির নাম ব্যবহারকারীর নামেই তৈরী হয়ে থাকে যা /home ডিরেক্টরী পাথে অবস্থিত। লিনাক্স ফাইল সিস্টেম এর যেকোন অবস্থান থেকে যদি হোম ডিরেক্টরীতে ফিরতে চান সরাসরি তবে টাইপ করুন cd এবং এন্টার কি প্রেস করুন।

এ প্রসঙ্গে বলা যায়, একটি এফটিপি সার্ভারে pub (public download files) নামে যে বিশেষ ফোল্ডারটি দেখা যায় সেটির অবস্থান আসলে /home/ftp ফোল্ডারে।

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

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

Bad command or file name

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

লিনাক্স/ইউনিক্স এর ও নিজস্ব পাথ আছে। সত্যি বলতে কি, প্রত্যেক ব্যবহারকারীরই নিজস্ব পাথ থাকে যেটি সে নিজের প্রয়োজনমত কাস্টমাইজ করে নিতে পারে। এই পাথে যে ডিরেক্টরীর তালিকা থাকে সেগুলি মূলত প্রোগ্রামফাইল সমূহ সংরক্ষন করার জন্য স্ট্যান্ডার্ড লোকেশনসমূহ এর সমষ্টি মাত্র। এক্সিকিউটেবল বাইনারী ফাইলসমূহ সংরক্ষিত হবার স্ট্যান্ডার্ড ডিরেক্টরী/ফোল্ডারগুলি হচ্ছে যথাক্রমেঃ
• /bin
• /usr/bin
• /usr/sbin
whereis কমান্ডের সাহায্যে পাথে উল্লেখিত ডিরেক্টরীসমূহে কোন ফাইল আছে কিনা খুজে বের করা যায়।

whereis ls
উপরের কমান্ডটি দিলে তার ফলাফল হবেঃ

ls: /bin/ls

যার অর্থ ls ফাইলটি /bin ডিরেক্টরীতে অবস্থিত। যদি এটি কোন কিছু খুজে না পায় তবে নিচের ফলাফল প্রদান করবেঃ

ls:

whereis দিয়ে শুধুমাত্র পাথে উল্লেখিত ডিরেক্টরীতে কোন ফাইল (সাধারনত প্রোগ্রাম ফাইল সমূহ) আছে কিনা তা খুজে বের করা যায়। এটি ইউনিক্স মেশিনগুলিতে কাজ নাও করতে পারে (এর বদলে আপনি which ব্যবহার করুন)।

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

echo $PATH

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

find / -name 'ls'

যে ডিরেক্টরীতে আছেন সেই ডিরেক্টরী এবং শুধুমাত্র তার সাবডিরেক্টরীতে যদি খুজতে চান তাহলে কমান্ড হবে নিম্নরূপঃ

find . -name 'ls'

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

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

df

Use% কলামটিতে এ তথ্য পাবেন। গিগাবাইট বা এ রকম পরিচিত ইউনিটে ব্যবহৃত ও অব্যবহৃত জায়গার পরিমান দেখতে কমান্ড দিন df -h।

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

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

ls | more

যদি একটি ডিরেক্টরীতে অসংখ্য ফাইল থাকে তবে ls কমান্ড দিলে বেশীরভাগ ফাইল এর নামই দেখতে পাবেন না কিন্তু যদি পাইপিং করে উপরের মত করে কমান্ড দেন তাহলে এক স্ক্রিন দেখানোর পর থেমে যাবে এবং পরবর্তী তালিকা দেখানোর জন্য অপেক্ষা করবে। পাইপ ক্যারেক্টারটি(|) বেশীর ভাগ কি-বোর্ডের \ চিহ্নের উপরে অবস্থিত।

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

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

ls > lp0

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

ls /etc > output

এখানে output হচ্ছে ফাইলের নাম। ব্যস আপনার হোম ফোল্ডারে output নামে একটি ফাইল তৈরী হবে যেখানে /etc ফোল্ডারে যা আছে তা যেকোন টেক্সট এডিটরে ওপেন করে দেখতে পারেন।

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

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

আপনার হোম ফোল্ডার এর ভিতর ডকুমেন্ট ফোল্ডারের একটি সফট সিমলিংক তৈরি করি ডেস্কটপে নিচের কমান্ড দিয়েঃ

ln -s /home/zahid/Documents/ /home/zahid/Desktop/


এখন ডেস্কটপ থেকেই আপনি সরাসরি এ লিংকে ক্লিক করে ডকুমেন্ট ফোল্ডারে একসেস করতে পারবেন।

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

উদাহরনস্বরূপঃ cron ব্যাকগ্রাউন্ড শিডিউলার এর জন্য শেল স্ক্রিপ্টগুলিকে cron বলা হয় এবং এটি সব রান লেভেলেই চালু হয়ে থাকে। এটি /etc/init.d ডিরেক্টরীতে অবস্থিত যেখানে সকল স্টার্টআপ স্ক্রিপ্ট থাকে। "init.d" হচ্ছে গ্রীক শব্দ "স্টার্ট ডেমন" এর সংক্ষিপ্ত রূপ। যদি ls কমান্ডের সাহায্যে রান লেভেল ২ এর স্টার্ট আপ ডিরেক্টরী /etc/rc2.d তে ফাইল লিস্ট দেখার কমান্ড দেন তাহলে cron স্টার্ট আপ এর জন্য সফট সিমলিংকটি দেখতে পাবেন নিচের মতঃ

S89cron -> ../init.d/cron

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

ডুয়াল বুটিং মেশিনের জন্য গ্রাব কনফিগার করা

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

একটি কমান্ড প্রম্পট/শেল প্রম্পট ওপেন/টার্মিনাল চালু করি। তারপর রুট হিসেব লগইন করি এবং menu.lst ফাইলটিকে vi অথবা gedit প্রোগ্রাম বা অন্য কোন টেক্সট এডিটরে ওপেন করিঃ

vi /boot/grub/menu.lst
or
gedit /boot/grub/menu.lst


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

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

## ## End Default Options ##
title Debian GNU/Linux, kernel 2.6.26-1-686
root (hd0,3)
kernel /boot/vmlinuz-2.6.26-1-686 root=/dev/sda4 ro quiet
initrd /boot/initrd.img-2.6.26-1-686


title Debian GNU/Linux, kernel 2.6.26-1-686 (single-user mode)
root (hd0,3)
kernel /boot/vmlinuz-2.6.26-1-686 root=/dev/sda4 ro single
initrd /boot/initrd.img-2.6.26-1-686


### END DEBIAN AUTOMAGIC KERNELS LIST
# This is a divider, added to separate the menu items below from the Debian
# ones.
title Other operating systems:
root

# This entry automatically added by the Debian installer for a non-linux OS
# on /dev/sda1
title Microsoft Windows XP Professional
root (hd0,0)
savedefault
makeactive
chainloader +1

উপরের অংশটিতে টাইটেল অপশনগুলি গুনে দেখুন
1. Debian GNU/Linux, kernel 2.6.26-1-686
2. Debian GNU/Linux, kernel 2.6.26-1-686 (single-user mode)
3. Other operating systems:
4. Microsoft Windows XP Professional


আপনার এক্সপি অপারেটিং সিস্টেমটি চার নম্বরে আছে কিন্তু গ্রাব ফাইল ০ থেকে গননা শুরু করে তাই এর নম্বর হবে ৩। অর্থাৎ আপনি গননা করবে এভাবে

0. Debian GNU/Linux, kernel 2.6.26-1-686
1. Debian GNU/Linux, kernel 2.6.26-1-686 (single-user mode)
2. Other operating systems:
3. Microsoft Windows XP Professional


তাহলে আপনার উইন্ডোজ এর সিরিয়াল নম্বরটি হল ৩। আশা করি আর বুঝতে সমস্যা হওয়ার কথা নয়।

এখন আপনার কাজ হল আবার ফাইলের উপরে যেখানে default লেখা আছে সেখানে গিয়ে তার সামনের নম্বরটিকে পরির্তন করে দিন আপনার কাঙ্খিত অপারেটিং সিস্টেম এর নম্বর দিয়ে।

# array will desync and will not let you boot your system.
Default 0


উপরের ০ টিকে পরির্বতন করুন।

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

For Time out setting at booting time:
## timeout sec
# Set a timeout, in SEC seconds, before automatically booting the default
# (normally the first entry defined).
timeout 20


লক্ষ্য করুন এখানে # লাইন দিয়ে যেগুলি শুরু হয়েছে সেগুলি মূলত কমেন্ট এগুলি পড়ে দেখলে আপনি বুঝতে পারবেন এর নিচের অপশনটি ঠিক কি কাজটি করবে। যেমন এখানে বলা আছে ডিফল্ট ওএসটি বুট হওয়ার আগে কতক্ষন অপেক্ষা করবে তা সেকেন্ডে দেখিয়ে দিন। ব্যস এবার ফাইলটিকে সেভ করুন। কি সহজ মনে হচ্ছে না?