🖥️ Terminal / Command Line — কী, কেন এবং কীভাবে?

Terminal হলো কম্পিউটারের সাথে সরাসরি কথা বলার পদ্ধতি। GUI-এর বদলে text কমান্ড লিখে কম্পিউটার নিয়ন্ত্রণ করা হয়। একজন developer-এর জন্য Terminal হলো সবচেয়ে শক্তিশালী অস্ত্র।


🔷 Terminal কী?

Terminal (বা Command Line Interface — CLI) হলো এমন একটি প্রোগ্রাম যেখানে তুমি text কমান্ড টাইপ করো এবং কম্পিউটার সেই অনুযায়ী কাজ করে। আধুনিক অপারেটিং সিস্টেমে GUI (Graphical User Interface) থাকলেও Terminal দিয়ে অনেক কাজ আরও দ্রুত ও নির্ভরযোগ্যভাবে করা যায়।

GUI vs Terminal — পার্থক্য কী? GUI (Graphical): → ফাইল মুছতে: ক্লিক → Select → Delete চাপো → সময়: ৫-১০ সেকেন্ড Terminal: → ফাইল মুছতে: rm myfile.txt ← এক সেকেন্ড! → ১০০০ ফাইল মুছতে: rm *.txt ← একটি কমান্ডেই! Terminal-এর সুবিধা: ✅ অনেক দ্রুত কাজ হয় ✅ Automation সম্ভব (script লেখা যায়) ✅ Remote server নিয়ন্ত্রণ করা যায় ✅ Developer tools (git, npm, node) Terminal-এ চলে ✅ GUI নেই এমন server-এ কাজ করা যায়
অপারেটিং সিস্টেম Terminal Default Shell
Linux GNOME Terminal, Konsole, Alacritty Bash
macOS Terminal.app, iTerm2, Warp Zsh (macOS Catalina+)
Windows Windows Terminal, CMD, PowerShell PowerShell / CMD
Windows + WSL Windows Terminal + WSL2 Bash (Ubuntu)

🔷 Terminal-এর ইতিহাস

সাল ঘটনা
১৯৬৯ Unix OS তৈরি — Shell-এর প্রথম ব্যবহার শুরু।
১৯৭১ Thompson Shell — Unix-এর প্রথম shell।
১৯৭৯ Bourne Shell (sh) — আধুনিক shell scripting-এর ভিত্তি।
১৯৮৩ C Shell (csh) ও Korn Shell (ksh) তৈরি।
১৯৮৯ Bash (Bourne Again Shell) — GNU Project, Linux-এর standard।
১৯৯০ Zsh — Bash-এর উন্নত বিকল্প।
২০০৬ PowerShell — Microsoft-এর object-based shell।
২০১৯ macOS Catalina Zsh-কে default shell করে।
২০২২+ Fish, Nushell, Warp — modern terminal পরিবেশ।

মাশাআল্লাহ! 🎉 এই section শেষ করেছেন — অসাধারণ! প্রজেক্টের কোডগুলো দেখে দেখে VS Code-এ নিজে টাইপ করুন — copy-paste করবেন না। কারণ হাতে টাইপ করলেই স্মৃতিতে গেঁথে যায়, মাথায় থাকে, বাস্তব অভিজ্ঞতা হয়, সাহস বাড়ে। শুধু পড়ে বা দেখে কেউ কখনো developer হয়নি। চলুন পড়ি! হাতে কলমে শিখি!

🐚 Shell-এর প্রকারভেদ

Shell হলো সেই প্রোগ্রাম যা তোমার কমান্ড পড়ে OS-কে বলে দেয় কী করতে হবে।


🔷 জনপ্রিয় Shell সমূহ তুলনা

Shell পূর্ণ নাম OS বিশেষত্ব কার জন্য?
Bash Bourne Again Shell Linux, macOS, WSL সবচেয়ে প্রচলিত, scripting-এ সেরা সবার জন্য ✅
Zsh Z Shell macOS (default), Linux Auto-complete, themes, plugins macOS users ✅
Fish Friendly Interactive Shell Linux, macOS সহজ syntax, auto-suggest Beginners ✅
PowerShell Windows (cross-platform) Object-based, .NET integration Windows users ✅
CMD Command Prompt Windows পুরনো, সীমিত ক্ষমতা Legacy কাজে
sh Bourne Shell Unix/Linux POSIX-compliant, portable Server scripting
# তোমার বর্তমান shell কোনটা? echo $SHELL # /bin/bash বা /bin/zsh দেখাবে # কোন কোন shell আছে? cat /etc/shells # Shell পরিবর্তন করো chsh -s /bin/zsh # Zsh-এ যাও chsh -s /bin/bash # Bash-এ ফিরে আসো # Bash version দেখো bash --version # Zsh version দেখো zsh --version
কোনটা দিয়ে শুরু করবে?
Linux/WSL: Bash — সব জায়গায় আছে, documentation সবচেয়ে বেশি
macOS: Zsh — already default, Oh My Zsh দিয়ে upgrade করো
Windows: WSL2 + Bash — Linux environment পাবে Windows-এ

মাশাআল্লাহ! 🎉 এই section শেষ করেছেন — অসাধারণ! প্রজেক্টের কোডগুলো দেখে দেখে VS Code-এ নিজে টাইপ করুন — copy-paste করবেন না। কারণ হাতে টাইপ করলেই স্মৃতিতে গেঁথে যায়, মাথায় থাকে, বাস্তব অভিজ্ঞতা হয়, সাহস বাড়ে। শুধু পড়ে বা দেখে কেউ কখনো developer হয়নি। চলুন পড়ি! হাতে কলমে শিখি!

⚙️ Terminal Setup ও Install


🔷 Windows-এ WSL2 সেটআপ (সবচেয়ে গুরুত্বপূর্ণ)

Windows-এ Linux Terminal ব্যবহার করতে WSL2 (Windows Subsystem for Linux) হলো সেরা উপায়। এটি দিয়ে Windows-এর ভেতরেই পূর্ণাঙ্গ Linux পরিবেশ পাওয়া যায়।

# Step 1: PowerShell (Admin) খোলো এবং চালাও: wsl --install # Step 2: Restart করো # Step 3: Ubuntu ওপেন হবে, username ও password সেট করো # অন্য distro install করতে: wsl --list --online # available distro দেখো wsl --install -d Ubuntu-22.04 # WSL version চেক wsl --version # বর্তমান WSL list wsl --list --verbose

Windows Terminal ইনস্টল

# Microsoft Store থেকে "Windows Terminal" ডাউনলোড করো # অথবা winget দিয়ে: winget install --id Microsoft.WindowsTerminal -e # Windows Terminal খুলে Dropdown থেকে Ubuntu বেছে নাও

🔷 macOS Terminal Setup

# iTerm2 ইনস্টল (সেরা macOS terminal) # https://iterm2.com/ থেকে ডাউনলোড করো # অথবা Homebrew দিয়ে: brew install --cask iterm2 # Homebrew ইনস্টল করো (macOS package manager) /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" # Xcode Command Line Tools (অপরিহার্য) xcode-select --install

🔷 Linux Terminal — কিছু জনপ্রিয় বিকল্প

# Ubuntu/Debian-এ Terminator ইনস্টল (split-pane terminal) sudo apt install terminator # Alacritty (GPU-accelerated, দ্রুত) sudo add-apt-repository ppa:aslatter/ppa sudo apt install alacritty # Kitty (feature-rich) curl -L https://sw.kovidgoyal.net/kitty/installer.sh | sh /dev/stdin
Recommended Setup:
→ Windows: Windows Terminal + WSL2 (Ubuntu) + Oh My Zsh
→ macOS: iTerm2 + Zsh + Oh My Zsh
→ Linux: Alacritty বা GNOME Terminal + Bash/Zsh

মাশাআল্লাহ! 🎉 এই section শেষ করেছেন — অসাধারণ! প্রজেক্টের কোডগুলো দেখে দেখে VS Code-এ নিজে টাইপ করুন — copy-paste করবেন না। কারণ হাতে টাইপ করলেই স্মৃতিতে গেঁথে যায়, মাথায় থাকে, বাস্তব অভিজ্ঞতা হয়, সাহস বাড়ে। শুধু পড়ে বা দেখে কেউ কখনো developer হয়নি। চলুন পড়ি! হাতে কলমে শিখি!

🗂️ ডিরেক্টরি নেভিগেশন

Terminal-এ কাজ করতে হলে প্রথমেই শিখতে হবে — কোথায় আছি, কোথায় যাবো।


🔷 pwd, ls, cd — তিনটি সবচেয়ে গুরুত্বপূর্ণ কমান্ড

# pwd — Print Working Directory (এখন কোথায় আছি?) pwd # Output: /home/farid/projects # ls — List (ফোল্ডারের ভেতরে কী আছে?) ls # simple list ls -l # detailed list (permission, size, date) ls -a # hidden ফাইলও দেখাও (. দিয়ে শুরু) ls -la # detailed + hidden ls -lh # human-readable size (KB, MB) ls -lt # সময় অনুযায়ী sort ls -lS # size অনুযায়ী sort ls -R # recursive (sub-folder-ও) ls /etc # নির্দিষ্ট path-এর list # cd — Change Directory (অন্য ফোল্ডারে যাও) cd /home/farid # absolute path দিয়ে cd projects # relative path দিয়ে cd .. # এক ফোল্ডার উপরে cd ../.. # দুই ফোল্ডার উপরে cd ~ # home directory-তে যাও cd - # আগের ফোল্ডারে ফিরে যাও cd # home-এ যাও (~ ছাড়াও)

Path-এর ধরন বোঝা

# Absolute Path — root (/) থেকে শুরু /home/farid/projects/myapp # সম্পূর্ণ address # Relative Path — বর্তমান location থেকে projects/myapp # বর্তমান থেকে নিচে ../documents # বর্তমান থেকে উপরে, তারপর নিচে # Special Symbols ~ → home directory (/home/farid বা /Users/farid) . → বর্তমান ডিরেক্টরি .. → এক ফোল্ডার উপরের ডিরেক্টরি / → root directory (Linux/macOS) C:\ → root drive (Windows)
Linux/macOS Path কী থাকে
/ Root — সবকিছুর শুরু
/home/farid User-এর home directory (Linux)
/Users/farid User-এর home directory (macOS)
/etc System configuration ফাইল
/var/log Log ফাইলসমূহ
/tmp Temporary ফাইল (restart-এ মুছে যায়)
/usr/bin Installed programs (ls, git, node...)
/usr/local Manually installed software

🔷 tree — ফোল্ডার Structure দেখো

# tree ইনস্টল করো sudo apt install tree # Ubuntu/Debian brew install tree # macOS # ব্যবহার tree # বর্তমান ফোল্ডার tree /home/farid/projects # নির্দিষ্ট path tree -L 2 # মাত্র ২ স্তর গভীর tree -a # hidden ফাইলও দেখাও tree -d # শুধু directories tree --dirsfirst # ফোল্ডার আগে # Output উদাহরণ: . ├── index.html ├── css/ │ ├── style.css │ └── min.css ├── js/ │ └── script.js └── images/ └── logo.png

