Linux Komut Satırını Öğrenmek için Nereden Başlamalısınız

Yıllarca terminalde çalıştıktan sonra şunu fark ettim: insanların büyük çoğunluğu Linux komut satırından korkuyor çünkü yanlış yerden başlıyor. Ya doğrudan “1000 Linux komutu” gibi ezber listeleri buluyorlar ya da çok ileri seviye kaynaklara dalıyorlar. Oysa komut satırı, mantığını kavradığınızda aslında GUI’den çok daha sezgisel bir araç. Bu yazıda size gerçekten işe yarayan bir başlangıç yolu çizeceğim.

Önce Zihinsel Modeli Kurun

Komut satırını öğrenmek bir dil öğrenmek gibidir. Sözlük ezberlemeye değil, gramer kurallarını anlamaya odaklanmalısınız. Linux komutlarının büyük çoğunluğu şu yapıya uyar:

komut [seçenekler] [argümanlar]

Örneğin ls -la /home/kullanici ifadesinde ls komut, -la seçenekler (long format + all files), /home/kullanici ise argümandır. Bu yapıyı aklınızın bir köşesine kazıyın. Yeni bir komutla karşılaştığınızda da aynı gözle bakın.

İkinci önemli kavram: her şey bir dosyadır. Linux’ta ağ arayüzleri, donanım bileşenleri, işlemler, hepsi dosya sistemi üzerinden temsil edilir. Bu felsefeyi kavradıktan sonra komutların neden böyle davrandığını anlamak çok kolaylaşır.

Temel Navigasyon: İlk Hafta Odağınız

Başlarken kendinizi aşırı komutla bunaltmayın. İlk hafta sadece şu beş şeyi öğrenin ve bunları iyice sindirin:

Neredeyim?

pwd
# /home/ahmet/projeler gibi bir çıktı alırsınız

Neler var burada?

ls -lh
# -l: detaylı liste, -h: insan okunabilir boyutlar (KB, MB)

Başka yere git:

cd /var/log
cd ..          # Bir üst dizine git
cd ~           # Home dizinine dön
cd -           # Bir önceki dizine dön (bu çok kullanışlı!)

Dosya içeriğine bak:

cat /etc/hostname
less /var/log/syslog    # Büyük dosyalar için, q ile çıkarsınız

Dosya/dizin oluştur ve sil:

mkdir yeni-dizin
touch dosya.txt
rm dosya.txt
rm -rf dizin/    # Dikkatli kullanın!

Bu komutları öğrendikten sonra terminal içinde rahat hareket edebilirsiniz. Geri kalan her şey bu temelin üzerine inşa edilir.

Man Sayfaları: En Değerli Kaynağınız

Birçok kişi komut öğrenmek için sürekli Google’a ya da Stack Overflow’a koşuyor. Oysa elinizin altında çok daha güçlü bir kaynak var: man sayfaları.

man ls
man grep
man find

Man sayfası açıldığında / tuşuyla arama yapabilir, q ile çıkabilirsiniz. Başta biraz korkutucu görünebilir ama zamanla en güvendiğiniz kaynak haline gelir çünkü tam olarak sisteminizde yüklü olan sürümü anlatır, internetteki eski blog yazıları değil.

Man sayfası çok uzun geliyorsa veya hızlı bir özet istiyorsanız:

ls --help
# ya da tldr yüklediyseniz:
tldr ls

tldr aracını şiddetle tavsiye ederim. Gerçek dünya örnekleriyle kısa özetler sunar. sudo apt install tldr veya pip install tldr ile kurabilirsiniz.

Metin İşleme Komutları: Asıl Güç Buradan Geliyor

Linux komut satırının gerçek gücü metin işlemede ortaya çıkar. Sistem yöneticiliğinin yüzde sekseninin aslında log okuma, config dosyası düzenleme ve metin manipülasyonu olduğunu söylesem abartmış olmam.

grep: Arama Motoru

grep "error" /var/log/syslog
grep -i "failed" /var/log/auth.log    # -i büyük/küçük harf duyarsız
grep -r "database" /etc/              # -r alt dizinlerde de ara
grep -n "timeout" uygulama.log        # -n satır numarasını göster

Gerçek senaryo: Bir uygulama hata veriyor ve binlerce satırlık log dosyasına bakmanız gerekiyor. grep -i "error|exception|fatal" /var/log/uygulama.log ile saniyeler içinde ilgili satırları süzebilirsiniz.

pipe (|): Komutları Birleştirin

Pipe operatörü Linux komut satırının en güzel özelliklerinden biridir. Bir komutun çıktısını diğerinin girdisine bağlar:

cat /var/log/auth.log | grep "Failed password" | wc -l
# Kaç başarısız SSH girişimi olmuş?
ps aux | grep nginx | grep -v grep
# Nginx process'leri listele, grep'in kendisini listeden çıkar

