Linux Terminal Komutları: Başlangıçtan İleri Seviyeye

Terminali korkulacak bir araç olmaktan çıkarıyoruz: dosya gezinme, izinler, boru hatları ve otomasyona kadar gerçek komut örnekleriyle anlatılan bir rehber.

Linux
Linux Terminal Komutları: Başlangıçtan İleri Seviyeye

Terminali ilk açtığınızda karşınıza siyah bir ekran ve yanıp sönen bir imleçten başka bir şey çıkmaz; menü yok, buton yok. Bu görüntü başlarda ürkütücü gelebilir. Ama birkaç düzine komutu öğrendikten sonra fark ettiğiniz şey şudur: dosya taşımak, arama yapmak, sistem durumunu görmek gibi işler farenizle tıklamaktan çok daha hızlı hâle gelir. Bu yazıda Linux terminal komutlarını, günlük iş akışınıza gerçekten oturacak biçimde mantıklarıyla birlikte anlatıyorum.

Örneklerin tamamı Bash kabuğunu (shell) esas alıyor; Ubuntu, Debian, Fedora gibi çoğu masaüstü dağıtımının varsayılan kabuğu budur. Farklı bir kabuk (zsh, fish gibi) kullanıyorsanız komutların büyük kısmı aynı şekilde çalışır, yalnızca betik yazımında küçük sözdizimi farkları görülür.

Terminal Açıp İlk Ne Yazmalısınız?

Çoğu Linux masaüstünde terminali Ctrl+Alt+T ile açarsınız; karşınıza kullanıcı adınızın ve bulunduğunuz dizinin göründüğü bir satır (prompt) çıkar. Bulunduğunuz konumu her zaman şu komutla teyit edebilirsiniz:

pwd

pwd (print working directory), tam dizin yolunu yazdırır; kaybolduğunuzu hissettiğinizde ilk başvurulacak komut budur. Bu yol genelde /home/kullanici_adi biçiminde görünür; Windows'taki C:\\Users\\ klasörünün karşılığıdır.

Bulunduğunuz dizindeki dosya ve klasörleri görmek için:

ls -la

-l çıktıyı ayrıntılı listeye çevirir, izinleri ve boyutları gösterir; -a ise nokta ile başlayan gizli dosyaları da listeye ekler. Bu ikili, terminal açıldığında refleks hâline gelen ilk komuttur.

Tab tuşuna alışmak terminal hızını belirgin biçimde artırır. Bir dosya adının ilk birkaç harfini yazıp Tab'a bastığınızda kabuk adı otomatik tamamlar; adını tam hatırlamadığınız uzun dosya isimlerinde bu hem zaman kazandırır hem yazım hatasını önler.

Dizinler Arasında Nasıl Gezinirsiniz?

Dizin değiştirmek için cd (change directory) kullanılır. Ev dizininize dönmek için sadece cd yazmanız yeterli; bir üst dizine çıkmak için cd .., önceki bulunduğunuz dizine dönmek için cd - komutunu kullanırsınız.

Terminalde dosya izinlerini ve dizin listesini gösteren komut ekranı

Yeni bir dizin oluşturmak, kopyalamak ve taşımak için temel komutlar şunlardır:

KomutNe yaparÖrnek kullanım
mkdirYeni dizin oluştururmkdir projeler
cpDosya/dizin kopyalarcp rapor.txt yedek/
mvTaşır veya yeniden adlandırırmv eski.txt yeni.txt
rmSilerrm dosya.txt
rm -rDizini içindekilerle silerrm -r eski_klasor

rm konusunda dikkatli davranın; Windows'taki Geri Dönüşüm Kutusu'nun aksine terminaldeki silme işlemi genelde geri alınamaz. Emin olmadığınız bir silme komutunu çalıştırmadan önce ls ile hedefi bir kez daha kontrol etmek iyi bir alışkanlıktır.

Bir dosya veya klasör adında boşluk varsa, komutta o adı tırnak içine almanız gerekir: rm "eski rapor.txt". Tırnaksız yazarsanız kabuk boşluktan sonraki kısmı ayrı bir argüman sayar ve "dosya bulunamadı" hatası alırsınız; yeni başlayanların en sık takıldığı noktalardan biri budur.

Dosya İçeriğini Nasıl Görüntülersiniz?

Bir metin dosyasının içine bakmak için birkaç farklı komut vardır; hangisini seçeceğiniz dosyanın boyutuna bağlıdır. Kısa dosyalarda cat dosya.txt içeriği doğrudan ekrana döker. Uzun log dosyalarında less dosya.log kullanın; ok tuşlarıyla gezinebilir, q ile çıkabilirsiniz.