মাশাআল্লাহ! 🎉 এই section শেষ করেছেন — অসাধারণ! প্রজেক্টের কোডগুলো দেখে দেখে VS Code-এ নিজে টাইপ করুন — copy-paste করবেন না। কারণ হাতে টাইপ করলেই স্মৃতিতে গেঁথে যায়, মাথায় থাকে, বাস্তব অভিজ্ঞতা হয়, সাহস বাড়ে। শুধু পড়ে বা দেখে কেউ কখনো developer হয়নি। চলুন পড়ি! হাতে কলমে শিখি!

📁 ফাইল ও ফোল্ডার তৈরি করা


🔷 mkdir ও touch — তৈরি করা

# mkdir — Make Directory (ফোল্ডার তৈরি) mkdir myproject # একটি ফোল্ডার mkdir src css js images # একসাথে কয়েকটি mkdir -p a/b/c # nested (parent নেই হলেও তৈরি করো) mkdir -p src/{components,pages,hooks} # একসাথে sub-folder # touch — ফাইল তৈরি (বা timestamp আপডেট) touch index.html # ফাইল তৈরি touch style.css script.js # একসাথে কয়েকটি touch src/{App.js,index.js} # sub-folder-এ # echo দিয়ে content সহ ফাইল তৈরি echo "Hello World" > hello.txt echo '{"name":"my-app"}' > package.json # cat দিয়ে multi-line content লেখো cat > config.txt << EOF server=localhost port=3000 debug=true EOF

🔷 একটি Project Structure তৈরির উদাহরণ

# একটি Web Project setup করো — শুধু কমান্ড দিয়ে! mkdir my-website cd my-website # ফোল্ডার Structure তৈরি mkdir -p src/{html,css,js,images} mkdir -p dist # ফাইল তৈরি touch src/html/index.html touch src/css/{style.css,reset.css} touch src/js/{main.js,utils.js} touch README.md touch .gitignore # ফলাফল দেখো tree my-website # my-website/ # ├── README.md # ├── .gitignore # ├── dist/ # └── src/ # ├── html/ # │ └── index.html # ├── css/ # │ ├── style.css # │ └── reset.css # ├── js/ # │ ├── main.js # │ └── utils.js # └── images/

মাশাআল্লাহ! 🎉 এই section শেষ করেছেন — অসাধারণ! প্রজেক্টের কোডগুলো দেখে দেখে VS Code-এ নিজে টাইপ করুন — copy-paste করবেন না। কারণ হাতে টাইপ করলেই স্মৃতিতে গেঁথে যায়, মাথায় থাকে, বাস্তব অভিজ্ঞতা হয়, সাহস বাড়ে। শুধু পড়ে বা দেখে কেউ কখনো developer হয়নি। চলুন পড়ি! হাতে কলমে শিখি!

👁️ ফাইল দেখা ও অনুসন্ধান


🔷 ফাইল Content দেখা

# cat — পুরো ফাইল দেখো cat file.txt cat -n file.txt # line number সহ cat file1.txt file2.txt # একাধিক ফাইল একসাথে # less — বড় ফাইল পেজ করে দেখো less bigfile.log # Navigation: j=নিচে, k=উপরে, space=পেজ, q=বের হও, /=search # more — simple pager more file.txt # head — শুরুর কিছু line দেখো head file.txt # প্রথম ১০ line head -n 20 file.txt # প্রথম ২০ line head -c 100 file.txt # প্রথম ১০০ character # tail — শেষের কিছু line দেখো tail file.txt # শেষ ১০ line tail -n 50 file.txt # শেষ ৫০ line tail -f server.log # real-time follow (log দেখার জন্য!) tail -f -n 100 app.log # শেষ ১০০ line থেকে follow

find — ফাইল খোঁজা

# find — ফাইল ও ফোল্ডার খোঁজো find . -name "index.html" # নাম দিয়ে খোঁজো find . -name "*.css" # wildcard find /home -name "*.log" # নির্দিষ্ট path-এ find . -type f # শুধু ফাইল find . -type d # শুধু directory find . -size +1M # ১ MB-এর বেশি find . -size -100k # ১০০ KB-এর কম find . -newer index.html # index.html-এর পরে modified find . -mtime -7 # শেষ ৭ দিনে modified find . -name "*.tmp" -delete # খুঁজে মুছে ফেলো find . -name "*.js" -exec wc -l {} \; # প্রতিটিতে কমান্ড চালাও # locate — দ্রুত খোঁজা (database-based) sudo updatedb # database আপডেট locate index.html # যেকোনো জায়গায় খোঁজো # which — কোনো program কোথায় আছে? which node # /usr/local/bin/node which npm which git

🔷 grep — ফাইলের ভেতরে খোঁজা

# grep — Pattern/Text খোঁজো grep "error" log.txt # "error" শব্দ খোঁজো grep -i "error" log.txt # case-insensitive grep -n "error" log.txt # line number সহ grep -r "TODO" src/ # recursive (সব sub-folder-এ) grep -l "TODO" src/*.js # শুধু ফাইলের নাম grep -v "debug" log.txt # "debug" নেই এমন line grep -c "error" log.txt # কতটি line match? grep -A 3 "error" log.txt # match-এর পর ৩ line grep -B 2 "error" log.txt # match-এর আগে ২ line grep -E "error|warning" log.txt # regex: error অথবা warning grep "^Hello" file.txt # line শুরু হয় Hello দিয়ে grep "world$" file.txt # line শেষ হয় world দিয়ে grep -w "node" file.txt # exact word match # Multiple pattern grep -e "error" -e "warning" log.txt

মাশাআল্লাহ! 🎉 এই section শেষ করেছেন — অসাধারণ! প্রজেক্টের কোডগুলো দেখে দেখে VS Code-এ নিজে টাইপ করুন — copy-paste করবেন না। কারণ হাতে টাইপ করলেই স্মৃতিতে গেঁথে যায়, মাথায় থাকে, বাস্তব অভিজ্ঞতা হয়, সাহস বাড়ে। শুধু পড়ে বা দেখে কেউ কখনো developer হয়নি। চলুন পড়ি! হাতে কলমে শিখি!

📋 Copy, Move ও Rename


🔷 cp — Copy করা

# cp — Copy (ফাইল ও ফোল্ডার copy) cp file.txt backup.txt # ফাইল copy cp file.txt /backup/ # অন্য ফোল্ডারে cp file1.txt file2.txt /destination/ # একাধিক ফাইল cp -r src/ backup/ # ফোল্ডার copy (recursive) cp -r src/ /var/www/html/ # ফোল্ডার অন্য জায়গায় cp -i file.txt dest/ # overwrite-এর আগে জিজ্ঞেস করো cp -u file.txt dest/ # নতুন হলেই copy করো cp -v file.txt dest/ # verbose (কী হচ্ছে দেখাও) cp -p file.txt dest/ # permission ও timestamp বজায় রাখো cp -a src/ backup/ # archive mode (সব attribute সহ)

🔷 mv — Move ও Rename করা

# mv — Move বা Rename mv old.txt new.txt # rename mv file.txt /backup/ # move mv file.txt /backup/newname.txt # move + rename mv src/ /var/www/html/ # ফোল্ডার move mv *.html html/ # সব .html ফাইল html/ ফোল্ডারে mv -i file.txt dest/ # overwrite-এর আগে জিজ্ঞেস করো mv -u file.txt dest/ # নতুন হলেই move করো mv -v file.txt dest/ # verbose # ফাইল rename করার উদাহরণ mv index.htm index.html # extension পরিবর্তন mv "my file.txt" my-file.txt # space থাকলে quote ব্যবহার

মাশাআল্লাহ! 🎉 এই section শেষ করেছেন — অসাধারণ! প্রজেক্টের কোডগুলো দেখে দেখে VS Code-এ নিজে টাইপ করুন — copy-paste করবেন না। কারণ হাতে টাইপ করলেই স্মৃতিতে গেঁথে যায়, মাথায় থাকে, বাস্তব অভিজ্ঞতা হয়, সাহস বাড়ে। শুধু পড়ে বা দেখে কেউ কখনো developer হয়নি। চলুন পড়ি! হাতে কলমে শিখি!

🗑️ Delete ও Cleanup


🔷 rm — ফাইল মুছা

# rm — Remove (মুছে যাবে, Recycle Bin নেই!) rm file.txt # ফাইল মুছো rm file1.txt file2.txt # একাধিক ফাইল rm *.log # সব .log ফাইল rm -i file.txt # confirm করো (safe) rm -r myfolder/ # ফোল্ডার মুছো (recursive) rm -rf myfolder/ # force + recursive (সাবধান! ⚠️) rm -v file.txt # verbose # rmdir — শুধু খালি ফোল্ডার মুছো rmdir emptyfolder/ # খালি থাকলেই মুছবে # ⚠️ বিপজ্জনক কমান্ড — কখনো চালাবে না: # rm -rf / # পুরো system মুছে যাবে! # rm -rf ~ # home directory মুছে যাবে! # rm -rf * # বর্তমান folder-এর সব মুছবে!
⚠️ সতর্কতা: rm দিয়ে মুছলে Recycle Bin যায় না — সরাসরি চলে যায়!
Safe practice: rm -i ব্যবহার করো confirm-এর জন্য, অথবা trash-cli ইনস্টল করো:
sudo apt install trash-clitrash file.txt

🔷 Cleanup কমান্ড

# Disk cleanup sudo apt autoremove # অব্যবহৃত packages সরাও (Ubuntu) sudo apt clean # package cache পরিষ্কার করো npm cache clean --force # npm cache পরিষ্কার pip cache purge # pip cache পরিষ্কার # temp files মুছো rm -rf /tmp/* # temp ফাইল rm -rf ~/.cache/* # user cache # বড় ফাইল খুঁজে বের করো du -sh * # বর্তমান folder-এর সব size du -sh /* 2>/dev/null # root-এর প্রতিটির size du -ah . | sort -rh | head -20 # বড় থেকে ছোট, top 20

মাশাআল্লাহ! 🎉 এই section শেষ করেছেন — অসাধারণ! প্রজেক্টের কোডগুলো দেখে দেখে VS Code-এ নিজে টাইপ করুন — copy-paste করবেন না। কারণ হাতে টাইপ করলেই স্মৃতিতে গেঁথে যায়, মাথায় থাকে, বাস্তব অভিজ্ঞতা হয়, সাহস বাড়ে। শুধু পড়ে বা দেখে কেউ কখনো developer হয়নি। চলুন পড়ি! হাতে কলমে শিখি!

🔐 ফাইল Permission ও chmod

Linux/macOS-এ প্রতিটি ফাইলের permission থাকে — কে পড়তে, লিখতে বা চালাতে পারবে।


🔷 Permission বোঝা

# ls -l দিয়ে permission দেখো ls -l # Output: # -rwxr-xr-- 1 farid dev 4096 Jun 4 2026 script.sh # ↑↑↑↑↑↑↑↑↑ # │└─┤└─┤└─┤ # │ │ │ └── Others: r-- (read only) # │ │ └───── Group: r-x (read + execute) # │ └──────── Owner: rwx (read + write + execute) # └─────────── Type: - (file), d (dir), l (link) # Permission অর্থ: # r = read (পড়তে পারবে) = 4 # w = write (লিখতে পারবে) = 2 # x = execute (চালাতে পারবে) = 1 # - = কোনো permission নেই = 0

chmod — Permission পরিবর্তন