Bu zincirleme mantığı kavradığınızda komut satırı bambaşka bir anlam kazanır.

awk ve sed: İleri Metin İşleme

Bunları başlangıçta öğrenmek zorunda değilsiniz ama birkaç temel kullanımı bilmek faydalıdır:

# Sadece belirli sütunları göster
df -h | awk '{print $1, $5}'
# Dosya sistemi adı ve kullanım yüzdesi

# Bir dosyada bul-değiştir
sed -i 's/eski_metin/yeni_metin/g' config.txt

Dosya İzinleri: Kaçınılmaz Bir Konu

Muhtemelen ilk hafta içinde Permission denied hatasıyla karşılaşacaksınız. Bu yüzden izin sistemini erken öğrenmek önemli.

ls -l dosya.txt
# -rw-r--r-- 1 ahmet users 1234 Jan 10 14:22 dosya.txt

Bu çıktıyı okumak: İlk karakter dosya türü (- normal dosya, d dizin). Sonraki dokuz karakter üç gruba ayrılır: sahip izinleri (rw-), grup izinleri (r--), diğerleri (r--).

r: Okuma (read) w: Yazma (write) x: Çalıştırma (execute)

chmod +x script.sh          # Herkese çalıştırma izni
chmod 755 script.sh         # rwxr-xr-x
chmod 644 config.txt        # rw-r--r--
chown ahmet:users dosya.txt # Sahipliği değiştir

Sayısal notasyonu ezberlemek zorunda değilsiniz başlangıçta. chmod +x ve chmod -x ile başlayın, sayısal sistemi zamanla öğrenirsiniz.

Süreç Yönetimi

Sistem yöneticisi olarak hangi işlemlerin çalıştığını bilmek temel bir gereklilik:

ps aux
# Tüm processleri listele

top
# Gerçek zamanlı izleme (q ile çık)
htop
# Daha güzel arayüz, önce yüklemek gerekebilir

kill 1234
# Process ID'ye göre durdur

killall nginx
# İsme göre durdur

jobs
# Arka plandaki işleri listele

Ctrl+C    # Çalışan komutu durdur
Ctrl+Z    # Duraklatıp arka plana al
bg        # Duraklatılmış işi arka planda devam ettir
fg        # Arka plan işini ön plana getir

Burada özellikle Ctrl+C ve Ctrl+Z arasındaki farkı anlamak önemli. Ctrl+C işlemi sonlandırır, Ctrl+Z ise sadece duraklatır. Bazen insanlar Ctrl+Z ile bir programı kapattığını sanıyor ama aslında arka planda çalışmaya devam ediyor.

Disk ve Sistem Durumu

Bunlar günlük işlerinizde sürekli kullanacağınız komutlar:

df -h
# Disk kullanımı, human-readable format

du -sh /var/log/
# Belirli bir dizinin kapladığı alan