Bir dosyanın sadece son satırlarını, örneğin canlı bir log akışını izlemek istediğinizde:

tail -f /var/log/syslog

-f bayrağı dosyaya yeni satır eklendikçe ekranı otomatik günceller; bir servisin neden çöktüğünü anlamaya çalışırken en çok başvurulan komutlardan biridir. Sadece son 50 satırı görmek için tail -n 50 dosya.log yeterlidir; -f bayrağı eklenmeden çalıştırıldığında dosya sabit kalır ve tekrar canlı izlemeye geçmez.

Belirli bir kelimeyi dosya içinde aramak için grep devreye girer:

grep "hata" uygulama.log

Büyük/küçük harf duyarlılığını kapatmak için -i, satır numaralarını görmek için -n bayrağı eklenebilir. Bir dizin ağacının tamamında arama yapmak için grep -r "TODO" ~/projeler komutu tüm alt klasörleri tarar ve eşleşen her satırı dosya adıyla birlikte listeler.

Komutları Birbirine Nasıl Bağlarsınız?

Terminalin asıl gücü tek başına komutlardan değil, onları zincirlemekten gelir. Boru işareti (|), bir komutun çıktısını başka bir komuta girdi olarak aktarır:

Bir komutun çıktısının boru hattıyla başka bir komuta aktarılmasını gösteren şema
ps aux | grep firefox

Bu komut çalışan tüm süreçleri listeler (ps aux) ve çıktıyı grep ile filtreleyip yalnızca "firefox" geçen satırları gösterir. Aynı mantıkla bir dizindeki dosya sayısını saymak için ls | wc -l yeterlidir; wc -l satır sayar.

Yönlendirme operatörleri de sık kullanılır: > bir komutun çıktısını dosyaya yazar (üzerine yazar), >> ise dosyanın sonuna ekler. Örneğin echo "yedekleme tamamlandı" >> islem.log komutu log dosyasına yeni bir satır ekler, mevcut içeriği silmez.

Birden fazla komutu tek satırda art arda çalıştırmak için && operatörü kullanılır: cd proje && git pull && npm install. Bu zincirde her adım başarılı olduğunda bir sonrakine geçilir; aradaki bir komut hata verirse zincir orada durur, bu da hatalı bir dizinde yanlışlıkla komut çalıştırmayı önler.

Çıktıyı sıralamak veya tekilleştirmek için sort ve uniq komutları da boru hattına sık eklenir. Örneğin cat erisim.log | awk '{print $1}' | sort | uniq -c | sort -rn komutu bir erişim logundaki IP adreslerini sayar ve en sık tekrar edeni en üste getirir; sunucu trafiğini hızlıca toparlamanın klasik yöntemlerinden biridir.

Dosya İzinlerini Nasıl Yönetirsiniz?

Linux'ta her dosya ve dizinin bir sahibi, bir grubu ve üç izin seti (sahip, grup, diğerleri) vardır. ls -l çıktısındaki -rwxr-xr-- gibi bir dizi bu izinleri temsil eder: r okuma, w yazma, x çalıştırma anlamına gelir.

Sistem kaynak kullanımını gösteren htop benzeri izleme paneli

İzin değiştirmek için chmod kullanılır:

chmod +x betik.sh

Bu komut betik.sh dosyasına çalıştırma izni ekler; script yazıp "Permission denied" hatası alan herkesin ilk denediği komut budur. Sayısal gösterimle daha hassas kontrol de mümkündür; örneğin chmod 755 betik.sh sahibe tam yetki, gruba ve diğerlerine sadece okuma/çalıştırma izni verir. Sayı sistemi basittir: okuma 4, yazma 2, çalıştırma 1 değer taşır. Bu üç değer toplanır ve kullanıcı grubunun izin seviyesi bulunur; 7 tam yetki anlamına gelir.

Dosya sahipliğini değiştirmek için sudo chown kullanici:grup dosya komutu kullanılır; bu genelde sunucularda bir dosyayı başka bir kullanıcıya (örneğin web sunucusu hesabına) devretmek için gerekir.

sudo konusunda bir uyarı: bu komut çalıştırdığınız işleme yönetici (root) yetkisi verir. sudo rm -rf / gibi bir komutu kopyala-yapıştır ile körü körüne çalıştırmayın; internette bulunan her komutu ne yaptığını anlamadan sudo ile çalıştırmak terminaldeki en tehlikeli alışkanlıktır.

Sistem Durumunu Nasıl Kontrol Edersiniz?

