DevOps/Linux ও Command Line/Lesson 01
Terminal আর filesystem
Server-এ mouse নেই, আছে terminal। pwd, ls, cd, mkdir, absolute আর relative path, আর Linux-এর folder-গুলো কীভাবে সাজানো। Python-এ cd-এর হিসাব আর find নিজে বানাও।
- সময়
- 22 মিনিট
- Exercise
- 1
- Challenge
- 1
- Quiz
- 3 প্রশ্ন
সহজ ভাষায়
তোমার computer-এ তুমি folder-এ double-click করো। কিন্তু AI model যে server-এ চলে, সেখানে সাধারণত screen বা mouse কিছুই থাকে না, আছে শুধু terminal। লেখা command দিয়ে সব কাজ করতে হয়।
$ pwd # এখন কোথায় আছি? (print working directory)
/home/riya
$ ls # এখানে কী কী আছে?
data notes.txt projects
$ cd projects # projects folder-এ ঢোকো
$ mkdir ai-app # নতুন folder
$ cd .. # এক ধাপ উপরে ফেরো
$ হলো prompt। এটা তুমি লিখবে না, শুধু বোঝায় যে এখানে command লেখা হয়।
কেন দরকার?
- Cloud server, Docker container, CI pipeline: সব জায়গায় Linux আর terminal
- GPU server-এ model train করা: SSH দিয়ে ঢুকে terminal-এ কাজ
- স্বয়ংক্রিয় কাজ: Terminal command script-এ লেখা যায়, mouse click লেখা যায় না
- DevOps, MLOps বা AI Engineering, যেকোনো চাকরিতে terminal-এ দক্ষতা ধরে নেওয়া হয়
কোথায় চালাবে
এই platform-এর playground browser-এ চলে, এখানে আসল terminal নেই। Command-গুলো নিজের computer-এ চালাও:
| তোমার OS | কীভাবে |
|---|---|
| Linux | Terminal app খোলো |
| macOS | Terminal app (প্রায় সব command একই) |
| Windows | WSL (Windows Subsystem for Linux) install করো, একদম আসল Linux পাবে। অথবা Git Bash। |
এই module-এর exercise-এ প্রতিটা command-এর পেছনের logic Python দিয়ে বানাবে, যাতে বোঝো command আসলে কী করে।
Linux filesystem: একটা উল্টো গাছ
সবকিছু শুরু হয় root / থেকে:
/
├── home/ ← user-দের file (/home/riya)
├── etc/ ← system config (/etc/nginx/nginx.conf)
├── var/
│ └── log/ ← log file
├── usr/bin/ ← program (python3, git, ...)
├── tmp/ ← অস্থায়ী file
└── root/ ← admin-এর home
Windows-এ C:\, D:\ আলাদা drive হয়। Linux-এ সব একটাই গাছের নিচে।
Absolute বনাম relative path
absolute: /home/riya/projects/ai ← সবসময় root থেকে, যেকোনো জায়গা থেকে একই
relative: projects/ai ← এখন যেখানে আছি সেখান থেকে
../shuvo ← .. = এক ধাপ উপরে
./run.sh ← . = এখানে
~/notes ← ~ = আমার home (/home/riya)
Python-এর os module-এও একই ধারণা:
দরকারি command
| Command | কাজ |
|---|---|
pwd | বর্তমান folder |
ls -la | সব file, লুকানোগুলোও (. দিয়ে শুরু), বিস্তারিত সহ |
cd path | Folder বদলাও (cd একা দিলে home-এ যায়) |
mkdir -p a/b/c | Folder বানাও, মাঝের সবগুলোসহ |
touch file | খালি file বানাও |
cp, mv | Copy, সরানো বা নাম বদলানো |
rm file, rm -r folder | মুছে ফেলো, recycle bin নেই! |
cat file, less file | File পড়ো |
find . -name "*.py" | File খোঁজো |
⚠️ rm -rf মুছে ফেলার আগে কিছু জিজ্ঞেস করে না, আর ফেরত আনার কোনো উপায় নেই। চালানোর আগে path দুবার দেখে নাও।
Exercise
Exercise
cd-এর হিসাব
resolve(cwd, target) লেখো। এটা বলবে cd target চালানোর পরে তুমি কোথায় থাকবে। cwd সবসময় / দিয়ে শুরু হওয়া একটা absolute path।
target/দিয়ে শুরু হলে absolute path, তাইcwdউপেক্ষা হবে- নাহলে relative path, তাই
cwd-এর সাথে জুড়বে .মানে এখানেই,..মানে এক ধাপ উপরে (/-এর উপরে কিছু নেই, তাই/-ই থাকবে)- ফাঁকা অংশ (
//) উপেক্ষা হবে - Return: পরিষ্কার absolute path। শেষে
/থাকবে না, শুধু root হলে"/"।
os.path বা posixpath ছাড়া, নিজে list দিয়ে করো।
Quiz
Challenge
Challenge
নিজের find
find_files(root, suffix) লেখো। এটা find root -name "*suffix"-এর মতো কাজ করবে:
root-এর ভেতরে সব জায়গায় (sub-folder সহ) যেসব file-এর নামsuffixদিয়ে শেষ হয়, সেগুলো খুঁজবে- Return:
root-এর সাপেক্ষে relative path-এর sorted list,/দিয়ে লেখা (যেমন"logs/app.log")
দেওয়া code একটা ছোট project folder বানায়। os.walk ব্যবহার করতে পারো।
বাস্তবে কোথায় ব্যবহার হয়?
একটা cloud GPU server-এ প্রথম ৫ মিনিট এরকম হয়:
ssh riya@203.0.113.10 # server-এ ঢোকো
cd ~/projects
git clone https://github.com/riya/student-model.git
cd student-model
ls -la # কী আছে দেখো
python3 train.py # training চালাও
ls models/ # model তৈরি হলো?
এর প্রায় প্রতিটা লাইন এই lesson-এর command।
Interview প্রশ্ন
- Beginner: Absolute আর relative path-এর পার্থক্য কী?
- Intermediate:
/etc,/var/logআর/home-এ সাধারণত কী থাকে? - Advanced: একটা server-এর disk ভরে গেছে। কোন folder সবচেয়ে বেশি জায়গা নিচ্ছে, কীভাবে খুঁজবে? (
du -sh /* | sort -h)
এরপর কী?
ls -la দিলে প্রতিটা file-এর পাশে -rwxr-xr---এর মতো অদ্ভুত লেখা দেখা যায়। এগুলো ঠিক করে কে file পড়তে, লিখতে বা চালাতে পারবে। পরের lesson: File permissions।