লিনাক্স কমান্ড: ৬০+ অপরিহার্য কমান্ডের পূর্ণাঙ্গ বাংলা গাইড — ফাইল থেকে নেটওয়ার্ক, শুরু থেকে অ্যাডভান্সড

লিনাক্স কমান্ড: ৬০+ অপরিহার্য কমান্ডের পূর্ণাঙ্গ বাংলা গাইড — ফাইল থেকে নেটওয়ার্ক, শুরু থেকে অ্যাডভান্সড

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

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

দ্রুত উত্তর: লিনাক্স কমান্ড আসলে কী?

কমান্ড হলো টার্মিনালে লেখা ছোট ছোট নির্দেশ, যা কম্পিউটারকে বলে দেয় কী করতে হবে। উইন্ডোজে যেমন ফাইল ডিলিট করতে মাউস দিয়ে রাইট-ক্লিক করে Delete চাপেন, লিনাক্সে সেটা হয় মাত্র একটি লাইন লেখে — rm ফাইলের-নাম। টার্মিনাল (Terminal) হলো সেই কালো (বা গাঢ়) জানালাটি, যেখানে এই কমান্ডগুলো লেখা হয়। টার্মিনালের ভেতরে যে প্রোগ্রাম আপনার লেখা পড়ে কাজটা করে, তাকে বলে শেল (Shell) — লিনাক্সের সবচেয়ে জনপ্রিয় শেল হলো ব্যাশ (Bash)।

শুরুতে সবচেয়ে দরকারি ১০টি কমান্ড এক নজরে:

কমান্ড কাজ
**pwd** এখন কোন ডিরেক্টরিতে (ফোল্ডারে) আছেন, তা দেখায়
**ls** বর্তমান ডিরেক্টরির ফাইল ও ফোল্ডারের তালিকা দেখায়
**cd** ডিরেক্টরি পরিবর্তন করে (ফোল্ডারে ঢোকে বা বের হয়)
**mkdir** নতুন ফোল্ডার (ডিরেক্টরি) তৈরি করে
**touch** নতুন খালি ফাইল তৈরি করে
**cp** ফাইল বা ফোল্ডার কপি করে
**mv** ফাইল সরায় বা নাম বদলায়
**rm** ফাইল বা ফোল্ডার মুছে ফেলে
**cat** ফাইলের ভেতরের লেখা স্ক্রিনে দেখায়
**man** যেকোনো কমান্ডের ম্যানুয়াল বা ব্যবহার-নির্দেশনা দেখায়

ব্যস — এই ১০টা জানলেই আপনি লিনাক্সে ফাইল-ফোল্ডার নিয়ে কাজ শুরু করতে পারবেন। এরপর নিচের গাইডে প্রতিটি গ্রুপের কমান্ড বিস্তারিত শিখবেন।

কেন লিনাক্স কমান্ড শেখা দরকার?

কেউ কেউ মনে করেন, "জিইউআই (গ্রাফিকাল ইন্টারফেস) থাকতে কমান্ড শিখে লাভ কী?" — প্রশ্নটা যৌক্তিক, কিন্তু লিনাক্সের বাস্তবতা ভিন্ন। বেশ কিছু জায়গায় কমান্ডই একমাত্র পথ:

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

রিমোট কাজ: ইন্টারনেটের মাধ্যমে দূরের সার্ভারে ঢুকে কাজ করতে হয় ssh কমান্ড দিয়ে। এই কাজটি কেবল টার্মিনাল দিয়েই সম্ভব।

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

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

সবচেয়ে বড় কথা — কমান্ড জানলে আপনি কম্পিউটারকে পুরো নিয়ন্ত্রণে পান। উইন্ডোজে কোনো সমস্যায় "কী করব বুঝতে পারছি না" অবস্থা হয়, লিনাক্সে টার্মিনাল খুলে সমস্যাটা নিজেই খুঁজে বের করতে পারেন।

টার্মিনাল খোলা, প্রম্পট বোঝা ও sudo-র ধারণা

লেখা শুরু করার আগে টার্মিনালের মৌলিক বিষয়গুলো জেনে নেওয়া যাক।

টার্মিনাল খোলা: উবুন্টু বা লিনাক্স মিন্টের মতো ডেস্কটপ ডিস্ট্রিবিউশনে Ctrl+Alt+T চাপলেই টার্মিনাল খুলে যায়। সার্ভারে সাধারণত ssh দিয়ে ঢোকার সময় থেকেই টার্মিনালে থাকেন।

প্রম্পট (Prompt): টার্মিনালে দেখতে পান এমন কিছু:

shams@server:~$

এখানে shams আপনার ইউজারনেম, server কম্পিউটারের নাম, আর ~ মানে আপনার হোম ডিরেক্টরি (ব্যক্তিগত ফোল্ডার)। $ চিহ্ন বলছে আপনি সাধারণ ইউজার হিসেবে আছেন। রুট (অ্যাডমিন) ইউজার হলে # দেখায়। প্রম্পটের পর কমান্ড লিখে Enter চাপলেই কাজ হয়।

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