Bilgisayarın ne kadar yorulduğunu görmek için grafik araç açmaya gerek yoktur. top komutu CPU ve bellek kullanımını canlı gösteren bir panel açar; daha okunaklı bir alternatif için htop kurulabilir:

sudo apt install htop
htop

htop açıldığında q tuşuyla çıkılabilir, F6 ile sıralama kriteri değiştirilebilir; en çok CPU tüketen süreci bulmak için pratik bir yoldur.

Disk kullanımını görmek için df -h (dosya sistemlerini insan-okur formatta listeler), bir dizinin ne kadar yer kapladığını görmek için du -sh dizin_adi kullanılır. Bellek durumunu hızlıca görmek için free -h yeterlidir.

Ağ bağlantısını test ederken en temel araç pingdir:

ping -c 4 8.8.8.8

-c 4 bayrağı sonsuz döngü yerine yalnızca dört paket gönderip durur; internet kesintisi yaşandığında önce yönlendiriciye, sonra dış bir adrese ping atarak sorunun nerede olduğu hızlıca ayırt edilebilir.

Komutları Otomatikleştirmenin İlk Adımı Nedir?

Aynı komut dizisi sürekli tekrar yazılıyorsa, onu bir kabuk betiğine (shell script) dönüştürmenin zamanı gelmiştir. Basit bir örnek:

#!/bin/bash
echo "Yedekleme başlıyor..."
tar -czf yedek_$(date +%F).tar.gz ~/belgeler
echo "Yedekleme tamamlandı."

Bu dosyayı yedekle.sh olarak kaydedip chmod +x yedekle.sh ile çalıştırılabilir yaptıktan sonra ./yedekle.sh komutuyla tetikleyebilirsiniz. tar -czf belgeler dizinini sıkıştırır ve tarih damgalı bir arşive dönüştürür; manuel yedeklemeyi tek komuta indirger.

Değişkenler ve koşullar eklemek betiği daha esnek yapar. Örneğin bir dizinin var olup olmadığını kontrol eden basit bir yapı:

if [ ! -d ~/yedekler ]; then
  mkdir ~/yedekler
fi

Bu blok ~/yedekler dizini yoksa oluşturur, varsa hiçbir şey yapmaz; betikleri tekrar tekrar güvenle çalıştırabilmeyi sağlayan türden bir kontroldür.

Terminal komutlarının çoğu man komut_adi yazarak açılan kılavuz sayfasında ayrıntılı biçimde belgelenir; temel komutların resmi referansı için GNU coreutils kılavuzu da güvenilir bir kaynaktır. Bir komutun ne yaptığından emin değilseniz, çalıştırmadan önce bu kılavuza bakmak yanlış bayrakla veri kaybetmekten çok daha güvenlidir.

Betikleri belirli aralıklarla otomatik çalıştırmak için cron devreye girer. crontab -e komutu bir zamanlama dosyası açar; örneğin 0 3 * * * /home/kullanici/yedekle.sh satırı betiği her gece saat 03:00'te tetikler. Beş alan sırasıyla dakika, saat, ayın günü, ay ve haftanın gününü temsil eder; her yerde yıldız bırakmak "her zaman" anlamına gelir.

Cron görevinin gerçekten çalışıp çalışmadığını kontrol etmek için betiğin sonuna bir log satırı eklemek iyi bir alışkanlıktır; sessizce başarısız olan bir zamanlanmış görev, günler sonra fark edilen en can sıkıcı sorunlardan biridir.

Son bir pratik ipucu: komut geçmişi yukarı/aşağı ok tuşlarıyla gezilebilir, Ctrl+R ile daha önce yazılan uzun bir komut aranarak yeniden bulunabilir. history komutu son çalıştırılan komutların tam listesini gösterir; unutulan bir komutu tekrar bulmanın en hızlı yolu genelde budur.

Celil Uyanikoglu

Yazan Celil Uyanikoglu

Bilgisayar mühendisiyim; 25 yılı aşkın süredir bilgi işlem sektörünün içindeyim. Bu blogu 2020'de, işimde her gün karşılaştığım sorunların çözümlerini bir yere yazmak için açtım: Linux, güvenlik, tarayıcılar, yapay zeka araçları. Yazdığım her rehberi önce kendi bilgisayarımda ya da sunucumda deniyorum; çalıştığını görmediğim adımı yayınlamam. Hatalı ya da eskimiş bir şey görürsen iletişim sayfasından yaz — düzeltirim.

Yorum

Henüz yorum yok.

Sohbete katıl. Yorumlar yayınlanmadan önce moderasyondan geçer.

Yorum yap

E-posta adresin yayınlanmaz. Yorumlar moderasyondan sonra yayınlanır.

Sırada

İlgili notlar