# Symbolic mode chmod u+x script.sh # owner-কে execute permission দাও chmod g-w file.txt # group-এর write permission সরাও chmod o+r file.txt # others-কে read দাও chmod a+x script.sh # সবাইকে execute দাও (a = all) chmod u+x,g+r file.txt # একসাথে # Numeric (Octal) mode — বেশি ব্যবহৃত chmod 755 script.sh # rwxr-xr-x chmod 644 file.txt # rw-r--r-- chmod 600 private.key # rw------- (private key!) chmod 777 public.sh # rwxrwxrwx (সবাইকে সব — বিপজ্জনক!) chmod 000 file.txt # --------- (কেউই পারবে না) # Recursive chmod -R 755 myproject/ # ফোল্ডার ও সব ভেতরের ফাইল # Common permission table: # 777 = rwxrwxrwx (সবাই সব পারে) # 755 = rwxr-xr-x (scripts/executables) # 644 = rw-r--r-- (normal files) # 600 = rw------- (sensitive files, SSH keys) # 400 = r-------- (read-only, backups)

মাশাআল্লাহ! 🎉 এই section শেষ করেছেন — অসাধারণ! প্রজেক্টের কোডগুলো দেখে দেখে VS Code-এ নিজে টাইপ করুন — copy-paste করবেন না। কারণ হাতে টাইপ করলেই স্মৃতিতে গেঁথে যায়, মাথায় থাকে, বাস্তব অভিজ্ঞতা হয়, সাহস বাড়ে। শুধু পড়ে বা দেখে কেউ কখনো developer হয়নি। চলুন পড়ি! হাতে কলমে শিখি!

👤 Ownership ও chown


🔷 chown ও chgrp

# chown — ফাইলের owner পরিবর্তন sudo chown farid file.txt # owner পরিবর্তন sudo chown farid:developers file.txt # owner:group পরিবর্তন sudo chown -R farid myproject/ # recursive sudo chown :developers file.txt # শুধু group পরিবর্তন # chgrp — শুধু group পরিবর্তন sudo chgrp developers file.txt sudo chgrp -R www-data /var/www/html/ # বর্তমান user দেখো whoami id # uid, gid, groups সব দেখো # sudo — superuser permission দিয়ে চালাও sudo apt update # admin permission লাগে sudo systemctl restart nginx sudo -i # root shell (সাবধান!) sudo -u www-data command # অন্য user হিসেবে
Good Practices:
→ SSH private key: chmod 600 ~/.ssh/id_rsa
→ Shell script চালানোর আগে: chmod +x script.sh
→ Web server files: chmod 644 files, chmod 755 directories
sudo শুধু দরকার হলেই ব্যবহার করো

মাশাআল্লাহ! 🎉 এই section শেষ করেছেন — অসাধারণ! প্রজেক্টের কোডগুলো দেখে দেখে VS Code-এ নিজে টাইপ করুন — copy-paste করবেন না। কারণ হাতে টাইপ করলেই স্মৃতিতে গেঁথে যায়, মাথায় থাকে, বাস্তব অভিজ্ঞতা হয়, সাহস বাড়ে। শুধু পড়ে বা দেখে কেউ কখনো developer হয়নি। চলুন পড়ি! হাতে কলমে শিখি!

📝 Terminal Text Editor — nano ও vim


🔷 nano — সহজ Editor (শুরুর জন্য)

# nano খোলো nano file.txt # ফাইল edit করো nano -l file.txt # line number সহ nano +10 file.txt # ১০ নম্বর line থেকে শুরু # nano-তে keyboard shortcut: # Ctrl+S → Save (Write Out) # Ctrl+X → বের হও # Ctrl+K → Line cut করো # Ctrl+U → Paste করো # Ctrl+W → Search করো # Ctrl+G → Help # Ctrl+A → Line-এর শুরুতে যাও # Ctrl+E → Line-এর শেষে যাও # Alt+U → Undo # Alt+E → Redo

🔷 vim — শক্তিশালী Editor (শিখলে অপ্রতিরোধ্য!)

# vim খোলো vim file.txt vi file.txt # পুরনো version # vim-এর ৩টি Mode: # Normal Mode → default, navigate করো # Insert Mode → text লেখো (i চাপলে যাও) # Command Mode → save/quit (:চাপলে যাও) # Normal → Insert: i → cursor-এর আগে insert a → cursor-এর পরে insert (append) o → নিচে নতুন line O → উপরে নতুন line I → line-এর শুরুতে insert A → line-এর শেষে insert # Insert → Normal: # Esc চাপো # Normal Mode navigation: h → বামে l → ডানে j → নিচে k → উপরে 0 → line শুরু $ → line শেষ gg → ফাইল শুরু G → ফাইল শেষ 5G → ৫ নম্বর line w → পরের word b → আগের word /text → text খোঁজো n → পরের result # Normal Mode editing: dd → line মুছো (cut) yy → line copy করো p → paste করো u → undo Ctrl+r → redo x → character মুছো dw → word মুছো D → line-এর শেষ পর্যন্ত মুছো # Command Mode (:): :w → save :q → quit :wq → save ও quit :q! → save ছাড়া quit (force) :wq! → force save ও quit :x → save ও quit (same as :wq) :set nu → line number চালু :10 → ১০ নম্বর line-এ যাও :%s/old/new/g → সব "old" কে "new" দিয়ে replace
vim শেখার টিপস: Terminal-এ vimtutor টাইপ করলে interactive tutorial পাবে!
শুরুতে শুধু মনে রাখো: i = insert, Esc = normal, :wq = save & quit

মাশাআল্লাহ! 🎉 এই section শেষ করেছেন — অসাধারণ! প্রজেক্টের কোডগুলো দেখে দেখে VS Code-এ নিজে টাইপ করুন — copy-paste করবেন না। কারণ হাতে টাইপ করলেই স্মৃতিতে গেঁথে যায়, মাথায় থাকে, বাস্তব অভিজ্ঞতা হয়, সাহস বাড়ে। শুধু পড়ে বা দেখে কেউ কখনো developer হয়নি। চলুন পড়ি! হাতে কলমে শিখি!

⚙️ Text Processing — grep, sed, awk, sort


🔷 sed — Stream Editor (text replace)

# sed — text পরিবর্তন ও processing sed 's/old/new/' file.txt # প্রথম occurrence replace sed 's/old/new/g' file.txt # সব occurrence replace sed 's/old/new/gi' file.txt # case-insensitive sed -i 's/old/new/g' file.txt # ফাইল সরাসরি পরিবর্তন করো sed -i.bak 's/old/new/g' file.txt # backup রেখে পরিবর্তন sed '3d' file.txt # ৩ নম্বর line মুছো sed '3,7d' file.txt # ৩-৭ নম্বর line মুছো sed '/pattern/d' file.txt # pattern ম্যাচ line মুছো sed -n '5,10p' file.txt # ৫-১০ নম্বর line print করো sed 's/^/ /' file.txt # প্রতিটি line-এ indent যোগ sed '/^$/d' file.txt # খালি line মুছো

🔷 awk — Pattern Processing

# awk — column-based text processing awk '{print $1}' file.txt # প্রথম column print করো awk '{print $1, $3}' file.txt # ১ম ও ৩য় column awk -F: '{print $1}' /etc/passwd # : দিয়ে split, ১ম part awk '{print NR": "$0}' file.txt # line number যোগ করো awk 'NR==5' file.txt # ৫ নম্বর line awk 'NR>=5 && NR<=10' file.txt # ৫-১০ নম্বর line awk '/error/{print}' log.txt # "error" আছে এমন line awk '{sum += $1} END {print sum}' f # সংখ্যার যোগফল # CSV processing awk -F',' '{print $2}' data.csv # CSV-এর ২য় column

🔷 sort, uniq, wc — বাকি Text Tools

# sort — Sort করো sort file.txt # alphabetically sort -r file.txt # reverse sort -n file.txt # numerically sort -k2 file.txt # ২য় column অনুযায়ী sort -u file.txt # unique (duplicate সরাও) # uniq — duplicate সামলানো uniq file.txt # consecutive duplicate সরাও uniq -c file.txt # count সহ uniq -d file.txt # শুধু duplicate দেখাও sort file.txt | uniq # সব duplicate সরাও # wc — Word/Line/Character count wc file.txt # lines, words, bytes wc -l file.txt # শুধু line count wc -w file.txt # শুধু word count wc -c file.txt # শুধু byte count ls *.js | wc -l # .js ফাইল কতটি? # cut — নির্দিষ্ট column/character কাটো cut -d: -f1 /etc/passwd # : separator, ১ম field cut -c1-5 file.txt # ১-৫ character cut -f2,3 -d',' data.csv # CSV-এর ২,৩ column # tr — character translate/delete echo "hello" | tr 'a-z' 'A-Z' # uppercase করো echo "hello world" | tr ' ' '_' # space to underscore echo "hello" | tr -d 'l' # 'l' মুছো

মাশাআল্লাহ! 🎉 এই section শেষ করেছেন — অসাধারণ! প্রজেক্টের কোডগুলো দেখে দেখে VS Code-এ নিজে টাইপ করুন — copy-paste করবেন না। কারণ হাতে টাইপ করলেই স্মৃতিতে গেঁথে যায়, মাথায় থাকে, বাস্তব অভিজ্ঞতা হয়, সাহস বাড়ে। শুধু পড়ে বা দেখে কেউ কখনো developer হয়নি। চলুন পড়ি! হাতে কলমে শিখি!

🔀 Pipes ও Redirection

Terminal-এর সবচেয়ে শক্তিশালী feature — কমান্ডের output কে অন্য কমান্ডের input বা ফাইলে পাঠানো।


🔷 Redirection — Output কোথায় যাবে?

# Standard Streams: # stdin (0) → keyboard input # stdout (1) → screen output (সাধারণ output) # stderr (2) → screen error output # Output Redirection echo "Hello" > file.txt # ফাইলে লেখো (overwrite) echo "World" >> file.txt # ফাইলে যোগ করো (append) ls nonexistent 2> error.log # error output ফাইলে command > out.txt 2> err.txt # stdout ও stderr আলাদা command > out.txt 2>&1 # stdout ও stderr একসাথে command &> all.txt # stdout ও stderr একসাথে (shorthand) command > /dev/null # output ফেলে দাও (কোথাও যাবে না) command > /dev/null 2>&1 # সব output ফেলে দাও # Input Redirection mysql -u root -p database < backup.sql # ফাইল থেকে input নাও sort < names.txt # ফাইল থেকে read

🔷 Pipes (|) — Output → Input Chain

# Pipe: বাম কমান্ডের output → ডান কমান্ডের input ls -la | grep ".js" # .js ফাইল খোঁজো ps aux | grep nginx # nginx process খোঁজো cat log.txt | grep error | wc -l # error-এর সংখ্যা গণনা ls | sort | head -10 # sort করে প্রথম ১০টি history | grep "npm install" # command history থেকে খোঁজো cat /etc/passwd | cut -d: -f1 | sort # সব username sort করো du -ah . | sort -rh | head -20 # বড় ফাইল খোঁজো find . -name "*.js" | xargs wc -l # সব .js-এর line count # tee — একসাথে screen ও ফাইলে পাঠাও command | tee output.txt # screen + ফাইল command | tee -a output.txt # screen + append to ফাইল
Pipe দিয়ে শক্তিশালী কমান্ড:
cat access.log | grep "404" | awk '{print $1}' | sort | uniq -c | sort -rn | head -10
→ Log থেকে 404 error-এর সবচেয়ে বেশি hit করা IP top 10 বের করো!

