Linux Komut Satırına Giriş
Linux komut satırı, bilgisayarınızla doğrudan metin tabanlı komutlar aracılığıyla iletişim kurmanızı sağlayan güçlü bir araçtır. Grafik arayüzlerin sunduğu kolaylıkların ötesinde, komut satırı size tam kontrol, otomasyon imkânı ve sisteminiz üzerinde derinlemesine yönetim yetkisi sunar. Sistem yöneticileri, yazılım geliştiriciler ve güvenlik uzmanları için vazgeçilmez olan bu araç, Linux ekosisteminin temel taşıdır.
Komut satırı, genellikle terminal veya shell olarak adlandırılır. Terminal, komutlarınızı yazdığınız penceredir; shell ise bu komutları yorumlayan ve çalıştıran programdır. En yaygın kullanılan shell Bash (Bourne Again Shell) olmakla birlikte, Zsh, Fish ve Dash gibi alternatifler de mevcuttur. Bu rehberde, sıfırdan başlayarak ileri seviye konulara kadar Linux komut satırını kapsamlı bir şekilde ele alacağız.
Terminal ve Shell Kavramları
Linux dünyasında terminal ve shell kavramlarını anlamak, komut satırını etkin kullanmanın ilk adımıdır. Terminal emülatörü, komutlarınızı girdiğiniz ve çıktıları gördüğünüz grafik penceredir. GNOME Terminal, Konsole, Alacritty ve Terminator popüler terminal emülatörlerinden bazılarıdır.
Shell ise terminalde çalışan komut yorumlayıcısıdır. Bash, çoğu Linux dağıtımında varsayılan shell olarak gelir. Hangi shell kullandığınızı öğrenmek için aşağıdaki komutu kullanabilirsiniz:
echo $SHELL komutu mevcut shell programınızı gösterir. Sisteminizde yüklü tüm shell programlarını görmek için cat /etc/shells komutunu kullanabilirsiniz.
Shell, komutlarınızı yorumlar, ortam değişkenlerini yönetir, komut geçmişini saklar ve script dosyalarını çalıştırır. Bu özellikler sayesinde shell, basit bir komut çalıştırıcıdan çok daha fazlasıdır; tam teşekküllü bir programlama ortamıdır.
Temel Linux Komutları
Dosya ve Dizin Gezinme
Linux dosya sisteminde gezinmek, komut satırında yapacağınız ilk ve en temel işlemdir. Dosya sistemi, kök dizin olan "/" ile başlayan hiyerarşik bir ağaç yapısındadır. Temel gezinme komutları şunlardır:
- pwd (Print Working Directory): Bulunduğunuz dizini gösterir
- ls (List): Dizin içeriğini listeler. ls -la komutu gizli dosyalar dahil tüm detayları gösterir
- cd (Change Directory): Dizin değiştirir. cd ~ ev dizinine, cd .. üst dizine götürür
- tree: Dizin yapısını ağaç formatında görselleştirir
Bu komutları etkili kullanmak için mutlak ve göreli yol kavramlarını anlamak önemlidir. Mutlak yol kök dizinden başlar (örneğin /home/kullanici/belgeler), göreli yol ise bulunduğunuz dizine göre belirlenir (örneğin ./belgeler veya ../resimler).
Dosya İşlemleri
Dosya oluşturma, kopyalama, taşıma ve silme işlemleri günlük kullanımın ayrılmaz parçasıdır:
- touch: Boş dosya oluşturur veya mevcut dosyanın zaman damgasını günceller
- cp: Dosya veya dizin kopyalar. cp -r ile dizinleri özyinelemeli olarak kopyalarsınız
- mv: Dosya veya dizin taşır, aynı zamanda yeniden adlandırmak için de kullanılır
- rm: Dosya siler. rm -rf ile dizinleri zorla ve özyinelemeli olarak siler (dikkatli kullanın)
- mkdir: Dizin oluşturur. mkdir -p ile iç içe dizinler oluşturabilirsiniz
Dosya İçerik Görüntüleme
Dosya içeriklerini farklı şekillerde görüntülemek için çeşitli komutlar mevcuttur:
- cat: Dosya içeriğinin tamamını gösterir
- less: Dosyayı sayfa sayfa görüntüler, büyük dosyalar için idealdir
- head: Dosyanın ilk satırlarını gösterir (varsayılan 10 satır)
- tail: Dosyanın son satırlarını gösterir. tail -f ile canlı log takibi yapabilirsiniz
- wc: Dosyadaki satır, kelime ve karakter sayısını verir
Dosya İzinleri ve Sahiplik
Linux güvenlik modelinin temelini dosya izinleri oluşturur. Her dosya ve dizin, üç farklı kullanıcı grubu için okuma (r), yazma (w) ve çalıştırma (x) izinlerine sahiptir. Bu gruplar sırasıyla dosya sahibi (owner), grup (group) ve diğer kullanıcılardır (others).
ls -l komutuyla izinleri görüntüleyebilirsiniz. Çıktıdaki ilk sütun, izin bilgisini "-rwxr-xr--" formatında gösterir. Bu örnekte dosya sahibi tam yetkiye, grup okuma ve çalıştırma yetkisine, diğerleri ise yalnızca okuma yetkisine sahiptir.
- chmod: Dosya izinlerini değiştirir. Sayısal (chmod 755 dosya) veya sembolik (chmod u+x dosya) gösterimle kullanılır
- chown: Dosya sahipliğini değiştirir. chown kullanici:grup dosya formatında kullanılır
- chgrp: Dosyanın grup sahipliğini değiştirir
İzin numaraları üçlü sistemle çalışır: r=4, w=2, x=1. Bunların toplamı izni belirler. Örneğin 755, sahibine tam yetki (7=4+2+1), gruba ve diğerlerine okuma-çalıştırma (5=4+1) yetkisi verir.
Metin İşleme ve Arama
Linux komut satırının en güçlü yönlerinden biri, metin işleme yetenekleridir. Bu komutlar özellikle log dosyalarını analiz ederken, veri dönüşümleri yaparken ve raporlama işlemlerinde büyük kolaylık sağlar.
Arama Komutları
- grep: Metin içinde desen arar. grep -r ile dizinlerde özyinelemeli arama yapar, grep -i ile büyük/küçük harf duyarsız arama yapar
- find: Dosya ve dizin arar. find /home -name "*.txt" gibi kullanılır. Zaman, boyut ve izin kriterlerine göre de arama yapabilir
- locate: Veritabanı tabanlı hızlı dosya arama yapar
- which: Komutun tam yolunu gösterir
Metin Dönüştürme
- sed: Akış düzenleyici olarak metin dönüşümleri yapar. sed 's/eski/yeni/g' ile toplu metin değiştirme yapabilirsiniz
- awk: Gelişmiş metin işleme ve raporlama aracıdır. Sütun bazlı veri işlemede mükemmeldir
- sort: Satırları sıralar. sort -n ile sayısal, sort -r ile ters sıralama yapar
- uniq: Tekrarlayan satırları kaldırır. sort ile birlikte kullanıldığında etkilidir
- cut: Satırlardan belirli alanları keser. cut -d',' -f2 ile CSV dosyasının ikinci sütununu alabilirsiniz
Pipe ve Yönlendirme
Linux komut satırının gerçek gücü, komutları birbirine bağlama yeteneğinden gelir. Pipe (|) operatörü, bir komutun çıktısını başka bir komutun girdisi olarak yönlendirir. Bu sayede karmaşık işlemleri basit komut zincirleriyle gerçekleştirebilirsiniz.
Yönlendirme operatörleri ise komut çıktısını dosyalara yönlendirmenizi sağlar:
- > : Çıktıyı dosyaya yazar (dosya varsa üzerine yazar)
- >> : Çıktıyı dosyanın sonuna ekler
- < : Dosyayı komuta girdi olarak yönlendirir
- 2> : Hata çıktısını yönlendirir
- 2>&1 : Hata çıktısını standart çıktıyla birleştirir
Pipe ve yönlendirme, Unix felsefesinin temelini oluşturur: Her program tek bir işi iyi yapsın ve programlar birbirleriyle çalışabilsin. Bu yaklaşım sayesinde basit araçlardan karmaşık çözümler üretebilirsiniz.
Süreç Yönetimi
Linux'ta çalışan her program bir süreçtir ve her sürecin benzersiz bir PID (Process ID) numarası vardır. Süreç yönetimi, sistem yönetiminin kritik bileşenlerinden biridir.
- ps: Çalışan süreçleri listeler. ps aux ile tüm süreçleri detaylı olarak görebilirsiniz
- top / htop: Süreçleri gerçek zamanlı izler. CPU ve bellek kullanımını gösterir
- kill: Sürece sinyal gönderir. kill -9 PID ile zorla sonlandırır
- killall: İsme göre süreç sonlandırır
- bg / fg: Süreçleri arka plana gönderir veya ön plana getirir
- nohup: Terminal kapatıldığında bile sürecin çalışmaya devam etmesini sağlar
Ctrl+C bir süreci sonlandırır, Ctrl+Z ise askıya alır. Askıya alınan süreçleri bg komutuyla arka planda çalıştırmaya devam edebilirsiniz. Komutun sonuna & ekleyerek doğrudan arka planda başlatabilirsiniz.
Shell Scripting Temelleri
Shell scripting, birden fazla komutu otomatikleştirmek için kullanılan güçlü bir yöntemdir. Tekrarlayan görevleri otomatikleştirmek, sistem bakım işlemlerini zamanlamak ve karmaşık iş akışlarını yönetmek için shell scriptleri yazabilirsiniz.
Script Yapısı
Her shell scripti, ilk satırda shebang (#!/bin/bash) ile hangi yorumlayıcının kullanılacağını belirtir. Script dosyasına çalıştırma izni verdikten sonra doğrudan çalıştırabilirsiniz. Temel script bileşenleri şunlardır:
- Değişkenler: ISIM="Linux" şeklinde tanımlanır, $ISIM ile kullanılır
- Koşullar: if-then-elif-else-fi yapısıyla koşullu işlemler yapılır
- Döngüler: for, while ve until döngüleri ile tekrarlayan işlemler gerçekleştirilir
- Fonksiyonlar: Kod bloklarını yeniden kullanılabilir şekilde organize eder
- Parametreler: $1, $2 ile script parametreleri alınır, $# parametre sayısını verir
Pratik Script Örnekleri
Shell scriptleri günlük sistem yönetiminde pek çok alanda kullanılır. Yedekleme scriptleri, disk alanı kontrolü, log analizi, kullanıcı yönetimi ve servis izleme gibi görevler shell scriptleriyle otomatikleştirilebilir. Cron ile zamanlanmış görevler oluşturarak scriptlerinizi belirli aralıklarla otomatik olarak çalıştırabilirsiniz.
Ağ Komutları
Linux, güçlü ağ yönetimi araçlarıyla donatılmıştır. Ağ bağlantılarını izlemek, sorun gidermek ve yapılandırmak için çeşitli komutlar mevcuttur:
- ip addr / ifconfig: Ağ arayüzlerini ve IP adreslerini gösterir
- ping: Hedef sunucuya bağlantıyı test eder
- curl / wget: Web üzerinden dosya indirir veya API istekleri yapar
- ssh: Uzak sunuculara güvenli bağlantı kurar
- scp / rsync: Sunucular arasında dosya transferi yapar. rsync artımlı senkronizasyon desteği sunar
- netstat / ss: Ağ bağlantılarını ve port durumlarını listeler
- nslookup / dig: DNS sorgulamaları yapar
Paket Yönetimi
Linux dağıtımları, yazılım kurulumu ve güncelleme için paket yöneticileri kullanır. Dağıtımınıza göre kullanacağınız paket yöneticisi farklılık gösterir:
- apt (Debian/Ubuntu): apt update, apt install, apt remove komutlarıyla kullanılır
- dnf / yum (Fedora/CentOS): dnf install, dnf update komutlarıyla kullanılır
- pacman (Arch Linux): pacman -S, pacman -Syu komutlarıyla kullanılır
- snap / flatpak: Dağıtım bağımsız evrensel paket yöneticileridir
Paket yöneticileri, bağımlılık çözümlemesi yaparak gerekli tüm kütüphaneleri otomatik olarak kurar. Düzenli güncelleme yapmak, sistem güvenliği açısından kritik öneme sahiptir.
Sistem İzleme ve Yönetim
Linux sistem yöneticileri için performans izleme ve kaynak yönetimi büyük önem taşır. Aşağıdaki komutlar sisteminizin durumunu anlamanıza yardımcı olur:
- df -h: Disk kullanımını insan tarafından okunabilir formatta gösterir
- du -sh: Dizin veya dosya boyutunu özetler
- free -h: Bellek kullanımını gösterir
- uptime: Sistemin ne kadar süredir çalıştığını ve yük ortalamasını gösterir
- dmesg: Çekirdek mesajlarını görüntüler
- journalctl: Systemd günlüklerini sorgular
- systemctl: Servisleri yönetir. start, stop, enable, status komutlarıyla kullanılır
İpuçları ve En İyi Uygulamalar
Linux komut satırını daha verimli kullanmak için aşağıdaki ipuçlarını göz önünde bulundurun:
- Tab tuşuyla otomatik tamamlama özelliğini aktif olarak kullanın. Hem zaman kazandırır hem yazım hatalarını önler.
- Komut geçmişini Ctrl+R ile arayarak önceki komutları hızlıca bulun ve yeniden kullanın.
- Alias tanımlayarak sık kullandığınız uzun komutları kısaltın. Örneğin alias ll='ls -la' gibi.
- Man sayfalarını okumayı alışkanlık haline getirin. man komut_adı ile her komutun detaylı belgelerine ulaşabilirsiniz.
- Önemli işlemlerden önce mutlaka yedek alın. Özellikle rm -rf gibi geri dönüşü olmayan komutlarda dikkatli olun.
- Shell scriptlerinizde hata kontrolü yapın. set -e ile hata durumunda scriptin durmasını sağlayın.
- Ortam değişkenlerini .bashrc veya .bash_profile dosyalarında tanımlayarak kalıcı hale getirin.
- Karmaşık komutları test ortamında denedikten sonra üretim sistemlerinde çalıştırın.
Sonuç
Linux komut satırı, başlangıçta göz korkutucu görünse de düzenli pratikle ikinci doğanız haline gelecek güçlü bir araçtır. Temel komutlarla başlayarak, dosya yönetimi, izinler, metin işleme, süreç yönetimi ve shell scripting konularında adım adım ilerlemeniz en sağlıklı öğrenme yoludur. Komut satırı becerileriniz geliştikçe, grafik arayüzlerle yapamayacağınız pek çok işlemi hızlı ve etkin bir şekilde gerçekleştirebildiğinizi göreceksiniz.
Unutmayın ki Linux topluluğu, dünyanın en aktif ve yardımsever açık kaynak topluluklarından biridir. Karşılaştığınız sorunlarda man sayfaları, çevrimiçi forumlar ve topluluk kaynakları size her zaman yol gösterecektir. Öğrenme sürecinizde sabırlı olun, sürekli pratik yapın ve yeni komutları keşfetmeye devam edin.