ফাইল ও ডিরেক্টরি: সবচেয়ে বেশি ব্যবহৃত কমান্ড

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

অবস্থান জানা: pwd, ls, cd

pwd (print working directory) বলে দেয় আপনি ফাইল সিস্টেমের কোন জায়গায় আছেন। নতুন টার্মিনাল খুলে প্রথমে এই কমান্ডটা চালানো ভালো অভ্যাস — হারিয়ে গেলে pwd দিয়ে ঠিকানা বের করুন।

ls বর্তমান ফোল্ডারের সব ফাইল-ফোল্ডার দেখায়। কিছু দরকারি অপশন:

  • ls -l — বিস্তারিত তালিকা: কার ফাইল, কত বড়, কবে বদলানো হয়েছে (পারমিশনসহ)
  • ls -a — লুকানো ফাইলও দেখায় (যেসব ফাইলের নামের শুরুতে ডট থাকে, যেমন .bashrc)
  • ls -lh — আকার মানুষের পড়ার উপযোগী ফরম্যাটে (KB, MB) দেখায়

cd (change directory) দিয়ে ফোল্ডার বদলান: cd Documents ভেতরে ঢোকে, cd .. এক ধাপ পেছনে যায়, আর শুধু cd লিখলে হোম ফোল্ডারে ফিরে যান। ট্যাব চাপলে ফোল্ডারের নাম নিজে নিজে পূরণ হয়ে যায় — টাইপ করার সময় সবসময় ট্যাব ব্যবহার করুন।

ফাইল তৈরি ও মুছে ফেলা: touch, mkdir, rm, rmdir

touch দিয়ে খালি ফাইল তৈরি হয়: touch notes.txt। এক লাইনে একাধিক ফাইলও বানানো যায়: touch a.txt b.txt c.txt। বিশেষ অপশন touch -d দিয়ে ভবিষ্যৎ তারিখের টাইমস্ট্যাম্পসহ ফাইল বানানো যায় — কোনো পরীক্ষার জন্য দরকারি হতে পারে।

mkdir (make directory) নতুন ফোল্ডার বানায়: mkdir projects। ভেতরে ভেতরে একসাথে একাধিক স্তরের ফোল্ডার চাইলে mkdir -p ব্যবহার করুন: mkdir -p myapp/src/components — ফোল্ডার না থাকলে -p নিজে তৈরি করে দেয়।

rm ফাইল মুছে দেয়: rm notes.txt। ফোল্ডারসহ মুছতে rm -r ফোল্ডারের-নাম (recursive)। সাবধান — মুছে ফেলা ফাইল উইন্ডোজের রিসাইকেল বিনের মতো কোনো জায়গায় যায় না, একদম চিরতরে মুছে যায়। তাই গুরুত্বপূর্ণ কিছু মুছতে গেলে ডবল চেক করুন।

rmdir শুধু খালি ফোল্ডার মুছে দেয় — ফোল্ডারে কিছু থাকলে ভুলবশত মুছে ফেলার নিরাপত্তা এটাই।

কপি, সরানো ও লিংক: cp, mv, ln

cp (copy) ফাইল কপি করে: cp notes.txt notes-backup.txt। ফোল্ডার কপি করতে cp -r লাগবে: cp -r myapp myapp-backup। ফাইল মুছতে ভয় পেলে কপি করেই নিরাপদে থাকুন — এটাই সেরা অভ্যাস।

mv (move) ফাইল এক জায়গা থেকে অন্য জায়গায় সরায়, আর একই ফোল্ডারে নতুন নাম দিলে তা রিনেম-কাজে পরিণত হয়: mv notes.txt /home/shams/Documents/ বা mv notes.txt mynotes.txt। ফাইল কপি করার দরকার নেই, শুধু স্থান বদল — তাই বড় ফাইলও তাৎক্ষণিকভাবে চলে যায়।

ln -s (symbolic link) দিয়ে শর্টকাট তৈরি হয়: ln -s /var/www/html website-link। একটা ফাইলকে একাধিক জায়গা থেকে ব্যবহার করতে চাইলে লিংক দারুণ কাজের — আসল ফাইল এক জায়গায় থাকবে, লিংকগুলো অন্য জায়গায়।

নিরাপদে মুছুন: shred

সাধারণ rm দিয়ে মুছে ফেলা ফাইলের ডেটা কিন্তু হার্ডডিস্ক থেকে পুরোপুরি যায় না — বিশেষ টুল দিয়ে উদ্ধার করা সম্ভব। সংবেদনশীল ফাইল (ব্যাংক স্টেটমেন্ট, পাসওয়ার্ডের তালিকা) চিরতরে মুছতে shred ব্যবহার করুন। এটি ফাইলের ভেতরে বারবার এলোমেলো ডেটা লিখে তারপর মুছে দেয় — ফলে ফাইল উদ্ধার করা কার্যত অসম্ভব হয়ে পড়ে: shred গোপন-ফাইল.txt।

এছাড়া clear কমান্ড স্ক্রিন পরিষ্কার করে দেয় — দীর্ঘ কাজের পর টার্মিনাল পরিষ্কার রাখতে।

ফাইলের ভেতরে দেখা ও সম্পাদনা