মাশাআল্লাহ! 🎉 এই section শেষ করেছেন — অসাধারণ! প্রজেক্টের কোডগুলো দেখে দেখে VS Code-এ নিজে টাইপ করুন — copy-paste করবেন না। কারণ হাতে টাইপ করলেই স্মৃতিতে গেঁথে যায়, মাথায় থাকে, বাস্তব অভিজ্ঞতা হয়, সাহস বাড়ে। শুধু পড়ে বা দেখে কেউ কখনো developer হয়নি। চলুন পড়ি! হাতে কলমে শিখি!

⚡ Process ম্যানেজমেন্ট


🔷 Process দেখা ও বন্ধ করা

# ps — চলমান process দেখো ps # বর্তমান shell-এর process ps aux # সব process (user, cpu, mem সহ) ps aux | grep node # node process খোঁজো # top — Real-time process monitor top # interactive, q দিয়ে বের হও top -n 1 # একবার দেখিয়ে বের হও # htop — আরো সুন্দর (install করতে হবে) sudo apt install htop htop # kill — Process বন্ধ করো kill PID # Process ID দিয়ে বন্ধ করো kill 1234 # PID 1234 বন্ধ করো kill -9 1234 # force kill (SIGKILL) kill -TERM 1234 # graceful shutdown killall node # নাম দিয়ে সব বন্ধ করো pkill -f "node server.js" # pattern দিয়ে # Process ID খোঁজো pgrep node # node-এর PID pidof nginx # nginx-এর PID # Port কোন process ব্যবহার করছে? sudo lsof -i :3000 # port 3000 sudo ss -tulpn | grep :3000 # আরো দ্রুত sudo netstat -tlpn | grep 3000 # netstat দিয়ে

🔷 Signals — Process-এ signal পাঠাও

Signal Number অর্থ ব্যবহার
SIGTERM 15 Graceful shutdown kill PID
SIGKILL 9 Force kill (block করা যায় না) kill -9 PID
SIGINT 2 Interrupt (keyboard থেকে) Ctrl+C
SIGHUP 1 Reload config kill -1 PID
SIGSTOP 19 Pause process Ctrl+Z
SIGCONT 18 Resume paused process kill -CONT PID

মাশাআল্লাহ! 🎉 এই section শেষ করেছেন — অসাধারণ! প্রজেক্টের কোডগুলো দেখে দেখে VS Code-এ নিজে টাইপ করুন — copy-paste করবেন না। কারণ হাতে টাইপ করলেই স্মৃতিতে গেঁথে যায়, মাথায় থাকে, বাস্তব অভিজ্ঞতা হয়, সাহস বাড়ে। শুধু পড়ে বা দেখে কেউ কখনো developer হয়নি। চলুন পড়ি! হাতে কলমে শিখি!

🔧 Jobs ও Background Tasks


🔷 Background ও Foreground

# Background-এ চালাও (&) node server.js & # background-এ চালাও npm run dev & # dev server background-এ # Ctrl+Z → চলমান process pause করো (SIGSTOP) # তারপর: bg # background-এ continue করো fg # foreground-এ নিয়ে আসো fg %1 # job number 1 foreground-এ # jobs — চলমান background jobs দেখো jobs jobs -l # PID সহ # nohup — Terminal বন্ধ হলেও চালু থাকবে nohup node server.js & # output nohup.out-এ যাবে nohup node server.js > server.log 2>&1 & # disown — job-কে terminal থেকে আলাদা করো node server.js & disown %1 # screen / tmux — Session manager (বেশি শক্তিশালী) # screen screen # নতুন session screen -S mysession # নামসহ session # Ctrl+A D → detach screen -r mysession # ফিরে আসো screen -ls # সব session দেখো # tmux tmux # নতুন session tmux new -s dev # নামসহ # Ctrl+B D → detach tmux attach -t dev # ফিরে আসো tmux ls # সব session

মাশাআল্লাহ! 🎉 এই section শেষ করেছেন — অসাধারণ! প্রজেক্টের কোডগুলো দেখে দেখে VS Code-এ নিজে টাইপ করুন — copy-paste করবেন না। কারণ হাতে টাইপ করলেই স্মৃতিতে গেঁথে যায়, মাথায় থাকে, বাস্তব অভিজ্ঞতা হয়, সাহস বাড়ে। শুধু পড়ে বা দেখে কেউ কখনো developer হয়নি। চলুন পড়ি! হাতে কলমে শিখি!

🌐 Networking কমান্ড


🔷 Network Diagnosis

# ping — Host জীবিত আছে কিনা? ping google.com # চিরকাল চলবে, Ctrl+C তে বন্ধ ping -c 4 google.com # ৪ বার ping -i 2 google.com # ২ সেকেন্ড interval # traceroute — রাস্তা দেখো traceroute google.com tracepath google.com # traceroute বিকল্প # nslookup / dig — DNS lookup nslookup google.com # IP খোঁজো dig google.com # বিস্তারিত DNS dig google.com A # শুধু A record dig @8.8.8.8 google.com # নির্দিষ্ট DNS server ব্যবহার # hostname — host নাম দেখো hostname # machine-এর নাম hostname -I # সব IP address hostname -i # primary IP # ifconfig / ip — Network interface ifconfig # সব interface (পুরনো) ip addr # সব IP address (আধুনিক) ip addr show eth0 # নির্দিষ্ট interface ip route # routing table # ss / netstat — Open connections ss -tulpn # সব listening port ss -t # TCP connections netstat -tulpn # পুরনো পদ্ধতি # ফায়ারওয়াল sudo ufw status # Ubuntu firewall status sudo ufw allow 3000 # port 3000 খোলো sudo ufw deny 3000 # port 3000 বন্ধ করো sudo ufw enable # firewall চালু

মাশাআল্লাহ! 🎉 এই section শেষ করেছেন — অসাধারণ! প্রজেক্টের কোডগুলো দেখে দেখে VS Code-এ নিজে টাইপ করুন — copy-paste করবেন না। কারণ হাতে টাইপ করলেই স্মৃতিতে গেঁথে যায়, মাথায় থাকে, বাস্তব অভিজ্ঞতা হয়, সাহস বাড়ে। শুধু পড়ে বা দেখে কেউ কখনো developer হয়নি। চলুন পড়ি! হাতে কলমে শিখি!

🔑 SSH ও Remote Access

SSH দিয়ে যেকোনো remote server নিরাপদে নিয়ন্ত্রণ করা যায়।


🔷 SSH — Basic থেকে Advanced

# SSH Connect ssh user@hostname # password দিয়ে ssh user@192.168.1.100 # IP দিয়ে ssh -p 2222 user@server.com # custom port # SSH Key তৈরি ও ব্যবহার (Password-less login) # ১. Key তৈরি করো ssh-keygen -t ed25519 -C "my@email.com" # → ~/.ssh/id_ed25519 (private) ও id_ed25519.pub (public) তৈরি হবে # ২. Public key server-এ পাঠাও ssh-copy-id user@server.com # automatic # অথবা manually: cat ~/.ssh/id_ed25519.pub | ssh user@server "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys" # ৩. Key দিয়ে login করো ssh -i ~/.ssh/id_ed25519 user@server.com # SSH Config ফাইল (~/.ssh/config) cat >> ~/.ssh/config << EOF Host myserver HostName 192.168.1.100 User farid Port 22 IdentityFile ~/.ssh/id_ed25519 EOF # এখন শুধু: ssh myserver # ফাইল copy (SCP) scp file.txt user@server:/path/ # local → remote scp user@server:/path/file.txt . # remote → local scp -r myfolder/ user@server:/path/ # ফোল্ডার copy # rsync — দ্রুত sync (বেশি কার্যকর) rsync -avz src/ user@server:/dest/ # sync করো rsync -avz --delete src/ user@server:/dest/ # mirror করো rsync -avz --progress large-file.tar user@server:/backup/ # progress দেখাও # SSH Tunnel (Port Forwarding) ssh -L 8080:localhost:80 user@server # local port 8080 → server port 80 ssh -R 3000:localhost:3000 user@server # remote port 3000 → local 3000

মাশাআল্লাহ! 🎉 এই section শেষ করেছেন — অসাধারণ! প্রজেক্টের কোডগুলো দেখে দেখে VS Code-এ নিজে টাইপ করুন — copy-paste করবেন না। কারণ হাতে টাইপ করলেই স্মৃতিতে গেঁথে যায়, মাথায় থাকে, বাস্তব অভিজ্ঞতা হয়, সাহস বাড়ে। শুধু পড়ে বা দেখে কেউ কখনো developer হয়নি। চলুন পড়ি! হাতে কলমে শিখি!

📡 curl ও wget — HTTP থেকে ফাইল Download


🔷 curl — HTTP Request করো

# Basic GET curl https://api.example.com # response দেখাও curl -s https://api.example.com # silent (progress bar ছাড়া) curl -o output.json https://api.example.com # ফাইলে save # Headers দেখো curl -I https://example.com # শুধু headers curl -v https://example.com # verbose (সব details) # POST request curl -X POST https://api.example.com/users \ -H "Content-Type: application/json" \ -d '{"name":"Farid","email":"farid@example.com"}' # Authentication curl -H "Authorization: Bearer TOKEN" https://api.example.com curl -u username:password https://api.example.com # ফাইল download curl -O https://example.com/file.zip # original নামে save curl -o myfile.zip https://example.com/file.zip # নিজের নামে curl -L https://short.url/file # redirect follow করো curl -C - -O https://example.com/big.zip # resume download # Form data curl -F "file=@photo.jpg" https://api.example.com/upload # Multiple headers curl -H "Accept: application/json" \ -H "X-API-Key: mykey" \ https://api.example.com

🔷 wget — ফাইল Download

# Basic download wget https://example.com/file.zip wget -O myfile.zip https://example.com/file.zip # নিজের নামে # Resume download wget -c https://example.com/bigfile.iso # Recursive download (ওয়েবসাইট mirror) wget -r -np https://example.com/docs/ # Background-এ download wget -b https://example.com/bigfile.iso tail -f wget-log # progress দেখো # Multiple files wget -i urls.txt # urls.txt-এ list করা সব ডাউনলোড

মাশাআল্লাহ! 🎉 এই section শেষ করেছেন — অসাধারণ! প্রজেক্টের কোডগুলো দেখে দেখে VS Code-এ নিজে টাইপ করুন — copy-paste করবেন না। কারণ হাতে টাইপ করলেই স্মৃতিতে গেঁথে যায়, মাথায় থাকে, বাস্তব অভিজ্ঞতা হয়, সাহস বাড়ে। শুধু পড়ে বা দেখে কেউ কখনো developer হয়নি। চলুন পড়ি! হাতে কলমে শিখি!

📊 System তথ্য ও Monitoring


🔷 System Information

# OS তথ্য uname -a # kernel সব তথ্য uname -r # kernel version cat /etc/os-release # OS version বিস্তারিত lsb_release -a # Ubuntu/Debian version # Hardware তথ্য lscpu # CPU তথ্য lsmem # Memory তথ্য lsblk # Storage devices lsusb # USB devices lspci # PCI devices dmidecode -t system # System info (sudo) # CPU ও Memory Real-time top # process+resource monitor htop # উন্নত version vmstat 1 # memory/cpu stats (প্রতি ১ সেকেন্ড) iostat 1 # I/O stats mpstat # CPU usage per core # Memory free -h # RAM ব্যবহার (human-readable) cat /proc/meminfo # বিস্তারিত memory # Uptime uptime # কতক্ষণ চলছে w # logged-in users + uptime # Load average cat /proc/loadavg # 1, 5, 15 min average

মাশাআল্লাহ! 🎉 এই section শেষ করেছেন — অসাধারণ! প্রজেক্টের কোডগুলো দেখে দেখে VS Code-এ নিজে টাইপ করুন — copy-paste করবেন না। কারণ হাতে টাইপ করলেই স্মৃতিতে গেঁথে যায়, মাথায় থাকে, বাস্তব অভিজ্ঞতা হয়, সাহস বাড়ে। শুধু পড়ে বা দেখে কেউ কখনো developer হয়নি। চলুন পড়ি! হাতে কলমে শিখি!

💾 Disk ও Memory ব্যবস্থাপনা


🔷 Disk Usage

# df — Disk space কতটুকু আছে? df -h # সব mounted filesystem df -h /home # নির্দিষ্ট path df -T # filesystem type সহ # du — কোন ফাইল/ফোল্ডার কতটুকু জায়গা নিচ্ছে? du -sh myproject/ # একটি ফোল্ডার du -sh * # সব কিছু du -ah . | sort -rh | head -20 # বড় থেকে ছোট top 20 du -sh ~/.npm # npm cache size du --max-depth=1 -h /var # ১ স্তর গভীর # Disk ব্যবস্থাপনা (Ubuntu) lsblk # সব disk ও partition sudo fdisk -l # disk details df -i # inode usage # Large files খুঁজো find / -type f -size +100M 2>/dev/null | head -20 # Disk I/O monitor iotop # real-time I/O (sudo lাগে) iostat -dx 1 # device-wise stats

মাশাআল্লাহ! 🎉 এই section শেষ করেছেন — অসাধারণ! প্রজেক্টের কোডগুলো দেখে দেখে VS Code-এ নিজে টাইপ করুন — copy-paste করবেন না। কারণ হাতে টাইপ করলেই স্মৃতিতে গেঁথে যায়, মাথায় থাকে, বাস্তব অভিজ্ঞতা হয়, সাহস বাড়ে। শুধু পড়ে বা দেখে কেউ কখনো developer হয়নি। চলুন পড়ি! হাতে কলমে শিখি!

👥 User ও Group ম্যানেজমেন্ট


🔷 User Management

# User তথ্য দেখো whoami # বর্তমান user id # uid, gid, groups who # logged-in users last # login history finger farid # user info # User তৈরি ও পরিবর্তন sudo useradd -m -s /bin/bash farid # user তৈরি sudo useradd -m -G sudo farid # sudo group-সহ sudo passwd farid # password set করো sudo usermod -aG sudo farid # sudo group-এ যোগ করো sudo usermod -aG docker farid # docker group-এ যোগ sudo userdel farid # user মুছো sudo userdel -r farid # home dir সহ মুছো # Group management groups # বর্তমান user-এর groups groups farid # নির্দিষ্ট user-এর groups cat /etc/group # সব groups sudo groupadd developers # group তৈরি sudo groupdel developers # group মুছো # User switch করো su farid # farid হিসেবে login su - # root হিসেবে login sudo -i # root shell sudo -u www-data bash # www-data user হিসেবে

মাশাআল্লাহ! 🎉 এই section শেষ করেছেন — অসাধারণ! প্রজেক্টের কোডগুলো দেখে দেখে VS Code-এ নিজে টাইপ করুন — copy-paste করবেন না। কারণ হাতে টাইপ করলেই স্মৃতিতে গেঁথে যায়, মাথায় থাকে, বাস্তব অভিজ্ঞতা হয়, সাহস বাড়ে। শুধু পড়ে বা দেখে কেউ কখনো developer হয়নি। চলুন পড়ি! হাতে কলমে শিখি!

🌍 Environment Variables


🔷 Environment Variables ব্যবহার

# সব env variable দেখো env printenv env | grep PATH # PATH দেখো # নির্দিষ্ট variable দেখো echo $HOME echo $PATH echo $USER echo $SHELL echo $PWD # বর্তমান directory echo $OLDPWD # আগের directory # Variable set করো (শুধু বর্তমান session) export MY_VAR="hello" export API_KEY="secret123" echo $MY_VAR # hello # Variable সরাও unset MY_VAR # PATH-এ নতুন directory যোগ করো export PATH="$PATH:/usr/local/myapp/bin" # Permanent করতে — .bashrc বা .zshrc-এ যোগ করো echo 'export MY_VAR="hello"' >> ~/.bashrc source ~/.bashrc # reload করো # .env ফাইল ব্যবহার (Node.js projects) cat .env # NODE_ENV=development # PORT=3000 # DB_URL=mongodb://localhost:27017 # .env load করো (bash-এ) export $(grep -v '^#' .env | xargs) # Common Environment Variables: # PATH → executable খোঁজার ডিরেক্টরি list # HOME → home directory # USER → বর্তমান username # SHELL → বর্তমান shell # EDITOR → default text editor # LANG → system language # TZ → timezone (TZ=Asia/Dhaka)
Variable অর্থ উদাহরণ
$HOME Home directory /home/farid
$PATH Executable খোঁজার path list /usr/bin:/usr/local/bin
$USER বর্তমান username farid
$SHELL বর্তমান shell /bin/bash
$PWD বর্তমান ডিরেক্টরি /home/farid/projects
$EDITOR Default editor vim বা nano
$TZ Timezone Asia/Dhaka
$LANG Language setting en_US.UTF-8

মাশাআল্লাহ! 🎉 এই section শেষ করেছেন — অসাধারণ! প্রজেক্টের কোডগুলো দেখে দেখে VS Code-এ নিজে টাইপ করুন — copy-paste করবেন না। কারণ হাতে টাইপ করলেই স্মৃতিতে গেঁথে যায়, মাথায় থাকে, বাস্তব অভিজ্ঞতা হয়, সাহস বাড়ে। শুধু পড়ে বা দেখে কেউ কখনো developer হয়নি। চলুন পড়ি! হাতে কলমে শিখি!

📜 Bash Scripting — Automation-এর শক্তি

Bash Script হলো কমান্ডের একটি ফাইল — একবার লেখো, বারবার চালাও। Automation, deployment, backup — সব কিছুতেই কাজে লাগে।


🔷 প্রথম Bash Script

#!/bin/bash # ↑ Shebang — কোন interpreter দিয়ে চালাবে # এটি একটি comment echo "Hello, World!" echo "আজকের তারিখ: $(date)" echo "তুমি: $(whoami)" echo "তুমি আছো: $(pwd)"
# Script চালানো: # Step 1: ফাইল তৈরি করো nano hello.sh # Step 2: executable করো chmod +x hello.sh # Step 3: চালাও ./hello.sh # বর্তমান ডিরেক্টরি থেকে bash hello.sh # bash দিয়ে সরাসরি

Shebang Line-এর বিকল্প

#!/bin/bash # Bash (সবচেয়ে প্রচলিত) #!/bin/sh # POSIX sh (portable) #!/usr/bin/env bash # PATH থেকে bash খোঁজো (best practice) #!/usr/bin/env python3 # Python script-ও Shebang ব্যবহার করে

মাশাআল্লাহ! 🎉 এই section শেষ করেছেন — অসাধারণ! প্রজেক্টের কোডগুলো দেখে দেখে VS Code-এ নিজে টাইপ করুন — copy-paste করবেন না। কারণ হাতে টাইপ করলেই স্মৃতিতে গেঁথে যায়, মাথায় থাকে, বাস্তব অভিজ্ঞতা হয়, সাহস বাড়ে। শুধু পড়ে বা দেখে কেউ কখনো developer হয়নি। চলুন পড়ি! হাতে কলমে শিখি!

📦 Bash Variables ও Data Types


🔷 Variables

#!/usr/bin/env bash # Variable assign (= দুই পাশে space নেই!) name="Farid" age=25 pi=3.14159 # ব্যবহার echo "নাম: $name" echo "বয়স: ${age}" # Curly braces (recommended) # String operations greeting="Hello" full="$greeting, $name!" # Concatenation echo $full # Hello, Farid! echo ${#name} # String length: 5 echo ${name^^} # Uppercase: FARID echo ${name,,} # Lowercase: farid echo ${name:0:3} # Substring: Far (index 0, length 3) echo ${name/Farid/Rahim} # Replace: Rahim # Readonly variable readonly MAX_SIZE=100 # MAX_SIZE=200 ← এটি error দেবে # Command output variable-এ রাখো current_date=$(date +%Y-%m-%d) file_count=$(ls -1 *.txt 2>/dev/null | wc -l) node_version=$(node --version) echo "আজ: $current_date" echo "txt ফাইল: $file_count টি" # Default value username=${USER:-"unknown"} # USER না থাকলে "unknown" port=${PORT:-3000} # PORT না থাকলে 3000 # Integer arithmetic num1=10 num2=3 echo $((num1 + num2)) # 13 echo $((num1 - num2)) # 7 echo $((num1 * num2)) # 30 echo $((num1 / num2)) # 3 (integer) echo $((num1 % num2)) # 1 (remainder) echo $((num1 ** num2)) # 1000 (power)

মাশাআল্লাহ! 🎉 এই section শেষ করেছেন — অসাধারণ! প্রজেক্টের কোডগুলো দেখে দেখে VS Code-এ নিজে টাইপ করুন — copy-paste করবেন না। কারণ হাতে টাইপ করলেই স্মৃতিতে গেঁথে যায়, মাথায় থাকে, বাস্তব অভিজ্ঞতা হয়, সাহস বাড়ে। শুধু পড়ে বা দেখে কেউ কখনো developer হয়নি। চলুন পড়ি! হাতে কলমে শিখি!

🔀 Conditions ও if-else


🔷 if-elif-else

#!/usr/bin/env bash # Basic if age=20 if [ $age -ge 18 ]; then echo "প্রাপ্তবয়স্ক" fi # if-else if [ $age -ge 18 ]; then echo "প্রাপ্তবয়স্ক" else echo "নাবালক" fi # if-elif-else score=75 if [ $score -ge 90 ]; then echo "A+" elif [ $score -ge 80 ]; then echo "A" elif [ $score -ge 70 ]; then echo "B" else echo "C বা নিচে" fi # String comparison name="Farid" if [ "$name" = "Farid" ]; then # = বা == echo "হ্যাঁ, Farid" fi if [ -z "$name" ]; then # empty string? echo "নাম খালি" fi if [ -n "$name" ]; then # non-empty? echo "নাম আছে: $name" fi

Test Operators

Operator অর্থ উদাহরণ
-eq Equal (সংখ্যা) [ $a -eq $b ]
-ne Not Equal [ $a -ne $b ]
-gt Greater Than [ $a -gt $b ]
-lt Less Than [ $a -lt $b ]
-ge Greater or Equal [ $a -ge $b ]
-le Less or Equal [ $a -le $b ]
= String Equal [ "$a" = "$b" ]
!= String Not Equal [ "$a" != "$b" ]
-z Empty String [ -z "$str" ]
-n Non-empty String [ -n "$str" ]
-f ফাইল আছে? [ -f file.txt ]
-d Directory আছে? [ -d myfolder ]
-e ফাইল/dir আছে? [ -e path ]
-r Readable? [ -r file ]
-x Executable? [ -x script.sh ]
! NOT [ ! -f file ]
&& AND [ cond1 ] && [ cond2 ]
|| OR [ cond1 ] || [ cond2 ]
# case — switch-এর মতো day="Monday" case $day in "Monday"|"Tuesday"|"Wednesday"|"Thursday"|"Friday") echo "কাজের দিন" ;; "Saturday"|"Sunday") echo "ছুটির দিন" ;; *) echo "অজানা দিন" ;; esac

