মূল content-এ যাও

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কীভাবে
LinuxTerminal app খোলো
macOSTerminal app (প্রায় সব command একই)
WindowsWSL (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-এও একই ধারণা:

main.py

দরকারি command

Commandকাজ
pwdবর্তমান folder
ls -laসব file, লুকানোগুলোও (. দিয়ে শুরু), বিস্তারিত সহ
cd pathFolder বদলাও (cd একা দিলে home-এ যায়)
mkdir -p a/b/cFolder বানাও, মাঝের সবগুলোসহ
touch fileখালি file বানাও
cp, mvCopy, সরানো বা নাম বদলানো
rm file, rm -r folderমুছে ফেলো, recycle bin নেই!
cat file, less fileFile পড়ো
find . -name "*.py"File খোঁজো

⚠️ rm -rf মুছে ফেলার আগে কিছু জিজ্ঞেস করে না, আর ফেরত আনার কোনো উপায় নেই। চালানোর আগে path দুবার দেখে নাও।

Exercise

Exercise

cd-এর হিসাব

+20 XP

resolve(cwd, target) লেখো। এটা বলবে cd target চালানোর পরে তুমি কোথায় থাকবে। cwd সবসময় / দিয়ে শুরু হওয়া একটা absolute path।

  • target / দিয়ে শুরু হলে absolute path, তাই cwd উপেক্ষা হবে
  • নাহলে relative path, তাই cwd-এর সাথে জুড়বে
  • . মানে এখানেই, .. মানে এক ধাপ উপরে (/-এর উপরে কিছু নেই, তাই /-ই থাকবে)
  • ফাঁকা অংশ (//) উপেক্ষা হবে
  • Return: পরিষ্কার absolute path। শেষে / থাকবে না, শুধু root হলে "/"।

os.path বা posixpath ছাড়া, নিজে list দিয়ে করো।

solution.py

Quiz

  1. Q1তুমি /home/riya/projects-এ আছ। cd ../notes দিলে কোথায় যাবে?
  2. Q2Absolute path চেনার উপায় কী?
  3. Q3Linux-এ program-এর log সাধারণত কোথায় থাকে?
0/3 answered

Challenge

Challenge

নিজের find

+50 XP

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 ব্যবহার করতে পারো।

solution.py

বাস্তবে কোথায় ব্যবহার হয়?

একটা 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।