ফাইল তৈরি জানা হয়ে গেছে, এখন সেটার ভেতরটা দেখা ও বদলানোর কমান্ড।

দ্রুত দেখা: cat, less, head, tail

cat (concatenate) ফাইলের পুরো লেখা স্ক্রিনে ছেড়ে দেয়: cat notes.txt। ছোট ফাইলের জন্য দারুণ, কিন্তু বড় ফাইলের ক্ষেত্রে পুরোটা একসাথে চলে আসে — পড়া কঠিন।

less বড় ফাইল এক পেজ করে দেখায়: less report.log। স্পেস চাপলে পরের পেজ, B দিয়ে পেছনে, আর q চেপে বের হন। সার্ভারের লগ ফাইল দেখার জন্য এটি সেরা টুল।

head ফাইলের শুরু (ডিফল্টে ১০ লাইন) দেখায়: head config.txt। tail শেষের লাইনগুলো দেখায়: tail -f app.log — এখানে -f (follow) মানে ফাইল নতুন করে বড় হলে তা লাইভ দেখাবে। ডিবাগিংয়ের সময় লগ-ফাইল লাইভ দেখতে tail -f-এর জুড়ি নেই।

সম্পাদনা: nano আর vim

টার্মিনালের ভেতরেই ফাইল এডিট করতে হয় সার্ভারে — সেখানে গ্রাফিকাল এডিটর নেই। দুটি জনপ্রিয় এডিটর:

nano — নতুনদের জন্য সহজতম। nano notes.txt দিয়ে খুলুন, লেখা লিখুন, তারপর Ctrl+X চাপুন, Y দিয়ে সেভের অনুমতি দিন, Enter চাপলে ফাইল সেভ হয়ে বেরিয়ে আসবে। প্রথমবার এডিটর ব্যবহারকারীদের জন্য nano-ই যথেষ্ট।

vim — পেশাদারদের পছন্দ, কিন্তু শেখার ঢালু আছে। vim notes.txt খুলে i চাপলে ইনসার্ট মোডে যান (লেখা শুরু), শেষে Esc চাপুন, তারপর :wq লিখে Enter — w মানে write (সেভ), q মানে quit (বের হওয়া)। সেভ না করেই বের হতে চাইলে :q!। ভিমে আটকে গেলে মনে রাখবেন: Esc চাপুন, তারপর :q! লিখে Enter — কোনো ক্ষতি ছাড়াই বেরিয়ে আসবেন।

লেখা যোগ করা: echo

echo স্ক্রিনে লেখা দেখায়: echo "hello"। আরেকটি দারুণ কাজ — ফাইলে লেখা যোগ করা: echo "192.168.1.10 db-server" >> /etc/hosts। এখানে >> মানে ফাইলের শেষে যোগ করা, আর > দিয়ে লেখা হলে পুরোনো লেখা মুছে নতুন লেখা বসে। তাই সাবধান — > দিয়ে ভুল ফাইলে লিখলে আগের সবকিছু চলে যাবে।

ফাইল তুলনা ও সাজানো: sort, cmp, diff

sort ফাইলের লাইনগুলো সাজিয়ে দেখায়: sort names.txt। বড় ফাইলের ভেতর থেকে দরকারি তথ্য খুঁজতে পাইপ (|) দিয়ে জুড়ে দেওয়া যায়: cat names.txt | sort — cat-এর আউটপুট সরাসরি sort-এর ইনপুট হয়ে যায়। পাইপ লিনাক্সের সবচেয়ে শক্তিশালী ধারণাগুলোর একটি — এক কমান্ডের আউটপুট আরেক কমান্ডে পাঠানো।

cmp দুটি ফাইল একই কিনা দেখে: cmp file1.txt file2.txt — শুধু বলে দেয় কোন জায়গায় পার্থক্য (বাইট-লেভেলে)। diff আরও বিস্তারিত — কোন লাইনে কী পার্থক্য, তা দেখায়: diff old.txt new.txt। প্রোগ্রামাররা কোডের ভার্সন তুলনায় প্রতিদিনই diff ব্যবহার করেন। ছোট তথ্য: cmp আর diff আসলে লিনাক্সের মূল (coreutils) অংশ নয় — এগুলো GNU diffutils প্যাকেজের কমান্ড, যা প্রায় সব ডিস্ট্রিবিউশনে আগে থেকেই থাকে।

কমপ্রেস করা: zip, unzip

zip ফাইলগুলোকে এক প্যাকেটে কমপ্রেস করে: zip backup.zip notes.txt report.pdf। unzip আবার খুলে দেয়: unzip backup.zip। সার্ভার থেকে ফাইল নামানো বা ক্লায়েন্টকে ফাইল পাঠানোর সময় zip-ফরম্যাট সবচেয়ে সাধারণ।

ইউজার, পাসওয়ার্ড ও পারমিশন

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

কে আমি? — whoami, id

whoami বলে দেয় বর্তমানে কোন ইউজার হিসেবে আছেন: whoami। বিস্তারিত চাইলে id — ইউজার আইডি, গ্রুপসহ সব দেখায়।

ইউজার তৈরি ও বদল: adduser, useradd, su, passwd

adduser দিয়ে নতুন ইউজার তৈরি হয়: sudo adduser rahim — এটি ইন্টারঅ্যাক্টিভ, পাসওয়ার্ডসহ সব জিজ্ঞেস করে। আরেকটি কমান্ড useradd আছে, যা নিম্ন-স্তরের এবং অতিরিক্ত অপশন নিজে দিতে হয় — সাধারণ ব্যবহারকারীর জন্য adduser-ই সহজ।

su (switch user) দিয়ে অন্য ইউজারে ঢোকে যান: su rahim। আবার নিজের ইউজারে ফিরতে exit লিখুন। exit আসলে শুধু ইউজার বদল থেকে নয় — টার্মিনাল, ssh সেশন, এমনকি স্ক্রিপ্ট থেকেও বের হওয়ার জন্য ব্যবহৃত হয়। কোনো কাজ "আটকে" গেলে exit চাপুন।

passwd দিয়ে পাসওয়ার্ড বদলান: passwd (নিজের), আর অন্যের পাসওয়ার্ড বদলাতে sudo passwd rahim।

ক্ষমতা নেওয়া: sudo

sudo-র কথা আগেই বলেছি — এটি হলো "superuser do"। sudo apt install nginx মানে অ্যাডমিন ক্ষমতায় nginx ইনস্টল করা। প্রথমবার sudo ব্যবহারে একটা সতর্কবার্তা দেখায় — সেটা স্বাভাবিক, এতে ভয়ের কিছু নেই। তবে নিয়মটা মনে রাখুন: যে কাজ সাধারণ ইউজার হিসেবে হয়, তা sudo দিয়ে করবেন না।

পারমিশন: chmod, chown

লিনাক্সের প্রতিটি ফাইলের তিন স্তরের অনুমতি থাকে: মালিক (owner), গ্রুপ, আর অন্য সবাই (others)। আর তিন ধরনের অনুমতি: পড়া (r), লেখা (w), চালানো (x)।

chmod (change mode) দিয়ে অনুমতি বদলান। সবচেয়ে সাধারণ কাজ — ফাইলকে চালানোর যোগ্য করা:

chmod +x script.sh — এরপর ফাইলটি প্রোগ্রামের মতো চালানো যাবে: ./script.sh।

সংখ্যা দিয়েও অনুমতি দেওয়া যায় — এটাই পেশাদারদের পদ্ধতি:

সংখ্যা মানে
**chmod 644 ফাইল** মালিক পড়া+লেখা; গ্রুপ ও অন্যরা শুধু পড়া (সাধারণ ফাইলের জন্য মান)
**chmod 755 ফাইল** মালিক সবকিছু; গ্রুপ ও অন্যরা পড়া+চালানো (স্ক্রিপ্ট/ফোল্ডারের জন্য মান)
**chmod 600 ফাইল** শুধু মালিক পড়া+লেখা (গোপন ফাইলের জন্য)

প্রতিটি সংখ্যা তিনটি অনুমতির যোগফল: r=4, w=2, x=1। যেমন 7 = 4+2+1 (সবকিছু), 5 = 4+1 (পড়া+চালানো)।

chown (change owner) দিয়ে ফাইলের মালিক বদলান: sudo chown rahim:rahim notes.txt — প্রথম অংশ ইউজার, দ্বিতীয় অংশ গ্রুপ। ওয়েব সার্ভারের ফাইল মালিকানা ঠিক করার সময় এটি প্রতিদিনের কাজ।

সফটওয়্যার ইনস্টল: প্যাকেজ ম্যানেজার

উইন্ডোজে সফটওয়্যার ইনস্টল করতে .exe ফাইল খুঁজে ডাউনলোড করতে হয়। লিনাক্সে কাজটা অনেক সুন্দর — প্যাকেজ ম্যানেজার নামের এক কমান্ড দিয়েই অফিসিয়াল রিপোজিটরি (ভান্ডার) থেকে সফটওয়্যার ইনস্টল, আপডেট, এমনকি মুছে ফেলা যায়।

উবুন্টু ও ডেবিয়ান পরিবারে সবচেয়ে জনপ্রিয় apt। দুটি ধাপ:

sudo apt update
sudo apt install প্যাকেজের-নাম

apt update রিপোজিটরির তালিকা রিফ্রেশ করে — কোন সফটওয়্যারের কোন ভার্সন আছে, তা জেনে নেয়। তারপর apt install দিয়ে ইনস্টল। তাই নতুন সিস্টেমে বা কিছুদিন পরপর প্রথমে update চালান — update ছাড়া install করলে পুরোনো ভার্সন বসতে পারে।

আরও দরকারি: sudo apt upgrade সব প্যাকেজ নতুন ভার্সনে আপডেট করে, sudo apt remove প্যাকেজ মুছে দেয়, আর apt search কীওয়ার্ড দিয়ে প্যাকেজ খোঁজা যায়।

Red Hat, CentOS, Fedora পরিবারে apt-এর বদলে yum বা dnf চলে: sudo yum install প্যাকেজ। ফেডোরা আধুনিক ভার্সনে dnf, পুরোনো CentOS-এ yum — কনসেপ্ট হুবহু একই।

কমান্ড শেখার কমান্ড: man, whatis, which, whereis

হাজার হাজার কমান্ড মুখস্থ করা অসম্ভব — কিন্তু ভাগ্য ভালো, লিনাক্সে প্রতিটি কমান্ডের নিজস্ব ম্যানুয়াল আছে।

man (manual) যেকোনো কমান্ডের বিস্তারিত ডকুমেন্টেশন খুলে দেয়: man ls। ম্যানুয়ালের ভেতরে স্পেস দিয়ে পেজ ওল্টান, / টিপে কীওয়ার্ড খুঁজুন, q দিয়ে বের হন। ম্যান-পেজ পড়তে পারা লিনাক্স শেখার সবচেয়ে বড় দক্ষতা — প্রশ্ন হলে প্রথমে man।

whatis এক লাইনে কমান্ডের কাজ বলে দেয়: whatis ls → "list directory contents"। দ্রুত মনে করিয়ে দেওয়ার জন্য চমৎকার।

which বলে দেয় কমান্ডের এক্সিকিউটেবল ফাইল কোথায়: which python3 → /usr/bin/python3। একই রকম whereis আরও জায়গা খোঁজে — বাইনারি, সোর্স, ম্যানুয়াল — সব।

history আপনার আগের সব কমান্ড দেখায়। কোনো কমান্ড মনে করতে পারছেন না? history লিখে দেখুন — আর !! লিখে শেষ কমান্ড আবার চালান। দীর্ঘ কাজের সময় এটা জীবনরক্ষাকারী।

নেটওয়ার্ক ও ইন্টারনেট কমান্ড

লিনাক্স সার্ভারের সবচেয়ে বড় কাজ নেটওয়ার্কিং। এখানকার কমান্ডগুলো জানলে আপনি সার্ভারের নেটওয়ার্ক পুরো নিয়ন্ত্রণে পাবেন।

দূরের মেশিনে ঢোকা: ssh

ssh (secure shell) দিয়ে ইন্টারনেট বা লোকাল নেটওয়ার্কের অন্য কম্পিউটারে নিরাপদে ঢোকে যান: ssh rahim@192.168.1.50 — ইউজারনেম@ঠিকানা। প্রথমবার সংযোগে ফিঙ্গারপ্রিন্ট নিশ্চিত করতে বলে — yes লিখে Enter চাপুন, তারপর পাসওয়ার্ড দিন। এরপর আপনি দূরের মেশিনের টার্মিনালে — যেন সেখানেই বসে আছেন। সার্ভার ম্যানেজমেন্টের এটি মূল চাবি।

আইপি ঠিকানা: ip addr, ifconfig

ip addr দেখায় আপনার মেশিনের সব নেটওয়ার্ক ইন্টারফেস ও আইপি ঠিকানা। পুরোনো কমান্ড ifconfig-ও কাজ করে (নেট-টুলস প্যাকেজে), তবে আধুনিক সিস্টেমে ip-ই মান — নতুন ডকুমেন্টেশনেও ip-ই দেখবেন।

সংযোগ পরীক্ষা: ping, traceroute

ping দিয়ে যাচাই করুন কোনো সার্ভার/ওয়েবসাইট পৌঁছানো যাচ্ছে কিনা: ping google.com — এটি আইসিএমপি ইকো রিকোয়েস্ট পাঠায় আর উত্তর পেলে দেখায় কত মিলিসেকেন্ডে। অফুরন্ত চলতে থাকে — Ctrl+C চেপে বন্ধ করুন, অথবা আগেই নির্দিষ্ট সংখ্যা দিন: ping -c 5 google.com (৫ বার পাঠাবে)।

traceroute দেখায় আপনার কম্পিউটার থেকে লক্ষ্যে পৌঁছাতে ইন্টারনেটের কোন কোন পথ (হপ) দিয়ে যেতে হচ্ছে এবং প্রতিটি ধাপে কত দেরি: traceroute techbd.cc। "সাইট ধীর কেন?" — এই প্রশ্নের উত্তর খুঁজতে traceroute দারুণ টুল।

ডাউনলোড: wget, curl

wget দিয়ে ফাইল ডাউনলোড: wget https://example.com/file.zip — সরাসরি ফাইল নামিয়ে দেয়। curl আরও শক্তিশালী — ওয়েবসাইটের কাঁচা রেসপন্স দেখাসহ নানা কাজ: curl https://api.example.com/data -o output.json (এখানে -o ফাইলে সেভ করে)। সার্ভার ঠিকমতো রেসপন্স দিচ্ছে কিনা — curl -I techbd.cc দিয়ে হেডার দেখে পরীক্ষা করা যায়।

পোর্ট ও সার্ভিস: ss, netstat

কোন পোর্টে কোন সার্ভিস চলছে দেখতে ss (socket statistics): ss -tulpn — t (TCP), u (UDP), l (listening/শোনা অবস্থায়), p (কোন প্রসেস), n (নামের বদলে সংখ্যা)। "পোর্ট ৮০ কি খোলা আছে?" — এই প্রশ্নের উত্তর ss দেয়। পুরোনো netstat-ও আছে, তবে আধুনিক সিস্টেমে ss-ই পছন্দের।

DNS দেখা: resolvectl

কোন DNS সার্ভার ব্যবহার হচ্ছে দেখতে: resolvectl status। আধুনিক উবুন্টুতে systemd-resolved চলে, তাই এই কমান্ড; পুরোনো সিস্টেমে cat /etc/resolv.conf ফাইলটি দেখলেই DNS-এর ঠিকানা পাবেন।

ফায়ারওয়াল: ufw

ufw (uncomplicated firewall) — নামই বলে দেয়, সহজ ফায়ারওয়াল। iptables-এর জটিলতা লুকিয়ে রেখে সহজ কমান্ড দেয়:

sudo ufw allow 80        # পোর্ট ৮০ খুলে দেয় (ওয়েব সার্ভারের জন্য)
sudo ufw enable          # ফায়ারওয়াল চালু করে
sudo ufw status          # বর্তমান নিয়ম দেখায়

সার্ভার সেটআপের সময় ufw চালু করা প্রথম কাজগুলোর একটি — ডিফল্টে সব পোর্ট বন্ধ, যেটা দরকার শুধু সেটা খুলে দিন।

সিস্টেম মনিটরিং ও প্রসেস ম্যানেজমেন্ট

সার্ভার চলছে কিনা, কত রিসোর্স খরচ হচ্ছে — এসব জানার কমান্ড এখানে।

সিস্টেম পরিচয়: uname, neofetch

uname কার্নেলের তথ্য দেয়: uname -a — কার্নেল ভার্সন, মেশিনের ধরন, সব এক লাইনে। আর neofetch চালালে সুন্দর একটা ডিসপ্লে দেখায় — ডিস্ট্রিবিউশন, কার্নেল, মেমোরি, ইউপটাইম — সব একসাথে। দেখতে দারুণ, আর স্ক্রিনশট নিয়ে সোশ্যাল মিডিয়ায় শেয়ার করাও কমিউনিটিতে জনপ্রিয়।

মেমোরি ও ডিস্ক: free, df

free -h দেখায় কত মেমোরি ব্যবহৃত, কত খালি, আর সুয়াপ (swap) কত: free -h। -h মানে মানুষের পড়ার উপযোগী ফরম্যাট (GB/MB)। সার্ভার স্লো হলে প্রথমেই free দেখুন — মেমোরি শেষ হলে সিস্টেম সুয়াপ ব্যবহার শুরু করে, তখন পারফরম্যান্স পড়ে যায়।

df -h ডিস্কের জায়গা দেখায়: df -h — কোন পার্টিশনে কত ফাঁকা। "ডিস্ক ফুল!" এরর আসলে df -h চালিয়ে দেখুন কোন জায়গা ভরা — তারপর সিদ্ধান্ত নিন।

প্রসেস দেখা: ps, top, htop

ps চলমান প্রসেসের তালিকা দেয়: ps aux — সব ইউজারের সব প্রসেস, মেমোরি-সিপিইউ ব্যবহারসহ। top লাইভ মনিটরিং — প্রতি কয়েক সেকেন্ডে রিফ্রেশ হয়, সিপিইউ খাচ্ছে কোন প্রসেস তা দেখায়। htop top-এর সুন্দর ভার্সন — রঙিন, মাউসও চলে। ইনস্টল করে নিন: sudo apt install htop। সার্ভার পারফরম্যান্স সমস্যার প্রথম ধাপ htop।

প্রসেস বন্ধ: kill, pkill

কোনো প্রসেস জমে গেলে বন্ধ করতে হয়। প্রথমে প্রসেস-আইডি (PID) খুঁজুন: ps aux | grep নাম — grep দিয়ে তালিকা থেকে খুঁজে নিন। তারপর kill ৬৬৫৯ (আইডি দিয়ে)। ডিফল্ট kill-এ TERM সিগন্যাল যায় — প্রসেস নিজেকে গুছিয়ে বন্ধ হয়। জোর করে বন্ধ করতে kill -9 আইডি — এটি KILL সিগন্যাল, প্রসেস কিছু করার সুযোগ পায় না, মুহূর্তে বন্ধ। আগে সাধারণ kill চেষ্টা করুন, কাজ না হলে -9।

আরও সহজ pkill — আইডি না জেনেই নাম দিয়ে বন্ধ: pkill -f script.py। -f মানে কমান্ড-লাইনে নাম মিলিয়ে খোঁজা।

সার্ভিস চালানো: systemctl

আধুনিক লিনাক্সে সার্ভিস (যেমন ওয়েব সার্ভার nginx বা apache2) ম্যানেজ হয় systemctl দিয়ে:

sudo systemctl start nginx     # সার্ভিস চালু
sudo systemctl stop nginx      # বন্ধ
sudo systemctl restart nginx   # পুনরায় চালু (কনফিগ বদলানোর পর)
sudo systemctl status nginx    # চলছে কিনা, কী অবস্থা

পুরোনো সিস্টেমে service কমান্ড ছিল: sudo service apache2 restart। কোনটা চলবে নির্ভর করে সিস্টেমে systemd আছে কিনা — আধুনিক ডিস্ট্রিবিউশনে systemctl-ই মান।

বন্ধ ও রিস্টার্ট: reboot, shutdown

sudo reboot সাথে সাথে রিস্টার্ট করে। sudo shutdown এক মিনিট পর বন্ধ করে; সাথে সাথে বন্ধ করতে sudo shutdown -h now — -h মানে halt (বন্ধ), now মানে এখনই। দূরের সার্ভারে কাজ শেষে রিস্টার্ট দেওয়ার আগে সাবধান — সংযোগ বিচ্ছিন্ন হয়ে যাবে, আবার ঢুকতে ssh লাগবে।

ছোট কিন্তু দরকারি কিছু কমান্ড

কিছু কমান্ড ছোট, কিন্তু কাজে লাগে মাঝে মাঝেই:

cal — মাসের ক্যালেন্ডার দেখায়: cal। bc — ক্যালকুলেটর: echo "25*4" | bc → 100। clear — স্ক্রিন পরিষ্কার। zip/unzip আগেই বলেছি।

আরেকটি ভুলে যাওয়া গুরুত্বপূর্ণ বিষয়: টার্মিনালে উপর-নিচ তীরচিহ্ন চাপলে আগের কমান্ডগুলো ফিরে আসে, Ctrl+C চলমান কাজ বন্ধ করে, Ctrl+L স্ক্রিন পরিষ্কার করে (clear-এর শর্টকাট)।

একটা বাস্তব কাজ: ধাপে ধাপে একটি সিম্পল ওয়েব সার্ভার সেটআপ

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

ধাপ ১: সিস্টেম আপডেট করুন। নতুন সার্ভারে প্রথম কাজ প্যাকেজ-তালিকা রিফ্রেশ করা:

sudo apt update

ধাপ ২: ওয়েব সার্ভার ইনস্টল করুন। এখানে nginx ব্যবহার করছি (হালকা ও দ্রুত):

sudo apt install nginx -y

ধাপ ৩: সার্ভিস চলছে কিনা যাচাই করুন:

sudo systemctl status nginx

ধাপ ৪: ওয়েবসাইটের ফোল্ডার তৈরি করে ফাইল রাখুন:

sudo mkdir -p /var/www/mysite
echo "Hello from TechBD readers!" | sudo tee /var/www/mysite/index.html

এখানে পাইপ ও tee-এর সংমিশ্রণ — echo-র লেখা সরাসরি ফাইলে লেখা হলো। (tee কমান্ড ফাইলে লেখার সময় স্ক্রিনেও দেখায়।)

ধাপ ৫: ফাইল পারমিশন ঠিক করুন:

sudo chown -R www-data:www-data /var/www/mysite

nginx যে ইউজার (www-data) দিয়ে চলে, তাকে ফোল্ডারের মালিকানা দিলাম।

ধাপ ৬: ফায়ারওয়ালে পোর্ট খুলুন:

sudo ufw allow 'Nginx Full'
sudo ufw enable

ধাপ ৭: লোকালি পরীক্ষা করুন:

curl -I http://localhost

ধাপ ৮: সবশেষে নিশ্চিত হোন — সার্ভারের আইপি থেকে সাইট খোলা যাচ্ছে কিনা:

ping -c 3 আপনার-আইপি
ss -tulpn | grep :80

ss-এ দেখবেন 0.0.0.0:80 লিসেনিং অবস্থায় আছে — মানে ওয়েব সার্ভার বিশ্বের জন্য প্রস্তুত।

একটা কাজের মধ্য দিয়েই দেখলেন — update, install, systemctl, mkdir, echo, chown, ufw, curl, ping, ss, grep — ১১টি কমান্ড একসাথে কাজ করল। প্রতিটি কমান্ড আলাদা মুখস্থ করতে হবে না; কাজটা ঠিক করতে গেলেই কমান্ডগুলো নিজে নিজে মনে থাকবে।

বাংলাদেশের প্রেক্ষাপট: কোথায় কাজে লাগবে

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

মনে রাখবেন, এই সব কাজের জন্য ইংরেজি বা বিদেশি কোনো যোগ্যতা লাগে না — লাগে শুধু টার্মিনালে বসে অভ্যাস করা।

সাধারণ ভুলগুলো

  • rm দিয়ে গুরুত্বপূর্ণ ফাইল মুছে ফেলা: মুছে ফেলা ফাইল ফিরে পাওয়ার উপায় নেই। মুছার আগে pwd ও ls দিয়ে নিশ্চিত হোন কোথায় আছেন — বিশেষ করে sudo rm -rf দিয়ে কাজ করার সময় অত্যন্ত সাবধান।
  • sudo অযথা ব্যবহার: সাধারণ কাজেও sudo চালানো অভ্যাস হয়ে গেলে একদিন বড় দুর্ঘটনা ঘটবে। যেটা ছাড়া হয়, সেটা sudo ছাড়াই করুন।
  • apt update না চালিয়ে install: সরাসরি install করলে পুরোনো প্যাকেজ ইনস্টল হতে পারে। নতুন সিস্টেমে প্রথমে update।
  • পাইপে grep খোঁজা বন্ধ না হওয়া: grep বা tail -f চলতে থাকলে মনে হয় টার্মিনাল "আটকে" গেছে — আসলে কমান্ড অপেক্ষা করছে। Ctrl+C চেপে বের হন।
  • vim-এ আটকে যাওয়া: ভিমে Esc-এর পর :q! লিখে Enter — কোনো ক্ষতি ছাড়াই বের হবেন। "কী করব বুঝতে পারছি না" অবস্থায় ভয় পাবেন না।
  • পারমিশন ভুলে চালানোর চেষ্টা: "Permission denied" এরর মানে ফাইলে x (চালানোর) অনুমতি নেই — chmod +x দিয়ে দিন।
  • ইন্টারনেট থেকে কপি-পেস্ট করে কমান্ড চালানো: অচেনা সাইট থেকে sudo দিয়ে কিছু চালানোর আগে ভাবুন — এতে আপনার সিস্টেমের ক্ষতি হতে পারে।

প্রায়শই জিজ্ঞাসিত প্রশ্ন

প্রশ্ন: লিনাক্স কমান্ড শিখতে কতদিন লাগে?

ভিত্তিটা (ফাইল, ডিরেক্টরি, পারমিশন, ইনস্টল) নিয়মিত চর্চায় ২-৪ সপ্তাহে আয়ত্ত করা যায়। তবে কমান্ড আসলে অভ্যাসের ব্যাপার — যত কাজ করবেন, তত মনে থাকবে। এক মাসে প্রতিদিন ৩০ মিনিট টার্মিনালে কাজ করলে গড় ব্যবহারকারীর চেয়ে বেশি জানবেন।

প্রশ্ন: কমান্ড শেখার জন্য কি লিনাক্স ইনস্টল করতে হবে?

উইন্ডোজে থাকলেও দুটি উপায় আছে: VirtualBox-এর মতো সফটওয়্যারে ভার্চুয়াল মেশিনে উবুন্টু চালানো, অথবা উইন্ডোজ ১০/১১-এ থাকা WSL (Windows Subsystem for Linux) ব্যবহার করা। WSL-এ উবুন্টু ইনস্টল করলেই টার্মিনালে সব কমান্ড চর্চা করা যায়।

প্রশ্ন: সব কমান্ড কি সব লিনাক্সে একই রকম?

মূল কমান্ডগুলো (ls, cd, cp, rm, man ইত্যাদি) সব ডিস্ট্রিবিউশনে হুবহু একই, কারণ এগুলো GNU coreutils-এর অংশ। পার্থক্য আসে প্যাকেজ ম্যানেজারে — উবুন্টু/ডেবিয়ানে apt, ফেডোরা/সেন্টওএসে dnf/yum, আর্চে pacman।

প্রশ্ন: ভুল কমান্ড চালিয়ে সিস্টেম নষ্ট হয়ে গেলে?

আতঙ্কিত হবেন না। বেশির ভাগ ক্ষেত্রে সমস্যা ঠিক করা যায় — ইন্টারনেটে সেই সমস্যার সমাধান আছে, আর প্রতিটি কমান্ডের man-পেজ পড়ে বুঝে নিতে পারেন। গুরুত্বপূর্ণ ফাইলের নিয়মিত ব্যাকআপ রাখুন — এটাই আসল সুরক্ষা।

প্রশ্ন: sudo আর su-এর পার্থক্য কী?

sudo দিয়ে একটি মাত্র কমান্ড অ্যাডমিন ক্ষমতায় চালান (নিজের পাসওয়ার্ড দিয়ে)। su দিয়ে পুরোপুরি অন্য ইউজারে (সাধারণত রুটে) ঢুকে যান — তারপর সব কমান্ড সেই ইউজার হিসেবে চলে। প্রতিদিনের কাজে sudo-ই নিরাপদ ও প্রচলিত।

প্রশ্ন: grep দিয়ে কীভাবে ফাইলের ভেতরে খোঁজা যায়?

grep "কীওয়ার্ড" ফাইলের-নাম — যেমন: grep "error" app.log। কোনো ফোল্ডারের সব ফাইলে খুঁজতে: grep -r "error" /var/log/। পাইপ দিয়ে অন্য কমান্ডের আউটপুটেও খোঁজা যায়: ps aux | grep nginx।

উপসংহার

লিনাক্স কমান্ড শেখা আসলে কঠিন কিছু নয় — শুরুটা যত কঠিন মনে হয়, অভ্যাস হয়ে গেলে তত সহজ। ৬০টির বেশি কমান্ডের এই তালিকা থেকে আজই ১০টা বেছে নিন — pwd, ls, cd, touch, mkdir, cp, mv, rm, cat, man — এগুলো দিয়ে শুরু করুন। প্রতিদিন টার্মিনালে কিছু না কিছু করুন: ফাইল বানান, ফোল্ডার সাজান, ক্যালেন্ডার দেখুন।

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

আরও পড়ুন

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top