মাশাআল্লাহ! 🎉 এই section শেষ করেছেন — অসাধারণ! প্রজেক্টের কোডগুলো দেখে দেখে VS Code-এ নিজে টাইপ করুন — copy-paste করবেন না। কারণ হাতে টাইপ করলেই স্মৃতিতে গেঁথে যায়, মাথায় থাকে, বাস্তব অভিজ্ঞতা হয়, সাহস বাড়ে। শুধু পড়ে বা দেখে কেউ কখনো developer হয়নি। চলুন পড়ি! হাতে কলমে শিখি!

🔄 Loops — for, while, until


🔷 for loop

#!/usr/bin/env bash # Basic for loop for i in 1 2 3 4 5; do echo "সংখ্যা: $i" done # Range দিয়ে for i in {1..10}; do echo "সংখ্যা: $i" done # Step দিয়ে for i in {0..100..10}; do echo "$i" # 0, 10, 20, ..., 100 done # C-style for loop for ((i=0; i<5; i++)); do echo "i = $i" done # Array-এর উপর loop fruits=("apple" "banana" "mango" ) for fruit in "${fruits[@]}" ; do echo "ফল: $fruit" done # ফাইলের উপর loop for file in *.txt; do echo "Processing: $file" wc -l "$file" done # Command output-এর উপর loop for user in $(cat /etc/passwd | cut -d: -f1); do echo "User: $user" done

🔷 while ও until loop

# while loop count=1 while [ $count -le 5 ]; do echo "Count: $count" ((count++)) done # Infinite loop (Ctrl+C দিয়ে বন্ধ করো) while true; do echo "$(date): Server চেক করছি..." sleep 5 done # ফাইল line by line পড়ো while IFS= read -r line; do echo "Line: $line" done < file.txt # until — condition false হলে চলে x=10 until [ $x -le 0 ]; do echo "x = $x" ((x--)) done # Loop control for i in {1..10}; do if [ $i -eq 5 ]; then continue # 5 skip করো fi if [ $i -eq 8 ]; then break # 8-এ বন্ধ করো fi echo $i done # Output: 1 2 3 4 6 7

মাশাআল্লাহ! 🎉 এই section শেষ করেছেন — অসাধারণ! প্রজেক্টের কোডগুলো দেখে দেখে VS Code-এ নিজে টাইপ করুন — copy-paste করবেন না। কারণ হাতে টাইপ করলেই স্মৃতিতে গেঁথে যায়, মাথায় থাকে, বাস্তব অভিজ্ঞতা হয়, সাহস বাড়ে। শুধু পড়ে বা দেখে কেউ কখনো developer হয়নি। চলুন পড়ি! হাতে কলমে শিখি!

🔧 Bash Functions


🔷 Function লেখা ও ডাকা

#!/usr/bin/env bash # Function সংজ্ঞায়িত করো greet() { echo "হ্যালো, $1!" # $1 = প্রথম argument } # Function call করো greet "Farid" # হ্যালো, Farid! greet "Rahim" # হ্যালো, Rahim! # Multiple arguments add() { local result=$(( $1 + $2 )) # local = function-এর ভেতরেই সীমাবদ্ধ echo $result } sum=$(add 10 20) echo "যোগফল: $sum" # যোগফল: 30 # Return value (exit code) is_file() { if [ -f "$1" ]; then return 0 # success (true) else return 1 # failure (false) fi } if is_file "config.txt"; then echo "ফাইল আছে!" else echo "ফাইল নেই!" fi # Practical function — Deployment script deploy() { local env=${1:-"staging"} echo "🚀 Deploying to $env..." git pull origin main npm ci npm run build if [ "$env" = "production" ]; then npm run test echo "✅ Tests passed!" fi echo "✅ Deploy complete!" } deploy "production"

মাশাআল্লাহ! 🎉 এই section শেষ করেছেন — অসাধারণ! প্রজেক্টের কোডগুলো দেখে দেখে VS Code-এ নিজে টাইপ করুন — copy-paste করবেন না। কারণ হাতে টাইপ করলেই স্মৃতিতে গেঁথে যায়, মাথায় থাকে, বাস্তব অভিজ্ঞতা হয়, সাহস বাড়ে। শুধু পড়ে বা দেখে কেউ কখনো developer হয়নি। চলুন পড়ি! হাতে কলমে শিখি!

📋 Bash Arrays


🔷 Array তৈরি ও ব্যবহার

#!/usr/bin/env bash # Array তৈরি fruits=("apple" "banana" "mango" "jackfruit") numbers=(1 2 3 4 5) # Element access echo ${fruits[0]} # apple (index 0) echo ${fruits[2]} # mango echo ${fruits[-1]} # jackfruit (শেষটা) # সব element echo ${fruits[@]} # সব echo ${fruits[*]} # সব (same) # Array length echo ${#fruits[@]} # 4 # Slice echo ${fruits[@]:1:2} # banana mango (index 1 থেকে 2টি) # Element যোগ করো fruits+=("litchi") # শেষে যোগ fruits[10]="pineapple" # নির্দিষ্ট index-এ # Element মুছো unset fruits[1] # banana মুছো # Loop করো for fruit in "${fruits[@]}"; do echo "ফল: $fruit" done # Index সহ loop for i in "${!fruits[@]}"; do echo "$i: ${fruits[$i]}" done # Associative Array (Dictionary/Map) — Bash 4+ declare -A capitals capitals["Bangladesh"]="Dhaka" capitals["India"]="Delhi" capitals["Japan"]="Tokyo" echo ${capitals["Bangladesh"]} # Dhaka echo ${!capitals[@]} # সব key echo ${capitals[@]} # সব value

মাশাআল্লাহ! 🎉 এই section শেষ করেছেন — অসাধারণ! প্রজেক্টের কোডগুলো দেখে দেখে VS Code-এ নিজে টাইপ করুন — copy-paste করবেন না। কারণ হাতে টাইপ করলেই স্মৃতিতে গেঁথে যায়, মাথায় থাকে, বাস্তব অভিজ্ঞতা হয়, সাহস বাড়ে। শুধু পড়ে বা দেখে কেউ কখনো developer হয়নি। চলুন পড়ি! হাতে কলমে শিখি!

⌨️ User Input ও Script Arguments


🔷 read — User Input নেওয়া

#!/usr/bin/env bash # Basic input echo "তোমার নাম কী?" read name echo "হ্যালো, $name!" # Prompt সহ read -p "নাম লেখো: " name read -p "বয়স লেখো: " age # Password (characters দেখাবে না) read -s -p "Password: " password echo "" # নতুন line # Timeout read -t 10 -p "১০ সেকেন্ডে লেখো: " response # Default value read -p "Server [localhost]: " server server=${server:-localhost} # Array হিসেবে read read -a colors -p "রং লেখো (space দিয়ে আলাদা): " echo "প্রথম রং: ${colors[0]}"

🔷 Script Arguments ($1, $2, ...)

#!/usr/bin/env bash # ./script.sh arg1 arg2 arg3 দিয়ে চালাও echo "Script নাম: $0" echo "১ম argument: $1" echo "২য় argument: $2" echo "সব arguments: $@" echo "Argument সংখ্যা: $#" # উদাহরণ: backup script # ./backup.sh /home/farid /backup source_dir=$1 dest_dir=$2 if [ -z "$source_dir" ] || [ -z "$dest_dir" ]; then echo "Usage: $0 " exit 1 fi rsync -avz "$source_dir" "$dest_dir" echo "✅ Backup complete!" # Shift — argument সরানো while [ $# -gt 0 ]; do echo "Processing: $1" shift # $2 → $1, $3 → $2 ... done # getopts — flag-style arguments while getopts ":f:o:v" opt; do case $opt in f) file="$OPTARG" ;; # -f filename o) output="$OPTARG" ;; # -o output v) verbose=true ;; # -v ?) echo "Unknown option: $OPTARG"; exit 1 ;; esac done

মাশাআল্লাহ! 🎉 এই section শেষ করেছেন — অসাধারণ! প্রজেক্টের কোডগুলো দেখে দেখে VS Code-এ নিজে টাইপ করুন — copy-paste করবেন না। কারণ হাতে টাইপ করলেই স্মৃতিতে গেঁথে যায়, মাথায় থাকে, বাস্তব অভিজ্ঞতা হয়, সাহস বাড়ে। শুধু পড়ে বা দেখে কেউ কখনো developer হয়নি। চলুন পড়ি! হাতে কলমে শিখি!

📂 Script-এ File Operations


🔷 ফাইল check ও লেখা

#!/usr/bin/env bash # ফাইল আছে কিনা check if [ -f "config.env" ]; then source config.env # ফাইল load করো else echo "config.env নেই, তৈরি করছি..." cat > config.env << EOF DB_HOST=localhost DB_PORT=5432 DB_NAME=myapp EOF fi # Directory তৈরি (না থাকলে) mkdir -p logs mkdir -p backup/$(date +%Y/%m/%d) # তারিখ অনুযায়ী folder # ফাইলে লেখা echo "$(date): Script শুরু হলো" >> logs/app.log # ফাইল পড়া while IFS=',' read -r name email; do echo "Name: $name, Email: $email" done < users.csv # Temp ফাইল tmpfile=$(mktemp) # unique temp ফাইল তৈরি echo "temp data" > $tmpfile # ... কাজ করো ... rm $tmpfile # শেষে মুছো # trap — script বন্ধ হলে cleanup করো cleanup() { rm -f $tmpfile echo "Cleanup done." } trap cleanup EXIT # যেকোনোভাবে বন্ধ হলে চলবে trap cleanup INT TERM # Ctrl+C বা kill-এ # ফাইল lock (একসাথে দুটো instance চলা বন্ধ) LOCKFILE="/tmp/myscript.lock" if [ -f "$LOCKFILE" ]; then echo "Script ইতিমধ্যে চলছে!" exit 1 fi touch $LOCKFILE trap "rm -f $LOCKFILE" EXIT

মাশাআল্লাহ! 🎉 এই section শেষ করেছেন — অসাধারণ! প্রজেক্টের কোডগুলো দেখে দেখে VS Code-এ নিজে টাইপ করুন — copy-paste করবেন না। কারণ হাতে টাইপ করলেই স্মৃতিতে গেঁথে যায়, মাথায় থাকে, বাস্তব অভিজ্ঞতা হয়, সাহস বাড়ে। শুধু পড়ে বা দেখে কেউ কখনো developer হয়নি। চলুন পড়ি! হাতে কলমে শিখি!

⚠️ Error Handling ও Exit Codes


🔷 Exit Codes ও Error Handling

#!/usr/bin/env bash # Exit codes: # 0 → Success # 1 → General error # 2 → Misuse of shell command # 126 → Permission denied # 127 → Command not found # 130 → Ctrl+C দিয়ে বন্ধ # আগের কমান্ডের exit code ls /tmp echo "Exit code: $?" # 0 = success ls /nonexistent echo "Exit code: $?" # 2 = error # Error হলে বন্ধ করো (best practice) set -e # যেকোনো error-এ script বন্ধ করো set -u # undefined variable = error set -o pipefail # pipe-এর যেকোনো failure = error # সব একসাথে: set -euo pipefail # Error message ও exit error_exit() { echo "❌ Error: $1" >&2 # stderr-এ exit 1 } # Command সফল হয়েছে কিনা check git pull origin main || error_exit "Git pull failed!" npm ci || error_exit "npm install failed!" npm run build || error_exit "Build failed!" echo "✅ সব ঠিকঠাক!" # Conditional execution mkdir mydir && echo "Directory তৈরি হলো" mkdir mydir || echo "Directory ইতিমধ্যে আছে" # Error দমন করো (কখনো কখনো দরকার হয়) rm file.txt 2>/dev/null || true # error হলেও চলো

মাশাআল্লাহ! 🎉 এই section শেষ করেছেন — অসাধারণ! প্রজেক্টের কোডগুলো দেখে দেখে VS Code-এ নিজে টাইপ করুন — copy-paste করবেন না। কারণ হাতে টাইপ করলেই স্মৃতিতে গেঁথে যায়, মাথায় থাকে, বাস্তব অভিজ্ঞতা হয়, সাহস বাড়ে। শুধু পড়ে বা দেখে কেউ কখনো developer হয়নি। চলুন পড়ি! হাতে কলমে শিখি!

🚀 Advanced Bash — Regex, Here-doc, Process Substitution


🔷 Here-document ও Here-string

#!/usr/bin/env bash # Here-doc — Multi-line content cat << EOF এটি একটি multi-line text EOF # Here-doc ফাইলে লেখো cat > config.yaml << EOF server: host: localhost port: 3000 database: url: postgresql://localhost/mydb EOF # Variable expansion হয় name="Farid" cat << EOF হ্যালো, $name! তারিখ: $(date) EOF # Expansion বন্ধ করো ('EOF' quote করো) cat << 'EOF' $name এবং $(date) expand হবে না EOF # Here-string grep "error" <<< "This is an error message" echo "Hello" | tr <<< "hello" 'a-z' 'A-Z'

🔷 Process Substitution ও Command Grouping

# Process Substitution diff <(ls dir1/) <(ls dir2/) # দুই ফোল্ডারের পার্থক্য comm <(sort file1) <(sort file2) # common lines # Command Grouping { echo "line 1"; echo "line 2"; } > out.txt # একসাথে redirect ( cd /tmp && ls ) # subshell-এ # Brace Expansion echo {a,b,c}.txt # a.txt b.txt c.txt mkdir -p project/{src,dist,test}/{components,utils} cp file.txt{,.bak} # file.txt কে file.txt.bak-এ copy # String manipulation path="/home/farid/projects/myapp/src/index.js" echo ${path##*/} # index.js (filename) echo ${path%/*} # /home/farid/projects/myapp/src (dirname) echo ${path%.js} # extension ছাড়া echo ${path##*.} # js (extension মাত্র) # Regular Expression — [[ ]] দিয়ে email="farid@example.com" if [[ $email =~ ^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$ ]]; then echo "Valid email" fi # Arithmetic with bc (floating point) result=$(echo "scale=2; 10 / 3" | bc) echo "10 ÷ 3 = $result" # 3.33

মাশাআল্লাহ! 🎉 এই section শেষ করেছেন — অসাধারণ! প্রজেক্টের কোডগুলো দেখে দেখে VS Code-এ নিজে টাইপ করুন — copy-paste করবেন না। কারণ হাতে টাইপ করলেই স্মৃতিতে গেঁথে যায়, মাথায় থাকে, বাস্তব অভিজ্ঞতা হয়, সাহস বাড়ে। শুধু পড়ে বা দেখে কেউ কখনো developer হয়নি। চলুন পড়ি! হাতে কলমে শিখি!

⚡ Zsh — Z Shell পরিচিতি ও Oh My Zsh

Zsh হলো Bash-এর উন্নত বিকল্প। macOS Catalina থেকে default shell। Oh My Zsh দিয়ে Zsh-কে শক্তিশালী করা যায়।


🔷 Zsh Install ও Oh My Zsh

# Zsh ইনস্টল করো sudo apt install zsh # Ubuntu/Debian brew install zsh # macOS (ইতিমধ্যে আছে) # Zsh default করো chsh -s $(which zsh) # Oh My Zsh ইনস্টল করো sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" # ইনস্টল হলে ~/.zshrc তৈরি হবে # Zsh version দেখো zsh --version

🔷 Zsh-এর বিশেষ সুবিধা

# Smart Auto-complete ls /usr/l[Tab] # /usr/local/ সরাসরি complete করবে git ch[Tab] # checkout, cherry-pick... options দেখাবে # Spelling correction sl # Bash: command not found # Zsh: "ls" বলতে চাইছিলে? # Glob patterns (Bash-এর চেয়ে শক্তিশালী) ls **/*.js # recursive glob (সব .js) ls *(.) # শুধু regular files ls *(/) # শুধু directories ls *(-@) # শুধু symbolic links rm **/*.log # সব subfolder-এর .log মুছো # Path expansion cd /u/l/b[Tab] # /usr/local/bin expand হবে # History !! # আগের কমান্ড repeat করো !$ # আগের কমান্ডের শেষ argument !git # সর্বশেষ git কমান্ড repeat ^old^new # আগের কমান্ডে old → new replace করো

মাশাআল্লাহ! 🎉 এই section শেষ করেছেন — অসাধারণ! প্রজেক্টের কোডগুলো দেখে দেখে VS Code-এ নিজে টাইপ করুন — copy-paste করবেন না। কারণ হাতে টাইপ করলেই স্মৃতিতে গেঁথে যায়, মাথায় থাকে, বাস্তব অভিজ্ঞতা হয়, সাহস বাড়ে। শুধু পড়ে বা দেখে কেউ কখনো developer হয়নি। চলুন পড়ি! হাতে কলমে শিখি!

⚙️ Zsh Config ও .zshrc


🔷 .zshrc ফাইল কাস্টমাইজ করা

# ~/.zshrc খোলো nano ~/.zshrc # Oh My Zsh Theme পরিবর্তন ZSH_THEME="robbyrussell" # default ZSH_THEME="agnoster" # git branch দেখায় ZSH_THEME="powerlevel10k/powerlevel10k" # সবচেয়ে জনপ্রিয় # Plugins যোগ করো plugins=( git # git shortcuts node # node shortcuts npm # npm shortcuts z # smart cd (directory jump) zsh-autosuggestions # auto-suggest zsh-syntax-highlighting # syntax highlight ) # Alias যোগ করো alias ll="ls -la" alias la="ls -A" alias ..="cd .." alias ...="cd ../.." alias gs="git status" alias gc="git commit -m" alias gp="git push" alias gl="git pull" alias ni="npm install" alias nr="npm run" alias ns="npm start" # Path যোগ করো export PATH="$HOME/.local/bin:$PATH" export PATH="/usr/local/go/bin:$PATH" # Functions mkcd() { mkdir -p "$1" && cd "$1" } # ব্যবহার: mkcd myproject (ফোল্ডার তৈরি করে সেখানে যাবে) # .zshrc reload করো source ~/.zshrc

মাশাআল্লাহ! 🎉 এই section শেষ করেছেন — অসাধারণ! প্রজেক্টের কোডগুলো দেখে দেখে VS Code-এ নিজে টাইপ করুন — copy-paste করবেন না। কারণ হাতে টাইপ করলেই স্মৃতিতে গেঁথে যায়, মাথায় থাকে, বাস্তব অভিজ্ঞতা হয়, সাহস বাড়ে। শুধু পড়ে বা দেখে কেউ কখনো developer হয়নি। চলুন পড়ি! হাতে কলমে শিখি!

🔌 Zsh Plugins ও Themes


🔷 Essential Plugins ইনস্টল করা

# zsh-autosuggestions — আগে টাইপ করা command suggest করে git clone https://github.com/zsh-users/zsh-autosuggestions \ ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions # zsh-syntax-highlighting — সঠিক command সবুজ, ভুল লাল git clone https://github.com/zsh-users/zsh-syntax-highlighting \ ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting # z — smart directory jumping # (Oh My Zsh-এ built-in আছে, শুধু plugins-এ যোগ করো) z myproject # ~/projects/myproject-এ যাবে (আগে cd করেছিলে) z src # যেকোনো src folder # fzf — fuzzy finder (Terminal search) sudo apt install fzf brew install fzf # Ctrl+R → history fuzzy search # Ctrl+T → ফাইল fuzzy search # Powerlevel10k theme git clone --depth=1 https://github.com/romkatv/powerlevel10k.git \ ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k # .zshrc-এ: ZSH_THEME="powerlevel10k/powerlevel10k" # Setup wizard চালাও p10k configure
Plugin কাজ Shortcut
git Git aliases gst=status, gco=checkout
z Smart cd z project
fzf Fuzzy search Ctrl+R, Ctrl+T
sudo Esc+Esc=sudo Esc Esc
web-search Browser search google "query"
extract Any archive extract extract file.tar.gz

মাশাআল্লাহ! 🎉 এই section শেষ করেছেন — অসাধারণ! প্রজেক্টের কোডগুলো দেখে দেখে VS Code-এ নিজে টাইপ করুন — copy-paste করবেন না। কারণ হাতে টাইপ করলেই স্মৃতিতে গেঁথে যায়, মাথায় থাকে, বাস্তব অভিজ্ঞতা হয়, সাহস বাড়ে। শুধু পড়ে বা দেখে কেউ কখনো developer হয়নি। চলুন পড়ি! হাতে কলমে শিখি!

💙 PowerShell — Windows-এর শক্তিশালী Shell

PowerShell হলো Microsoft-এর object-based shell। Bash-এর মতো text নয়, .NET object ব্যবহার করে — তাই আরো শক্তিশালী।


🔷 PowerShell পরিচিতি ও Install

# Windows-এ ইতিমধ্যে PowerShell আছে # PowerShell 7 (Cross-platform) ইনস্টল করো: winget install --id Microsoft.PowerShell # macOS/Linux-এ: brew install powershell # macOS sudo apt install powershell # Ubuntu # Version দেখো $PSVersionTable # PowerShell খোলো pwsh # PowerShell 7 powershell # Windows PowerShell 5

🔷 PowerShell কীভাবে আলাদা?

# Bash: text-based output ls # drwxr-xr-x 2 farid farid 4096 Jun 4 file.txt # PowerShell: object-based output Get-ChildItem # Mode LastWriteTime Length Name # ---- ------------- ------ ---- # -a-- 06/04/2026 1024 file.txt # Object-এর property access করো $files = Get-ChildItem *.txt $files[0].Name # file.txt $files[0].Length # 1024 $files[0].LastWriteTime # datetime object # Filter (Where-Object) Get-ChildItem | Where-Object { $_.Length -gt 1000 } # Select নির্দিষ্ট property Get-ChildItem | Select-Object Name, Length # Sort Get-ChildItem | Sort-Object Length -Descending