du -sh /var/log/* | sort -rh | head -20
# En büyük 20 dosya/dizini büyükten küçüğe sırala

free -h
# RAM kullanımı

uptime
# Sistem ne zamandır çalışıyor, yük ortalaması nedir

uname -a
# Kernel sürümü ve sistem bilgisi

Gerçek senaryo: Disk doldu uyarısı aldınız. Yukarıdaki du + sort kombinasyonu ile nereden yer açabileceğinizi dakikalar içinde bulursunuz. Ben bu komutu ayda en az birkaç kez kullanıyorum.

SSH ve Uzak Bağlantılar

Eğer bir sunucu yönetecekseniz SSH kaçınılmaz:

ssh kullanici@sunucu-ip
ssh -p 2222 [email protected]    # Özel port
ssh -i ~/.ssh/ozel_anahtar [email protected]    # Private key ile

# Dosya kopyalama
scp dosya.txt kullanici@sunucu:/home/kullanici/
scp -r dizin/ kullanici@sunucu:/tmp/

# Sunucudan lokalınıza
scp kullanici@sunucu:/var/log/app.log ./

SSH key authentication kullanmayı da öğrenin. Şifre girerek bağlanmak hem güvensiz hem de zahmetlidir. ssh-keygen ile key çifti oluşturup ssh-copy-id ile sunucuya kopyalayabilirsiniz.

Tarihçe ve Otomatik Tamamlama: Verimlilik Çarpanları

Bunları bilmeden terminal kullanmak yüzme bilmeden denize girmek gibi:

Tab tuşu: Komut ve dosya adı tamamlama. Belirsizlik varsa iki kez Tab’a basın, seçenekleri gösterir.

Yukarı/Aşağı ok: Komut geçmişinde gezin.

Ctrl+R: Geçmiş komutlar içinde arama. Yazmaya başlayın, eşleşenleri gösterir.

history
# Son kullandığınız komutları listeler

history | grep "grep"
# Daha önce kullandığınız grep komutlarını bul

!45
# Geçmişte 45. sıradaki komutu çalıştır

!!
# Son çalıştırılan komutu tekrar çalıştır (sudo !! çok kullanışlı!)

sudo !! kullanımı şöyle işe yarar: Bir komutu çalıştırdınız, Permission denied aldınız. sudo !! yazarsanız son komutu sudo ile tekrar çalıştırır. Küçük bir şey ama günde onlarca kez işinize yarayabilir.

Ortam Değişkenleri ve .bashrc

Terminal davranışını özelleştirmek ve sık kullandığınız komutları kısaltmak için:

echo $PATH
# PATH değişkenini görüntüle

export DEGISKEN="deger"
# Geçici ortam değişkeni tanımla

printenv
# Tüm ortam değişkenlerini listele

.bashrc dosyası her terminal oturumunda otomatik çalışır ve özelleştirmelerinizi buraya yazarsınız:

# ~/.bashrc'ye ekleyebilecekleriniz
alias ll='ls -lah'
alias grep='grep --color=auto'
alias update='sudo apt update && sudo apt upgrade'
alias golog='cd /var/log && ls -lt | head -20'

# Değişiklikleri mevcut oturuma uygula
source ~/.bashrc

Alias’lar başlangıçta küçük bir kolaylık gibi görünse de zamanla vazgeçemeyeceğiniz kişisel bir araç setine dönüşür. Ben özellikle ssh bağlantıları için alias kullanıyorum: alias prod='ssh -i ~/.ssh/prod_key [email protected]' gibi.

Nasıl Pratik Yapmalısınız?

Teoriyi öğrenmek güzel ama komut satırı gerçekten yaparak öğrenilen bir şey. Birkaç pratik öneri:

Sanal makine kurun: VirtualBox veya VMware ile bir Ubuntu/Debian VM açın. Burada her şeyi deneyebilir, her şeyi bozabilirsiniz. Hiçbir şeyin üretim sistemine etkisi olmaz.

vimtutor’u tamamlayın: Terminalde vimtutor yazın ve 30 dakika ayırın. Vim’i sevmek zorunda değilsiniz ama temel kullanımı bilmek zorunlu. Bazı sunucularda sadece vi olur, grafik editör olmaz.

Gerçek senaryolar bulun: “100 Linux komutu” listesi yerine “disk doldu, ne yaparsın?” gibi problem odaklı düşünün. OverTheWire Bandit oyunu mükemmel bir pratik ortamı. Her seviyede bir terminale bağlanıp Linux bulmacaları çözüyorsunuz.

Her gün bir komut: Günde bir komut veya konsept odaklanın. find komutunu bugün öğrenin, yarın xargs ile nasıl birleştiğine bakın. Hızlı ilerleme bazen daha az öğrenmek anlamına gelir.

Alias kağıdı tutun: Öğrendiğiniz komutları ve kendi alias’larınızı bir yere not edin. Ben bunu yıllarca yaptım, sonunda kendi komut “kütüphanem” oluştu.

Sık Yapılan Hatalar

Başlangıçta herkesin düştüğü birkaç tuzak:

rm -rf / veya benzeri yıkıcı komutları kopyala-yapıştır çalıştırmak: İnternetten kopyaladığınız her komutu önce okuyun ve anlayın. Özellikle root yetkisiyle.

Sudo’yu her yerde kullanmak: “Permission denied” aldığınızda refleks olarak sudo eklemek kötü bir alışkanlık. Neden izin sorunu yaşandığını anlayın, sonra uygun çözümü uygulayın.

Man sayfalarını okumamak: Bir komutun bir seçeneğini merak ediyorsanız man komut açın. Sadece Google aramaktan çok daha hızlı sonuç verir çoğunlukla.

Tek terminalde çalışmak: tmux veya screen öğrenin. Tek bir SSH bağlantısı üzerinden birden fazla terminal penceresi açmanızı sağlar. Bağlantı kopsa bile oturumunuz devam eder.

Sonuç

Linux komut satırını öğrenmek bir sprint değil, maraton. İlk ay içinde temel navigasyon, metin işleme ve süreç yönetimini kavrayabilirseniz gerisi kendiliğinden gelir. Her yeni problem size yeni bir komut öğretir.

En önemli tavsiyem şu: Merak ettiğiniz her şeyi terminalde deneyin. man sayfalarını okuyun, --help çıktısına bakın, komutları birbirleriyle kombinleyin. Komut satırının güzelliği, bileşenlerinin birbirleriyle ne kadar iyi çalıştığında. Birkaç basit aracı pipe ile birbirine bağladığınızda, yüzlerce satır kod yazan bir program kadar güçlü iş akışları oluşturabilirsiniz.

Başlangıçta yavaş olmanız normal. Ben ilk yıl bazı komutları hala not kağıdına yazıp ekrana yapıştırıyordum. Şimdi düşünmeden yazıyorum. Bu kas hafızası zaman ister, ama bir kez yerleşti mi bir daha unutmuyorsunuz.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir