Linux শেখার শুরুতে সবচেয়ে গুরুত্বপূর্ণ বিষয়গুলোর একটি হলো Terminal এবং Basic Linux Commands বোঝা।
Docker, Kubernetes, DevOps, Cloud বা System Design—যে ক্ষেত্রেই কাজ করতে চান না কেন, Linux-এর command line সম্পর্কে ভালো ধারণা থাকা অত্যন্ত গুরুত্বপূর্ণ। কারণ বাস্তব server, container এবং অনেক development environment-এ GUI-এর পরিবর্তে terminal দিয়েই অধিকাংশ কাজ করতে হয়।
এই কারণে pwd, ls, cd, mkdir, touch, cat, echo, head, tail, cp, mv, rm—এই commandগুলো শুধু মুখস্থ করলেই হবে না; এগুলো কেন এবং কীভাবে কাজ করে, সেটিও বুঝতে হবে।
১. Linux Terminal আসলে কী?
Terminal হলো Linux system-এর সঙ্গে command-এর মাধ্যমে interact করার একটি interface।
আপনি terminal খুললে সাধারণত এমন একটি prompt দেখতে পারেন:
ragib@ragib-arch:~ %
অথবা Docker container-এর ভিতরে:
root@container-id:/#
এই একটি line-এর মধ্যেই system সম্পর্কে বেশ কিছু গুরুত্বপূর্ণ information থাকে।
একটি prompt-কে ভেঙে দেখলে:
ragib @ ragib-arch : ~ %
│ │ │ │
Username Hostname Home Shell/
Directory Privilege
২. Terminal Prompt-এর প্রতিটি অংশ
Username
ragib
এটি হলো বর্তমানে যে user system-এ login করে আছে তার username।
@ চিহ্ন
@
এটি username এবং machine/host name-এর মধ্যে separator হিসেবে কাজ করে।
যেমন:
user@machine
অর্থাৎ:
এই machine-এ এই user login করে আছে।
Machine / Hostname
ragib-arch
এটি হলো machine বা host-এর নাম।
Docker container-এর ক্ষেত্রে এটি container hostname-ও হতে পারে।
৩. ~ কী?
Terminal prompt-এর সবচেয়ে গুরুত্বপূর্ণ symbolগুলোর একটি হলো:
~
এটিকে বলা হয় tilde।
Linux shell-এ ~ সাধারণত current user's Home Directory নির্দেশ করে।
উদাহরণ:
cd ~
মানে:
আমার নিজের home directory-তে চলে যাও।
আর শুধু:
cd
দিলেও সাধারণত home directory-তে ফিরে যাওয়া যায়।
৪. %, $ এবং # কী বোঝায়?
Terminal prompt-এর শেষে যে symbol থাকে, সেটিও গুরুত্বপূর্ণ।
%
%
Zsh shell-এ সাধারণ user-এর prompt হিসেবে % দেখা যেতে পারে।
$
$
Bash shell-এ সাধারণ user-এর prompt সাধারণত $ দিয়ে শেষ হয়।
#
#
# সাধারণত বোঝায় আপনি root/superuser হিসেবে কাজ করছেন।
উদাহরণ:
root@container:/#
এখানে:
-
root→ user -
container→ hostname -
/→ current directory -
#→ root privilege
৫. Root User-এ যাওয়া
Linux-এ administrative কাজের জন্য root privilege প্রয়োজন হতে পারে।
Source-এর উদাহরণে:
sudo su
ব্যবহার করে root user shell-এ যাওয়া দেখানো হয়েছে।
তখন prompt-এর শেষে সাধারণ $ বা %-এর পরিবর্তে:
#
দেখা যেতে পারে।
তবে root shell-এ কাজ করার সময় সতর্ক থাকতে হয়, কারণ ভুল command system-এর গুরুত্বপূর্ণ file বা directory পরিবর্তন করতে পারে।
৬. Linux File System-এর Root Directory
এবার আসি Linux filesystem-এর সবচেয়ে গুরুত্বপূর্ণ concept-এ।
Linux-এর filesystem শুরু হয়:
/
এই /-কে বলা হয় Root Directory।
এটিকে Windows-এর C:\-এর সঙ্গে সরাসরি এক করে দেখা ঠিক নয়; Linux-এর filesystem hierarchy সম্পূর্ণ tree structure-এর মতো।
Conceptually:
/
├── bin
├── boot
├── dev
├── etc
├── home
├── lib
├── media
├── proc
├── root
├── sbin
├── tmp
├── usr
└── var
৭. /bin — Basic Binary Commands
bin এসেছে binary থেকে।
এখানে basic command-এর executable বা binary পাওয়া যেতে পারে।
যেমন:
/bin
├── ls
├── cat
├── ...
Source-এ ls, cat, pwd-এর মতো basic command-এর উদাহরণ দেওয়া হয়েছে।
যখন আপনি terminal-এ:
ls
লিখছেন, তখন shell command-টি খুঁজে executable হিসেবে চালায়।
৮. /boot — Boot-এর প্রয়োজনীয় Files
/boot directory-তে system boot করার সঙ্গে সম্পর্কিত গুরুত্বপূর্ণ files থাকে।
এর মধ্যে থাকতে পারে:
- Kernel-related files
- Boot loader-related files
সহজভাবে:
/boot
↓
System Boot-এর প্রয়োজনীয় files
৯. /dev — Device Files
/dev directory-তে বিভিন্ন hardware/device-এর সঙ্গে সম্পর্কিত device files থাকে।
Linux-এ অনেক hardware resource-কে file-like interface-এর মাধ্যমে access করা যায়।
Conceptually:
/dev
├── Storage Devices
├── Terminal Devices
├── Other Device Interfaces
└── ...
এটি Linux-এর "everything is a file"-ধারণার একটি গুরুত্বপূর্ণ অংশ।
১০. /etc — Configuration Files
/etc directory মূলত system configuration-এর জন্য গুরুত্বপূর্ণ।
/etc
↓
System Configuration
System এবং বিভিন্ন service/application-এর configuration এখানে পাওয়া যেতে পারে।
উদাহরণ হিসেবে:
/etc/...
এর অধীনে বিভিন্ন configuration file থাকতে পারে।
১১. /home — সাধারণ User-এর Home Directory
সাধারণ user-এর personal files সাধারণত /home-এর অধীনে থাকে।
যেমন:
/home
├── user1
├── user2
└── user3
একজন user-এর নিজের directory-তে থাকতে পারে:
Documents
Downloads
Pictures
Music
Desktop
১২. /lib — Shared Libraries
/lib directory-তে system-এর প্রয়োজনীয় shared libraries থাকতে পারে।
অনেক executable তাদের কাজের জন্য বিভিন্ন library-এর ওপর নির্ভর করে।
Conceptually:
Program
│
├── Library A
├── Library B
└── Library C
১৩. /media — Mounted External Devices
External device যেমন USB drive বা external disk system-এ mount হলে /media-এর অধীনে mount point দেখা যেতে পারে।
Conceptually:
USB / External Disk
↓
Mount
↓
/media/...
১৪. /proc — Process ও Kernel Information
/proc একটি বিশেষ virtual filesystem, যেখানে running processes এবং kernel-related information পাওয়া যায়।
এটি সাধারণ storage directory-এর মতো নয়।
এখানে system-এর runtime information দেখা যায়।
১৫. /root — Root User-এর Home Directory
একটি common confusion:
/
এবং
/root
এক জিনিস নয়।
/ হলো filesystem-এর root directory।
অন্যদিকে:
/root
হলো root user-এর home directory।
১৬. /sbin — System Administration Binaries
/sbin-এ system administration-এর সঙ্গে সম্পর্কিত binary/command পাওয়া যেতে পারে।
সহজভাবে:
/sbin
↓
System Administration Commands
১৭. /tmp — Temporary Files
/tmp directory temporary files রাখার জন্য ব্যবহৃত হয়।
Conceptually:
Application
↓
Temporary Data
↓
/tmp
এগুলো সাধারণত permanent user data রাখার জায়গা নয়।
১৮. /usr — User Programs ও Applications
/usr-এর অধীনে user programs এবং applications-এর বিভিন্ন file পাওয়া যেতে পারে।
অনেক installed software-এর বিভিন্ন component এখানে থাকতে পারে।
১৯. /var — Variable Data, Logs ও Cache
/var এমন data-এর জন্য গুরুত্বপূর্ণ যা সময়ের সঙ্গে পরিবর্তিত হয়।
যেমন:
- Logs
- Cache
- অন্যান্য variable data
Conceptually:
/var
├── logs
├── cache
└── variable data
২০. pwd — আমি এখন কোথায় আছি?
Linux terminal-এ সবচেয়ে basic কিন্তু গুরুত্বপূর্ণ command:
pwd
এর অর্থ:
Print Working Directory
এটি আপনার current working directory-এর absolute path দেখায়।
উদাহরণ:
pwd
Output:
/home/user
মানে আপনি বর্তমানে:
/home/user
directory-তে আছেন।
২১. ls — Directory-এর ভিতরের জিনিস দেখা
বর্তমান directory-এর file এবং folder দেখতে:
ls
ব্যবহার করা হয়।
উদাহরণ:
ls
Output হতে পারে:
Documents
Downloads
Pictures
project
notes.txt
২২. ls -l — Detailed Listing
শুধু নাম দেখার পরিবর্তে বিস্তারিত information দেখতে:
ls -l
এটি long listing format-এ information দেখায়।
যেমন:
permissions
owner
group
size
date/time
filename
Source-এ ls -l-কে long list হিসেবে ব্যাখ্যা করা হয়েছে।
২৩. ls -a — Hidden Files দেখা
Linux-এ যেসব file-এর নাম . দিয়ে শুরু হয়, সেগুলো সাধারণ ls output-এ দেখা যায় না।
Hidden file-সহ সব file দেখতে:
ls -a
উদাহরণ:
.
..
.bashrc
.profile
project
২৪. ls -la — সবচেয়ে Useful Listing Command
Detailed information + hidden files একসঙ্গে দেখতে:
ls -la
এটি:
-l → Long listing
-a → All files
অর্থাৎ:
ls -la
= Long listing + Hidden files
২৫. cd — Directory Change
cd অর্থ:
Change Directory
এক directory থেকে অন্য directory-তে যাওয়ার জন্য cd ব্যবহার করা হয়।
cd Documents
মানে:
Documents directory-তে যাও।
২৬. cd ~ এবং cd
Home directory-তে যেতে:
cd ~
অথবা শুধু:
cd
ব্যবহার করা যায়।
২৭. cd / — Root Directory
Filesystem-এর একদম root-এ যেতে:
cd /
এরপর:
pwd
দিলে:
/
দেখাবে।
২৮. cd .. — Parent Directory
ধরুন আপনি আছেন:
/app/habib/rahim
এখন এক ধাপ উপরে যেতে:
cd ..
তাহলে যাবেন:
/app/habib
.. মানে current directory-এর parent directory।
২৯. cd . — Current Directory
একটি dot:
.
মানে current directory।
তাই:
cd .
দিলে আপনি একই directory-তেই থাকবেন।
এটি path manipulation-এর সময় বেশি গুরুত্বপূর্ণ হয়ে ওঠে।
৩০. cd - — আগের Directory-তে ফিরে যাওয়া
ধরুন আপনি ছিলেন:
/home/user
তারপর গেলেন:
/var/log
এখন:
cd -
দিলে আগের working directory-তে ফিরে যেতে পারবেন।
এটি দ্রুত navigation-এর জন্য খুব useful।
৩১. Absolute Path কী?
Absolute Path হলো এমন path যা filesystem-এর root / থেকে শুরু হয়।
উদাহরণ:
cd /app/habib/rahim
এখানে পুরো path root থেকে শুরু হয়েছে:
/
└── app
└── habib
└── rahim
তাই এটি absolute path।
৩২. Relative Path কী?
Relative path current directory-এর ওপর নির্ভর করে।
উদাহরণ:
cd ../rahim
এখানে আমরা current location থেকে relativeভাবে path তৈরি করছি।
তাই:
Absolute:
/app/habib/rahim
Relative:
../rahim
৩৩. Absolute বনাম Relative Path
সহজ comparison:
| বিষয় | Absolute Path | Relative Path |
|---|---|---|
| কোথা থেকে শুরু | / |
Current directory |
| Current location-এর ওপর নির্ভরশীল | না | হ্যাঁ |
| Example | /app/habib/rahim |
../rahim |
একটি সহজ mental model:
Absolute Path
↓
Start from /
Relative Path
↓
Start from "আমি এখন যেখানে আছি"
৩৪. mkdir — নতুন Directory তৈরি
নতুন folder তৈরি করতে:
mkdir app
এটি app নামে একটি directory তৈরি করবে।
৩৫. mkdir -p — Nested Directory তৈরি
ধরুন একসঙ্গে:
habib/
└── rahim/
তৈরি করতে চান।
তাহলে:
mkdir -p habib/rahim
ব্যবহার করা যায়।
-p parent directory প্রয়োজন হলে সেটিও তৈরি করে।
৩৬. touch — নতুন File তৈরি
খালি file তৈরি করার জন্য:
touch a.txt
এটি a.txt নামে একটি file তৈরি করবে।
তারপর:
ls
দিলে file-টি দেখতে পারবেন।
৩৭. cat — File-এর Content দেখা
কোনো file-এর content terminal-এ দেখতে:
cat a.txt
ব্যবহার করা হয়।
যদি file empty হয়, তাহলে কোনো output দেখা যাবে না।
৩৮. echo দিয়ে File-এ লেখা
echo command-এর output file-এ redirect করা যায়।
উদাহরণ:
echo "Hello World" > a.txt
এখানে:
Hello World
a.txt-এর মধ্যে লেখা হবে।
৩৯. > এবং >> — Overwrite বনাম Append
এখানে দুটি symbol খুব গুরুত্বপূর্ণ।
>
echo "Hello World" > a.txt
> ব্যবহার করলে আগের content overwrite হয়ে নতুন content লেখা হয়।
অর্থাৎ:
Old Content
↓
X
New Content
↓
a.txt
>>
echo "Another Line" >> a.txt
>> আগের content রেখে file-এর শেষে নতুন content যোগ করে।
অর্থাৎ:
Hello World
Another Line
তাই মনে রাখুন:
> = Overwrite
>> = Append
৪০. head — File-এর শুরু দেখা
বড় file-এর পুরো content না দেখে প্রথম কয়েকটি line দেখতে:
head -n 5 a.txt
এটি প্রথম ৫টি line দেখাবে।
বড় log file inspect করার সময় এটি খুব useful।
৪১. tail — File-এর শেষ দেখা
শেষের কয়েকটি line দেখতে:
tail -n 2 a.txt
এটি শেষ ২টি line দেখাবে।
বিশেষ করে log file দেখার ক্ষেত্রে tail অত্যন্ত গুরুত্বপূর্ণ।
৪২. cp — File Copy করা
একটি file অন্য নামে copy করতে:
cp file1.txt file2.txt
এতে file1.txt-এর একটি copy file2.txt নামে তৈরি হবে।
Conceptually:
file1.txt
│
│ cp
▼
file2.txt
৪৩. Directory Copy করতে cp -r
শুধু file নয়, পুরো directory copy করতে হলে recursive option ব্যবহার করতে হয়:
cp -r rahim/ ataur/
এখানে:
-r
মানে recursive।
অর্থাৎ directory-এর ভিতরের file এবং nested directory-সহ copy হবে।
৪৪. mv — Move অথবা Rename
mv দিয়ে file বা directory move করা যায়।
কিন্তু একই directory-তে destination name পরিবর্তন করলে এটিই rename-এর কাজও করে।
উদাহরণ:
mv file3.txt file4.txt
এতে:
file3.txt
এর নাম হয়ে যাবে:
file4.txt
তাই:
mv
├── Move
└── Rename
৪৫. rm — File Delete
একটি file delete করতে:
rm file.txt
এটি destructive operation।
Delete করার আগে filename/path ভালোভাবে check করা উচিত।
৪৬. rm -rf — Directory Delete
Directory-এর ভিতরে file থাকলে সাধারণ:
rm folder
দিয়ে সেটি remove করা যায় না।
Recursive এবং force option ব্যবহার করে:
rm -rf habib/
directory এবং তার ভিতরের content delete করা যায়।
এখানে:
-r = recursive
-f = force
অর্থাৎ:
rm -rf
│
├── ভিতরের file delete
├── nested directory delete
└── parent directory delete
সতর্কতা: rm -rf খুব powerful এবং destructive command। ভুল path-এ চালালে গুরুত্বপূর্ণ data মুছে যেতে পারে।
৪৭. একটি Practical Workflow
এখন আমরা শেখা commandগুলো একসঙ্গে ব্যবহার করি।
প্রথমে current location দেখি:
pwd
তারপর files দেখি:
ls
Detailed listing:
ls -la
একটি directory তৈরি করি:
mkdir -p project/src
Directory-তে যাই:
cd project
তারপর:
pwd
দিয়ে location check করি।
৪৮. File তৈরি ও Content লেখা
এখন src directory-তে যাই:
cd src
একটি file তৈরি করি:
touch app.txt
Content লিখি:
echo "Hello World" > app.txt
এখন content দেখি:
cat app.txt
Output:
Hello World
আরও একটি line যোগ করতে:
echo "Linux is powerful" >> app.txt
আবার:
cat app.txt
তাহলে:
Hello World
Linux is powerful
দেখতে পাব।
৪৯. File-এর নির্দিষ্ট অংশ দেখা
ধরুন file অনেক বড়।
পুরো file দেখতে না চাইলে:
head -n 5 app.txt
প্রথম ৫ line দেখাবে।
শেষের ৫ line দেখতে:
tail -n 5 app.txt
এই technique বিশেষভাবে log এবং large text file inspect করার সময় কার্যকর।
৫০. Copy ও Rename
ধরুন:
app.txt
কে copy করতে চান:
cp app.txt backup.txt
এখন দুইটি file:
app.txt
backup.txt
Rename করতে:
mv backup.txt old-backup.txt
এখন:
app.txt
old-backup.txt
৫১. Linux Navigation-এর Mental Model
Directory navigation বুঝতে সবচেয়ে ভালো উপায় হলো একটি tree কল্পনা করা।
/
└── app
└── habib
└── rahim
আপনি যদি rahim-এ থাকেন:
/app/habib/rahim
তাহলে:
cd .
→ একই জায়গায় থাকবেন।
cd ..
→ habib-এ যাবেন।
cd ../..
→ app-এ যাবেন।
cd /
→ root directory-তে যাবেন।
cd ~
→ নিজের home directory-তে যাবেন।
৫২. Essential Linux Commands — Quick Reference
| Command | কাজ |
|---|---|
pwd |
Current location দেখায় |
ls |
File ও directory list দেখায় |
ls -l |
Detailed listing |
ls -a |
Hidden files দেখায় |
ls -la |
Detailed + hidden files |
cd |
Directory change |
cd ~ |
Home directory |
cd / |
Root directory |
cd .. |
Parent directory |
cd . |
Current directory |
cd - |
Previous directory |
mkdir |
Directory তৈরি |
mkdir -p |
Nested directory তৈরি |
touch |
Empty file তৈরি |
cat |
File content দেখা |
echo |
Output/file-এ text লেখা |
head |
প্রথম কয়েকটি line দেখা |
tail |
শেষ কয়েকটি line দেখা |
cp |
File copy |
cp -r |
Directory recursive copy |
mv |
Move/Rename |
rm |
File delete |
rm -rf |
Directory ও contents delete |
৫৩. সবচেয়ে গুরুত্বপূর্ণ Command Combination
বাস্তবে কাজ করার সময় এই combinationগুলো খুব বেশি কাজে লাগবে:
কোথায় আছি?
pwd
এখানে কী আছে?
ls
Hidden file-সহ বিস্তারিত দেখতে চাই
ls -la
Home-এ যেতে চাই
cd ~
Root-এ যেতে চাই
cd /
এক ধাপ উপরে যেতে চাই
cd ..
আগের directory-তে ফিরতে চাই
cd -
Directory তৈরি করতে চাই
mkdir project
Nested directory তৈরি করতে চাই
mkdir -p project/src
File তৈরি করতে চাই
touch app.txt
File দেখতে চাই
cat app.txt
File-এ নতুন content লিখতে চাই
echo "Hello" > app.txt
Existing content-এর শেষে যোগ করতে চাই
echo "World" >> app.txt
File copy করতে চাই
cp app.txt backup.txt
Rename করতে চাই
mv app.txt main.txt
File delete করতে চাই
rm main.txt
৫৪. শেষ কথা
Linux-এর basic command শেখা মানে শুধু কয়েকটি command মুখস্থ করা নয়।
আপনাকে বুঝতে হবে:
Terminal
↓
Shell
↓
Command
↓
Filesystem
↓
File / Directory
আর filesystem-এর ক্ষেত্রে:
/
├── bin
├── boot
├── dev
├── etc
├── home
├── lib
├── media
├── proc
├── root
├── sbin
├── tmp
├── usr
└── var
এরপর navigation:
pwd
ls
cd
File ও directory management:
mkdir
touch
cat
echo
Content inspection:
head
tail
File management:
cp
mv
rm
এই commandগুলো Linux-এর command-line workflow-এর foundation তৈরি করে।
বিশেষ করে Docker, Kubernetes এবং system-level কাজ শেখার আগে এই fundamentals ভালোভাবে আয়ত্ত করা অত্যন্ত গুরুত্বপূর্ণ।
এক লাইনে মনে রাখুন
pwd → আমি কোথায়?
ls → এখানে কী আছে?
cd → কোথায় যাব?
mkdir → নতুন folder বানাব
touch → নতুন file বানাব
cat → file কী আছে দেখব
echo → file-এ লিখব
head/tail → file-এর অংশ দেখব
cp → copy করব
mv → move/rename করব
rm → delete করব
Linux-এর command line আসলে ভয় পাওয়ার মতো কিছু নয়। একটি filesystem tree এবং কয়েকটি fundamental command-এর relationship পরিষ্কার হয়ে গেলে terminal-এ কাজ করা অনেক বেশি স্বাভাবিক এবং দ্রুত হয়ে যায়।
Top comments (0)