মাশাআল্লাহ! 🎉 এই section শেষ করেছেন — অসাধারণ! প্রজেক্টের কোডগুলো দেখে দেখে VS Code-এ নিজে টাইপ করুন — copy-paste করবেন না। কারণ হাতে টাইপ করলেই স্মৃতিতে গেঁথে যায়, মাথায় থাকে, বাস্তব অভিজ্ঞতা হয়, সাহস বাড়ে। শুধু পড়ে বা দেখে কেউ কখনো developer হয়নি। চলুন পড়ি! হাতে কলমে শিখি!

📋 PowerShell কমান্ড সমূহ


🔷 Cmdlets (PowerShell কমান্ড)

# Navigation Get-Location # pwd Set-Location C:\Users\Farid # cd Set-Location .. # cd .. Push-Location C:\temp # bookmark করে cd Pop-Location # আগের জায়গায় ফিরে যাও # ফাইল ব্যবস্থাপনা Get-ChildItem # ls -la Get-ChildItem -Force # hidden ফাইলও Get-ChildItem -Recurse *.js # recursive New-Item file.txt # touch New-Item -ItemType Directory src # mkdir Copy-Item src dest # cp Move-Item old.txt new.txt # mv Remove-Item file.txt # rm Remove-Item -Recurse myfolder # rm -rf # ফাইল পড়া Get-Content file.txt # cat Get-Content file.txt -Head 10 # head Get-Content file.txt -Tail 20 # tail Get-Content file.txt -Wait # tail -f # Text খোঁজা Select-String "error" log.txt # grep Select-String -Pattern "error|warning" -Path "*.log" # Process Get-Process # ps Get-Process node # নির্দিষ্ট process Stop-Process -Name node # kill process Stop-Process -Id 1234 # PID দিয়ে kill # Network Test-NetConnection google.com # ping Test-NetConnection -Port 443 google.com # port check Resolve-DnsName google.com # nslookup Get-NetIPAddress # ip addr
Bash/Linux PowerShell Cmdlet Alias
pwd Get-Location gl
cd Set-Location sl, cd
ls Get-ChildItem gci, ls, dir
cat Get-Content gc, cat
cp Copy-Item ci, copy
mv Move-Item mi, move
rm Remove-Item ri, del, rm
mkdir New-Item -ItemType Directory md, mkdir
grep Select-String sls
ps Get-Process gps, ps
kill Stop-Process spps, kill
echo Write-Host echo
clear Clear-Host cls, clear
history Get-History h, history

মাশাআল্লাহ! 🎉 এই section শেষ করেছেন — অসাধারণ! প্রজেক্টের কোডগুলো দেখে দেখে VS Code-এ নিজে টাইপ করুন — copy-paste করবেন না। কারণ হাতে টাইপ করলেই স্মৃতিতে গেঁথে যায়, মাথায় থাকে, বাস্তব অভিজ্ঞতা হয়, সাহস বাড়ে। শুধু পড়ে বা দেখে কেউ কখনো developer হয়নি। চলুন পড়ি! হাতে কলমে শিখি!

📜 PowerShell Scripting


🔷 PowerShell Script (.ps1) লেখা

# Variables $name = "Farid" $age = 25 $isActive = $true $pi = 3.14 # String Write-Host "হ্যালো, $name!" Write-Host "বয়স: $($age + 1) হবে" # expression # if-else if ($age -ge 18) { Write-Host "প্রাপ্তবয়স্ক" } elseif ($age -ge 13) { Write-Host "কিশোর" } else { Write-Host "শিশু" } # foreach loop $fruits = @("Apple", "Banana", "Mango") foreach ($fruit in $fruits) { Write-Host "ফল: $fruit" } # for loop for ($i = 0; $i -lt 5; $i++) { Write-Host "i = $i" } # while loop $count = 0 while ($count -lt 3) { Write-Host "Count: $count" $count++ } # Function function Greet { param ( [string]$Name, [int]$Times = 1 ) for ($i = 0; $i -lt $Times; $i++) { Write-Host "হ্যালো, $Name!" } } Greet -Name "Farid" -Times 3 # Error handling try { Get-Content "nonexistent.txt" -ErrorAction Stop } catch { Write-Host "Error: $_" } finally { Write-Host "এটি সবসময় চলে" }
# Script চালানোর আগে Execution Policy দেখো Get-ExecutionPolicy # Script চালানো allow করো (Admin হিসেবে) Set-ExecutionPolicy RemoteSigned Set-ExecutionPolicy Unrestricted -Scope CurrentUser # শুধু নিজের জন্য # Script চালাও .\myscript.ps1 powershell -File script.ps1 # Pipeline example Get-Process | Where-Object { $_.CPU -gt 10 } | Sort-Object CPU -Descending | Select-Object Name, CPU, WorkingSet | Format-Table -AutoSize

মাশাআল্লাহ! 🎉 এই section শেষ করেছেন — অসাধারণ! প্রজেক্টের কোডগুলো দেখে দেখে VS Code-এ নিজে টাইপ করুন — copy-paste করবেন না। কারণ হাতে টাইপ করলেই স্মৃতিতে গেঁথে যায়, মাথায় থাকে, বাস্তব অভিজ্ঞতা হয়, সাহস বাড়ে। শুধু পড়ে বা দেখে কেউ কখনো developer হয়নি। চলুন পড়ি! হাতে কলমে শিখি!

📖 Terminal Command Reference Cheatsheet

সবচেয়ে বেশি ব্যবহৃত কমান্ডের দ্রুত তথ্যসূত্র।


🔷 ১. Navigation ও File Management

কমান্ড কাজ উদাহরণ
pwd বর্তমান ডিরেক্টরি pwd
ls -la বিস্তারিত list ls -lah
cd ডিরেক্টরি পরিবর্তন cd ~/projects
mkdir -p ফোল্ডার তৈরি mkdir -p src/css
touch ফাইল তৈরি touch index.html
cp -r Copy cp -r src/ backup/
mv Move/Rename mv old.txt new.txt
rm -rf Delete (সাবধান!) rm -rf dist/
find ফাইল খোঁজো find . -name "*.js"
tree -L 2 Structure দেখো tree -L 3

🔷 ২. Text Processing

কমান্ড কাজ উদাহরণ
cat ফাইল দেখো cat file.txt
less পেজ করে দেখো less big.log
head / tail শুরু/শেষ দেখো tail -f app.log
grep -r Text খোঁজো grep -ri "error" src/
sed Text replace sed -i 's/old/new/g' f
awk Column processing awk '{print $1}' f
sort | uniq Sort ও unique sort f | uniq -c
wc -l Line count wc -l *.js
cut Column কাটো cut -d, -f1 data.csv
tr Character transform tr 'a-z' 'A-Z'

🔷 ৩. Process ও System

কমান্ড কাজ উদাহরণ
ps aux সব process ps aux | grep node
top / htop Live monitor htop
kill -9 Process বন্ধ kill -9 1234
lsof -i :PORT Port কে ব্যবহার করছে? lsof -i :3000
df -h Disk space df -h
free -h RAM usage free -h
du -sh Folder size du -sh *
uname -a OS info uname -a
uptime System uptime uptime
sudo Admin permission sudo apt update

🔷 ৪. Networking ও SSH

কমান্ড কাজ উদাহরণ
ping Host alive? ping -c 4 google.com
curl HTTP request curl -s api.example.com
wget File download wget url
ssh Remote login ssh user@server
scp Secure copy scp file user@server:/path
rsync Sync files rsync -avz src/ user@server:/dest/
ssh-keygen SSH key তৈরি ssh-keygen -t ed25519
netstat Network connections ss -tulpn
dig DNS lookup dig google.com
ip addr IP address দেখো ip addr show

🔷 ৫. Bash Script — চটজলদি Reference

Feature Syntax উদাহরণ
Variable name="value" echo $name
Command sub $(command) date=$(date +%F)
Arithmetic $((expr)) echo $((2+3))
if if [ cond ]; then fi if [ -f file ]
for for x in list; do done for f in *.txt
while while [ cond ]; do done while read line
function func() { ... } myfunc "arg"
Array arr=(a b c) ${arr[@]}
Redirect > >> 2>&1 cmd > out.txt
Pipe cmd1 | cmd2 ls | grep .js
Exit code $? echo $?
Arguments $1 $2 $@ echo $1

🔷 প্রতিদিনের কাজে সবচেয়ে বেশি ব্যবহৃত

━━━━━━━━━━ Navigation ━━━━━━━━━━ pwd # কোথায় আছি? ls -la # কী আছে? cd ~/projects # projects-এ যাও cd .. # এক উপরে tree -L 2 # Structure দেখো ━━━━━━━━━━ File Operations ━━━━━━━━━━ touch index.html # ফাইল তৈরি mkdir -p src/css # ফোল্ডার তৈরি cp -r src/ backup/ # copy mv old.txt new.txt # rename/move rm -rf dist/ # delete (সাবধান!) ━━━━━━━━━━ Search ━━━━━━━━━━ find . -name "*.js" # ফাইল খোঁজো grep -r "TODO" src/ # text খোঁজো grep -i "error" *.log # log-এ error খোঁজো ━━━━━━━━━━ Process ━━━━━━━━━━ ps aux | grep node # node process খোঁজো kill -9 PID # process বন্ধ করো lsof -i :3000 # port 3000 কে ব্যবহার করছে? top # system monitor ━━━━━━━━━━ SSH ও Transfer ━━━━━━━━━━ ssh user@server # remote login scp file user@server:/path # file upload rsync -avz src/ dest/ # sync ━━━━━━━━━━ Log দেখা ━━━━━━━━━━ tail -f server.log # real-time log follow grep "ERROR" app.log | tail -50 # error দেখো cat log.txt | grep "404" | wc -l # 404 গণনা ━━━━━━━━━━ Keyboard Shortcuts ━━━━━━━━━━ Ctrl+C → চলমান কমান্ড বন্ধ করো Ctrl+Z → Pause করো (bg দিয়ে resume) Ctrl+D → Terminal বন্ধ করো Ctrl+L → Screen clear (clear কমান্ডের মতো) Ctrl+A → Line-এর শুরুতে যাও Ctrl+E → Line-এর শেষে যাও Ctrl+R → History search (সবচেয়ে useful!) ↑/↓ → আগের/পরের কমান্ড Tab → Auto-complete !! → আগের কমান্ড repeat করো !$ → আগের কমান্ডের শেষ argument
Terminal শেখার পরামর্শ:
→ প্রথমে pwd, ls, cd, mkdir, touch, cp, mv, rm — এই ৮টি রপ্ত করো
→ তারপর grep, find, tail -f — প্রতিদিন কাজে লাগবে
Ctrl+R শিখলে history search করে দ্রুত কমান্ড পাওয়া যায়
Bash scripting শিখলে repetitive কাজ automate করা যায়
man কমান্ড টাইপ করলে যেকোনো কমান্ডের manual পাবে: man ls

মাশাআল্লাহ! 🎉 এই section শেষ করেছেন — অসাধারণ! প্রজেক্টের কোডগুলো দেখে দেখে VS Code-এ নিজে টাইপ করুন — copy-paste করবেন না। কারণ হাতে টাইপ করলেই স্মৃতিতে গেঁথে যায়, মাথায় থাকে, বাস্তব অভিজ্ঞতা হয়, সাহস বাড়ে। শুধু পড়ে বা দেখে কেউ কখনো developer হয়নি। চলুন পড়ি! হাতে কলমে শিখি!