Giriş
Command line (əmr sətiri) ilk baxışda qorxulu görünə bilər - qara ekran, yalnız mətn, heç bir vizual interfeys. Amma professional developer kimi command line bilmək vacib bacarıqdır. Server idarəetməsindən tutmuş Git əməliyyatlarına qədər, bir çox tapşırıqlar terminal vasitəsilə daha sürətli və effektiv yerinə yetirilir.
Bu məqalədə sıfırdan başlayaraq ən çox istifadə olunan Linux command line əmrlərini praktiki nümunələrlə öyrənəcəksiniz.
Terminologiya: Console, Terminal, Shell və CLI
Command line haqqında danışarkən çox rast gəlinən 4 termin var. Gəlin onları aydınlaşdıraq:
Console (Konsol)
Kompüterlə fiziki qarşılıqlı əlaqə quran cihaz. Sadə dillə desək - ekran, klaviatura və siçan.
Terminal
Əmr daxil etmək üçün istifadə etdiyimiz proqram. Terminal özü heç bir əmri yerinə yetirmir, sadəcə shell-ə əmrləri ötürür.
Populyar terminallar:
- macOS: Terminal.app, iTerm2
- Windows: Command Prompt, PowerShell, Windows Terminal
- Linux: GNOME Terminal, Konsole, Alacritty
Shell
Əmr sətiri interpretoru. Əmrləri qəbul edir, işləyir və nəticəni qaytarır. Terminal-ın "beyni"dir.
CLI (Command Line Interface)
Komanda daxil etdiyimiz və nəticələri gördüyümüz interfeys.
Qısaca:
Siz klaviaturada yazırsınız → Terminal qəbul edir → Shell işləyir → Nəticə ekranda görünür
Hansı Shell İstifadə Edirsiniz?
Fərqli shell proqramları var və hər birinin özünəməxsus xüsusiyyətləri var:
Bash (Bourne Again Shell)
- Ən geniş yayılmış shell
- macOS və Linux-da default
- POSIX uyğun
- Çox sayda tutorial və resurs
Zsh (Z Shell)
- Bash-dan inkişaf etmiş versiya
- macOS Catalina-dan başlayaraq default
- Güclü autocompletion
- Oh My Zsh kimi framework-lər
Fish (Friendly Interactive Shell)
- İstifadəçi dostu interfeys
- Built-in syntax highlighting
- Autosuggest xüsusiyyəti
- POSIX uyğun deyil
Ash/Dash
- Minimalist və sürətli
- Script icra üçün optimal
- POSIX uyğun
Hansi shell istifadə etdiyinizi yoxlamaq:
echo $0
Nəticə: -bash, -zsh, və ya başqa shell adı
Niyə Command Line İstifadə Etməli?
1. Sürət və Effektivlik
GUI-də bir neçə dəqiqə çəkən əməliyyat command line-da bir saniyə çəkir.
Misal: 100 faylın adını dəyişdirmək
- GUI: Hər faylı bir-bir sağ klikləyib rename
- CLI:
for file in *.txt; do mv "$file" "new_$file"; done
2. Avtomatlaşdırma
Script yazaraq eyni əməliyyatları dəfələrlə avtomatik yerinə yetirə bilərsiniz.
3. Server və Cloud İdarəetməsi
AWS, DigitalOcean, və s. serverlər əksəriyyətlə yalnız CLI vasitəsilə idarə olunur. GUI yoxdur.
4. Developer Tools
Git, npm, Docker, Kubernetes - hamısı əsasən CLI-dan istifadə edir.
Əsas Naviqasiya Əmrləri
pwd - Print Working Directory
Hazırda hansı qovluqda olduğunuzu göstərir.
pwd
# Nəticə: /Users/username/Documents
cd - Change Directory
Qovluqlar arasında hərəkət etmək üçün.
cd Documents # Documents qovluğuna keç
cd .. # Bir qovluq geri qayıt
cd ~ # Home directory-ə keç
cd / # Root directory-ə keç
cd - # Əvvəlki qovluğa qayıt
Praktiki məsləhət: Tab düyməsi ilə autocomplete istifadə edin:
cd Doc[Tab] # Avtomatik "Documents" yazacaq
ls - List
Qovluqdakı faylları siyahıya alır.
ls # Faylları göstər
ls -a # Gizli faylları da göstər (.bashrc, .gitignore)
ls -l # Ətraflı məlumat (icazələr, ölçü, tarix)
ls -lh # Human-readable ölçülər (KB, MB)
ls -la # Hamısını birləşdir
ls *.js # Yalnız .js fayllarını göstər
Nümunə nəticə:
$ ls -lh
drwxr-xr-x 5 user staff 160B Jan 15 10:30 Documents
-rw-r--r-- 1 user staff 2.5K Jan 14 09:15 README.md
-rw-r--r-- 1 user staff 150K Jan 13 14:20 image.png
Qovluq Əməliyyatları
mkdir - Make Directory
Yeni qovluq yaratmaq üçün.
mkdir my-project # Tək qovluq
mkdir -p projects/react/app # Nested qovluqlar (parent-lər də yaranır)
mkdir project1 project2 # Bir neçə qovluq eyni anda
rmdir - Remove Directory
Boş qovluğu silir.
rmdir old-folder # Yalnız boş qovluq silinir
Qeyd: İçində fayl olan qovluğu silmək üçün rm -r istifadə edin (aşağıda izah olunub).
Fayl Əməliyyatları
touch
Boş fayl yaradır və ya mövcud faylın tarixini yeniləyir.
touch index.html # Yeni fayl
touch file1.txt file2.txt # Bir neçə fayl
cp - Copy
Fayl və ya qovluq kopyalayır.
cp source.txt destination.txt # Fayl kopyalama
cp -r folder1 folder2 # Qovluq kopyalama (-r = recursive)
cp *.js backup/ # Bütün .js fayllarını backup-a
cp -i file.txt dest.txt # Üzərinə yazmadan əvvəl soruş
mv - Move
Fayl köçürür və ya adını dəyişir.
mv oldname.txt newname.txt # Adını dəyişdir
mv file.txt Documents/ # Başqa qovluğa köçür
mv *.log logs/ # Bütün log fayllarını köçür
rm - Remove
Fayl və ya qovluq silir.
rm file.txt # Fayl sil
rm -r folder/ # Qovluq və içindəkiləri sil
rm -rf folder/ # Zorla sil (təhlükəli!)
rm *.tmp # Bütün .tmp fayllarını sil
rm -i important.txt # Təsdiq soruş
⚠️ XƏBƏRDARLIQ: rm əmri faylları birdəfəlik silir. Recycle Bin-ə getmir!
# TƏHLÜKƏLİ - ASLA işlətməyin:
rm -rf / # Bütün sistemi silər
rm -rf ~ # Home directory-ni silər
rm -rf . # Cari qovluğun hamısını silər
Faylları Oxumaq və Redaktə Etmək
cat - Concatenate
Fayl məzmununu ekrana çıxarır.
cat file.txt # Faylı göstər
cat file1.txt file2.txt # Bir neçə faylı ardıcıl göstər
cat file1.txt file2.txt > merged.txt # Birləşdir və yeni fayla yaz
head və tail
Faylın əvvəl və sonunu göstərir.
head file.txt # İlk 10 sətir
head -n 5 file.txt # İlk 5 sətir
tail file.txt # Son 10 sətir
tail -n 20 file.txt # Son 20 sətir
tail -f logs.txt # Real-time log izləmə
Praktiki istifadə:
tail -f /var/log/nginx/access.log # Nginx loglarını canlı izlə
echo
Mətn ekrana çıxarır və ya fayla yazır.
echo "Hello World" # Ekrana çıxar
echo "text" > file.txt # Faylı üzərinə yaz (köhnə məzmun silinir)
echo "text" >> file.txt # Faylın sonuna əlavə et
echo $HOME # Environment variable göstər
less və more
Böyük faylları səhifələrlə oxumaq üçün.
less largefile.txt # Səhifələrlə göstər
# Space: növbəti səhifə
# b: əvvəlki səhifə
# /pattern: axtarış
# q: çıxış
nano və vim
CLI mətn redaktorları.
nano file.txt # Başlanğıc dostu redaktor
vim file.txt # Güclü amma mürəkkəb
code file.txt # VS Code-da aç (yüklü olmalıdır)
Faydalı Utility Əmrlər
man - Manual
Əmr haqqında ətraflı təlimat.
man ls # ls əmri haqqında manual
man git-commit # Git commit haqqında
Çıxmaq üçün q basın.
--help
Sürətli yardım.
ls --help # ls əmrinin əsas istifadəsi
git --help # Git əmrləri siyahısı
clear
Terminalı təmizləyir.
clear # və ya Ctrl+L
history
Əvvəlki əmrləri göstərir.
history # Əmr tarixçəsi
history | grep git # Yalnız git əmrlərini göstər
!150 # 150-ci əmri təkrar işə sal
!! # Sonuncu əmri təkrar işə sal
grep - Global Regular Expression Print
Fayl və ya mətn içində axtarış.
grep "error" log.txt # "error" sözünü tap
grep -i "error" log.txt # Case-insensitive
grep -r "TODO" . # Rekursiv axtarış (bütün fayllar)
grep -n "function" app.js # Sətir nömrəsi ilə
ls -la | grep ".txt" # Pipe ilə istifadə
find
Fayl və qovluq axtarışı.
find . -name "*.js" # Bütün .js faylları
find . -type f -name "test*" # "test" ilə başlayan fayllar
find . -type d -name "node_modules" # node_modules qovluqları
find . -size +10M # 10MB-dan böyük fayllar
find . -mtime -7 # Son 7 gündə dəyişmiş fayllar
wc - Word Count
Sətirlər, sözlər, bayts sayır.
wc file.txt # Sətr, söz, bayt sayı
wc -l file.txt # Yalnız sətr sayı
ls | wc -l # Qovluqdakı fayl sayı
chmod - Change Mode
Fayl icazələrini dəyişir.
chmod +x script.sh # İcra icazəsi əlavə et
chmod 755 script.sh # rwxr-xr-x
chmod 644 file.txt # rw-r--r--
İcazə rəqəmləri:
- 7 = rwx (oxu, yaz, icra)
- 6 = rw- (oxu, yaz)
- 5 = r-x (oxu, icra)
- 4 = r-- (yalnız oxu)
Pipe (|) və Redirection (>, >>)
Pipe - Əmrləri Birləşdirmək
Bir əmrin çıxışını başqa əmrə göndərir.
ls -la | grep ".js" # ls nəticəsində .js faylları axtar
cat file.txt | wc -l # Fayl neçə sətrdir
history | grep git | tail -5 # Son 5 git əmri
ps aux | grep node # Node processlərini tap
Redirection - Output-u Fayla Göndərmək
ls > files.txt # Output-u fayla yaz (üzərinə)
ls >> files.txt # Output-u əlavə et
command 2> errors.txt # Yalnız error-ları fayla yaz
command > output.txt 2>&1 # Hər ikisini eyni fayla
Praktiki nümunə:
npm test > test-results.txt 2>&1 # Test nəticələrini fayla yaz
Git Əmrləri
Developer üçün Git bilmək mütləqdir. Ən çox istifadə olunan Git əmrləri:
Repository Yaratmaq və Klonlamaq
git init # Yeni repo yarat
git clone https://github.com/user/repo # Repo-nu endir
git clone [url] my-folder # Xüsusi qovluğa endir
Dəyişikliklərlə İşləmək
git status # Hal-hazırki vəziyyət
git add file.txt # Faylı stage-ə əlavə et
git add . # Bütün dəyişiklikləri əlavə et
git add *.js # Bütün .js fayllarını əlavə et
git commit -m "Fix bug" # Commit yarat
git commit -am "Update" # Stage və commit birlikdə
Remote ilə İşləmək
git remote -v # Remote-ları göstər
git remote add origin [url] # Remote əlavə et
git remote set-url origin [url] # Remote URL dəyişdir
git push # Remote-a göndər
git push -u origin main # İlk push (tracking qur)
git pull # Remote-dan çək
git fetch # Remote məlumatı yenilə
Branch və Merge
git branch # Branch-ları göstər
git branch feature-login # Yeni branch yarat
git checkout feature-login # Branch-a keç
git checkout -b new-feature # Yarat və keç
git merge feature-login # Branch-ı birləşdir
git branch -d feature-login # Branch sil
Tarixçə və Dəyişikliklər
git log # Commit tarixçəsi
git log --oneline # Qısa format
git log --graph --all # Vizual tree
git diff # Stage olmamış dəyişikliklər
git diff --staged # Stage olunmuş dəyişikliklər
git diff branch1 branch2 # Branch-lar arası fərq
Geri Almaq və Dəyişdirmək
git reset HEAD file.txt # Unstage et
git checkout -- file.txt # Fayldakı dəyişiklikləri ləğv et
git reset --hard HEAD # Bütün dəyişiklikləri ləğv et
git revert [commit] # Commit-i geri al (yeni commit)
Praktiki Git Workflow:
# 1. Branch yarat
git checkout -b feature-navbar
# 2. Kod yaz və əlavə et
git add .
git commit -m "Add responsive navbar"
# 3. Main-ə birləşdir
git checkout main
git merge feature-navbar
# 4. Remote-a göndər
git push origin main
# 5. Branch-ı təmizlə
git branch -d feature-navbar
Klaviatura Shortcut-ları
Terminal Naviqasiyası
Ctrl + C- Hazırki prosesi dayandırCtrl + D- Terminal-ı bağla (və ya EOF)Ctrl + L- Ekranı təmizlə (clear)Ctrl + A- Sətr əvvəlinə keçCtrl + E- Sətr sonuna keçCtrl + U- Kursordan əvvəl hər şeyi silCtrl + K- Kursordan sonra hər şeyi silCtrl + W- Əvvəlki sözü silCtrl + R- Tarixdə axtarış (reverse search)
Kopyala-Yapışdır
Ctrl + Shift + C- KopyalaCtrl + Shift + V- Yapışdır
Tab Completion
Tab- AutocompleteTab Tab- Bütün variantları göstər
Əmr Tarixçəsi
↑(Yuxarı ox) - Əvvəlki əmr↓(Aşağı ox) - Növbəti əmr!!- Son əmri təkrar!$- Son əmrin son arqumenti
Alias Yaratmaq
Tez-tez istifadə etdiyiniz uzun əmrlər üçün qısayollar yaradın.
Müvəqqəti Alias
alias ll="ls -la" # Bu sessiya üçün
alias gs="git status"
alias ga="git add"
alias gc="git commit -m"
Daimi Alias
~/.bashrc və ya ~/.zshrc faylına əlavə edin:
# ~/.bashrc və ya ~/.zshrc
alias ll="ls -lah"
alias ..="cd .."
alias ...="cd ../.."
alias gs="git status"
alias gp="git pull"
alias gc="git commit -m"
alias gpo="git push origin"
alias hosts="sudo nano /etc/hosts"
alias update="sudo apt update && sudo apt upgrade"
Faylı yadda saxlayıb terminal-ı yenidən başladın və ya:
source ~/.bashrc # və ya ~/.zshrc
Bash Scripting Əsasları
Sadə Script
hello.sh faylı yaradın:
#!/bin/bash
# Bu shebang - hansı interpreter istifadə olunacaq
echo "Hello, World!"
echo "Bugünkü tarix: $(date)"
echo "Sizin istifadəçi adınız: $USER"
İcra edin:
chmod +x hello.sh # İcra icazəsi ver
./hello.sh # İşə sal
Dəyişənlər
#!/bin/bash
NAME="John"
AGE=25
echo "Ad: $NAME"
echo "Yaş: $AGE"
Parametrlər
#!/bin/bash
# greet.sh
echo "Salam, $1!"
echo "Sizin yaşınız: $2"
# İstifadə: ./greet.sh Ali 30
Şərtlər
#!/bin/bash
if [ -f "file.txt" ]; then
echo "Fayl mövcuddur"
else
echo "Fayl tapılmadı"
fi
Döngü
#!/bin/bash
# For loop
for i in 1 2 3 4 5; do
echo "Nömrə: $i"
done
# While loop
count=0
while [ $count -lt 5 ]; do
echo "Say: $count"
count=$((count + 1))
done
Praktiki Script: Git Repo Yaratmaq
#!/bin/bash
# GitHub repo yaradıb, commit edib push edən script
echo "Repo adı:"
read REPO_NAME
echo "Repo description:"
read DESCRIPTION
# GitHub-da repo yarat (gh CLI lazımdır)
gh repo create $REPO_NAME --public --description "$DESCRIPTION"
# Local setup
git init
echo "# $REPO_NAME" > README.md
git add .
git commit -m "Initial commit"
git branch -M main
git remote add origin "https://github.com/$GITHUB_USERNAME/$REPO_NAME.git"
git push -u origin main
echo "✅ Repo uğurla yaradıldı!"
Process İdarəetməsi
ps - Process Status
İşləyən prosesləri göstərir.
ps # Cari shell prosesləri
ps aux # Bütün proseslər
ps aux | grep node # Node prosesləri
top və htop
Real-time proses monitoru.
top # Proses monitorinq
htop # Daha yaxşı interfeys (yükləmək lazımdır)
kill
Prosesi dayandırır.
kill 1234 # Process ID ilə
kill -9 1234 # Zorla dayandır
killall node # Bütün node proseslərini dayandır
pkill -f "python script.py" # Pattern ilə
bg və fg
Background və foreground idarəetməsi.
command & # Background-da işə sal
Ctrl+Z # Prosesi pause et
bg # Background-a göndər
fg # Foreground-a gətir
jobs # Background işləri göstər
Network Əmrləri
ping
Server əlaqəsini yoxlayır.
ping google.com # Əlaqəni yoxla
ping -c 4 google.com # 4 dəfə ping
curl
HTTP request göndərir.
curl https://api.example.com # GET request
curl -X POST https://api.example.com # POST request
curl -o file.html https://example.com # Faylı endir
wget
Fayl endirir.
wget https://example.com/file.zip # Fayl endir
wget -c https://example.com/big.zip # Davam etdir
ssh
Uzaq serverə qoşul.
ssh user@server.com # SSH ilə qoşul
ssh -p 2222 user@server.com # Xüsusi port
scp
Fayl köçürmək.
scp file.txt user@server:/path/ # Serverə göndər
scp user@server:/path/file.txt . # Serverdən çək
Sistem Məlumatları
uname -a # Sistem məlumatı
df -h # Disk istifadəsi
du -sh folder/ # Qovluq ölçüsü
free -h # RAM istifadəsi
uptime # Sistem uptime
whoami # İstifadəçi adı
hostname # Host adı
date # Tarix və vaxt
cal # Təqvim
Paket Menecerləri
Ubuntu/Debian (apt)
sudo apt update # Paket siyahısını yenilə
sudo apt upgrade # Paketləri yenilə
sudo apt install package-name # Paket yüklə
sudo apt remove package-name # Paket sil
sudo apt search keyword # Paket axtar
macOS (Homebrew)
brew update # Homebrew yenilə
brew upgrade # Paketləri yenilə
brew install package-name # Paket yüklə
brew uninstall package-name # Paket sil
brew search keyword # Paket axtar
brew list # Yüklü paketlər
Node.js (npm)
npm install # package.json-dan yüklə
npm install package-name # Paket yüklə
npm install -g package-name # Global yüklə
npm uninstall package-name # Sil
npm update # Yenilə
npm list # Yüklü paketlər
Faydalı Kombinasiyalar
1. Böyük Faylları Tapmaq
find . -type f -size +100M -exec ls -lh {} \;
2. Qovluqdakı Sətr Sayı
find . -name "*.js" | xargs wc -l
3. Port İstifadəsini Yoxlamaq
lsof -i :3000 # 3000 portunu kim istifadə edir
4. Fayl İçində Sözü Dəyişdirmək
sed -i 's/old-text/new-text/g' file.txt
5. Node Modules-i Təmizləmək
find . -name "node_modules" -type d -prune -exec rm -rf {} +
6. Git Branch-ları Təmizləmək
git branch | grep -v "main" | xargs git branch -D
Yeni Başlayanlar üçün Təhlükəli Əmrlər
Bu əmrlərdən UZAQ DURUN:
rm -rf / # Bütün sistemi silər
rm -rf ~ # Home directory-ni silər
rm -rf * # Cari qovluğu silər
:(){ :|:& };: # Fork bomb (sistemi dondurur)
chmod -R 777 / # Təhlükəsiz sistem yaradır
dd if=/dev/random of=/dev/sda # Disk-i məhv edir
Qızıl Qayda: rm -rf istifadə etməzdən əvvəl 3 dəfə yoxlayın!
Praktiki Workflow Nümunələri
React Layihə Başlatmaq
# 1. Qovluq yarat və keç
mkdir my-react-app && cd my-react-app
# 2. React app yarat
npx create-react-app .
# 3. Git-ə əlavə et
git init
git add .
git commit -m "Initial commit"
# 4. GitHub-a push et
gh repo create my-react-app --public
git remote add origin [repo-url]
git push -u origin main
# 5. Development server başlat
npm start
Server Deploy
# 1. Serverə qoşul
ssh user@server.com
# 2. Kod çək
cd /var/www/app
git pull origin main
# 3. Dependencies yüklə
npm install
# 4. Build yarat
npm run build
# 5. PM2 ilə restart
pm2 restart app
# 6. Çıx
exit
Nəticə və Məsləhətlər
Command line öyrənmək vaxt tələb edir, amma investisiya özünü ödəyir. Əsas məsləhətlər:
1. Hər Gün Praktika
GUI əvəzinə terminal istifadə etməyə çalışın:
- Fayl yaratmaq →
touchistifadə edin - Qovluq açmaq →
cdistifadə edin - Fayl axtarmaq →
findvəgrepöyrənin
2. Alias Yaradın
Tez-tez istifadə etdiyiniz əmrlər üçün qısayollar yaradın.
3. Tab İstifadə Edin
Autocomplete vaxtınıza qənaət edir və səhvləri azaldır.
4. Man Page-ləri Oxuyun
Yeni əmr öyrənəndə man command istifadə edin.
5. History İstifadə Edin
Ctrl+R ilə əvvəlki əmrləri axtarın.
6. Script Yazın
Təkrarlanan tapşırıqları avtomatlaşdırın.
7. Git Öyrənin
Developer üçün Git command line bilməyi vacibdir.
Növbəti Addımlar
Bu əmrləri öyrəndikdən sonra:
- Bash scripting dərinləşin
- Vim və ya Emacs öyrənin
- tmux və ya screen multiplexer-lərə baxın
- awk və sed mətn prosessinq öyrənin
- Docker CLI-a keçin
Xülasə
Command line ilk baxışda mürəkkəb görünsə də, ən çox istifadə olunan 20-30 əmri öyrəndikdən sonra rahatlıqla işləyə bilərsiniz. Bu məqalədə əhatə olunanlar:
✅ Naviqasiya: pwd, cd, ls
✅ Fayl əməliyyatları: touch, cp, mv, rm
✅ Mətn: cat, grep, head, tail, echo
✅ Git: init, add, commit, push, pull, branch, merge
✅ Proseslər: ps, kill, top
✅ Network: ping, curl, ssh, scp
✅ Scripting: Variables, loops, conditionals
✅ Shortcuts və aliaslar
İndi növbə praktikada! Terminal açıb bu əmrləri sınayın. Xatırlayın: praktika mükəmməl edir.
Bu məqalə freeCodeCamp-in "Command Line for Beginners" təlimindən ilhamlanaraq hazırlanmışdır.
Orijinal mənbə: freeCodeCamp