Giriş
Bash (Bourne Again SHell), Linux ve Unix benzeri işletim sistemlerinin varsayılan komut satırı yorumlayıcısıdır. Sistemle etkileşim kurmanın ve otomasyon görevlerini gerçekleştirmenin güçlü bir yolunu sunar. Bu kapsamlı rehber, Bash'in temel komutlarından başlayarak daha ileri seviye kullanımlara kadar geniş bir yelpazeyi kapsayacaktır. Amacımız, hem yeni başlayanlara yol göstermek hem de deneyimli kullanıcılara hızlı bir referans sağlamaktır.
Bash komut satırı, dosya ve dizin yönetimi, süreç kontrolü, ağ iletişimi ve sistem bilgilerine erişim gibi birçok görevi yerine getirmek için kullanılır. Konsol üzerinden çalışmak, grafik arayüzlere kıyasla daha fazla esneklik ve otomasyon imkanı sunar.
Temel Dosya ve Dizin Yönetimi Komutları
Dosya İçeriği ve Arama Komutları
Kullanıcı ve İzin Yönetimi Komutları
Süreç Yönetimi Komutları
Ağ Komutları
Sistem Bilgisi Komutları
Giriş/Çıkış Yönlendirme ve Borulama
Bash'in gücü, komutların birleştirilmesi ve çıktılarının yönlendirilmesiyle ortaya çıkar.
Sıkıştırma ve Arşivleme Komutları
Bash Betikleme Temelleri (Kısa Bir Bakış)
Bash komutları, tek başına kullanılmakla kalmaz, aynı zamanda betikler halinde otomatize edilebilir. Bir betik, bir dizi komutun ardı ardına çalıştırılması için yazılmış bir dosyadır.
Yukarıdaki betikte:
Yardım Alma
Önemli İpuçları ve En İyi Uygulamalar
Sonuç
Bash komutları, Linux ve Unix benzeri sistemlerde günlük görevlerden karmaşık otomasyonlara kadar geniş bir yelpazede kullanılabilen temel araçlardır. Bu rehber, en sık kullanılan ve en önemli komutları kapsayarak Bash dünyasına sağlam bir giriş yapmayı veya mevcut bilginizi pekiştirmeyi amaçlamıştır. Pratik yaparak ve farklı senaryolarda bu komutları kullanarak yetkinliğinizi artırabilirsiniz. Her zaman man sayfalarını ve --help seçeneklerini kullanarak komutlar hakkında daha fazla bilgi edinmekten çekinmeyin. Ek olarak, daha fazla kaynak için Bash Resmi Belgelendirmesi gibi siteleri ziyaret edebilirsiniz. İyi komut satırı kullanımları!
Bash (Bourne Again SHell), Linux ve Unix benzeri işletim sistemlerinin varsayılan komut satırı yorumlayıcısıdır. Sistemle etkileşim kurmanın ve otomasyon görevlerini gerçekleştirmenin güçlü bir yolunu sunar. Bu kapsamlı rehber, Bash'in temel komutlarından başlayarak daha ileri seviye kullanımlara kadar geniş bir yelpazeyi kapsayacaktır. Amacımız, hem yeni başlayanlara yol göstermek hem de deneyimli kullanıcılara hızlı bir referans sağlamaktır.
Bash komut satırı, dosya ve dizin yönetimi, süreç kontrolü, ağ iletişimi ve sistem bilgilerine erişim gibi birçok görevi yerine getirmek için kullanılır. Konsol üzerinden çalışmak, grafik arayüzlere kıyasla daha fazla esneklik ve otomasyon imkanı sunar.
Temel Dosya ve Dizin Yönetimi Komutları
- pwd: "print working directory" kelimelerinin kısaltmasıdır ve o anki çalışma dizininizi gösterir.
Kod:pwd
- ls: Dizindeki dosyaları ve alt dizinleri listeler. Çok sayıda seçeneği bulunur.
- ls -l: Ayrıntılı liste formatında gösterir (izinler, sahip, boyut, tarih vb.).
Kod:ls -l
- ls -a: Gizli dosyalar dahil tüm dosyaları gösterir.
Kod:ls -a
- ls -h: Dosya boyutlarını insan tarafından okunabilir formatta (KB, MB, GB) gösterir (genellikle -l ile kullanılır).
Kod:ls -lh
- ls -l: Ayrıntılı liste formatında gösterir (izinler, sahip, boyut, tarih vb.).
- cd: "change directory" kelimelerinin kısaltmasıdır ve dizinler arasında geçiş yapmak için kullanılır.
Kod:cd /home/kullanici/belgeler cd .. (üst dizine git) cd ~ (kullanıcının ana dizinine git) cd - (önceki dizine geri dön)
- mkdir: Yeni bir dizin oluşturur.
Kod:mkdir yeni_dizin mkdir -p ana_dizin/alt_dizin (iç içe dizinleri oluşturur)
- rmdir: Boş bir dizini siler. Dizin boş değilse hata verir.
Kod:rmdir bos_dizin
- cp: Dosyaları veya dizinleri kopyalar.
- cp kaynak_dosya hedef_dosya: Dosyayı kopyalar.
Kod:cp rapor.txt rapor_yedek.txt
- cp -r kaynak_dizin hedef_dizin: Dizinleri ve içindekileri kopyalar (rekürsif).
Kod:cp -r belgeler/ eski_belgeler/
- cp kaynak_dosya hedef_dosya: Dosyayı kopyalar.
- mv: Dosyaları veya dizinleri taşır ya da yeniden adlandırır.
- mv eski_ad yeni_ad: Yeniden adlandırma.
Kod:mv eski_rapor.txt yeni_rapor.txt
- mv dosya hedef_dizin: Taşıma.
Kod:mv resim.jpg /home/kullanici/fotograflar/
- mv eski_ad yeni_ad: Yeniden adlandırma.
- rm: Dosyaları veya dizinleri siler. Dikkatli kullanılmalıdır, çünkü silinen dosyalar genellikle geri alınamaz.
- rm dosya.txt: Dosyayı siler.
Kod:rm gecici.txt
- rm -r dizin: Bir dizini ve içindekileri siler (rekürsif).
Kod:rm -r onemsiz_dizin/
- rm -f dosya.txt: Onay istemeden zorla siler.
Kod:rm -f kilitli_dosya.log
- rm -rf dizin: Zorla ve rekürsif olarak siler. Bu komut çok tehlikelidir ve yanlış kullanıldığında sisteminize onarılamaz zararlar verebilir.
Kod:rm -rf /
Uyarı: rm -rf komutu ile silinen verilerin geri getirilmesi çok zordur veya imkansızdır. Bu komutu kullanmadan önce ne yaptığınızdan emin olun!
- rm dosya.txt: Dosyayı siler.
- touch: Yeni boş bir dosya oluşturur veya mevcut bir dosyanın erişim/değiştirilme zamanını günceller.
Kod:touch yeni_dosya.txt
- cat: Dosyaların içeriğini standart çıktıya (ekrana) basar. Birden fazla dosyayı birleştirmek için de kullanılabilir.
Kod:cat metin.txt cat dosya1.txt dosya2.txt > birlesik.txt
- less / more: Büyük dosyaların içeriğini sayfa sayfa görüntülemenizi sağlar. less daha gelişmiştir, ileri ve geri gidebilirsiniz.
Kod:less buyuk_log_dosyasi.log more baska_metin.txt
Dosya İçeriği ve Arama Komutları
- grep: Dosyalarda belirli desenleri arar ve eşleşen satırları gösterir.
- grep "anahtar kelime" dosya.txt
Kod:grep "hata" /var/log/syslog
- grep -i "anahtar kelime" dosya.txt: Büyük/küçük harf duyarsız arama.
Kod:grep -i "error" app.log
- grep -r "anahtar kelime" dizin/: Dizin içinde rekürsif arama.
Kod:grep -r "fonksiyon" proje_klasoru/
- grep -l "anahtar kelime" *.txt: Sadece eşleşme içeren dosya adlarını listeler.
Kod:grep -l "konfigürasyon" *.conf
- grep "anahtar kelime" dosya.txt
- find: Belirli kriterlere göre dosya ve dizinleri arar. Çok güçlü ve esnektir.
- find . -name "dosya_adi.txt": Mevcut dizinde dosya adına göre arama.
Kod:find . -name "rapor*.pdf"
- find /home -type d -name "yedekler": /home dizininde "yedekler" adlı dizinleri arar.
Kod:find /var/log -type f -size +1G
- find . -mtime +7 -delete: Son 7 günden eski dosyaları siler (dikkatli olun!).
Kod:find /tmp -type f -atime +30 -exec rm {} \;
- find . -name "dosya_adi.txt": Mevcut dizinde dosya adına göre arama.
- head / tail: Dosyanın ilk veya son birkaç satırını gösterir.
- head dosya.txt: İlk 10 satırı gösterir.
Kod:head my_script.sh
- tail -n 20 dosya.txt: Son 20 satırı gösterir.
Kod:tail -n 20 access.log
- tail -f dosya.txt: Dosyaya eklenen yeni satırları gerçek zamanlı olarak takip eder (log dosyalarını izlemek için idealdir).
Kod:tail -f /var/log/apache2/error.log
- head dosya.txt: İlk 10 satırı gösterir.
- wc: Dosyadaki satır, kelime ve karakter sayısını gösterir.
- wc -l dosya.txt: Satır sayısı.
Kod:wc -l notlar.txt
- wc -w dosya.txt: Kelime sayısı.
Kod:wc -w makale.txt
- wc -c dosya.txt: Karakter sayısı.
Kod:wc -c README.md
- wc -l dosya.txt: Satır sayısı.
Kullanıcı ve İzin Yönetimi Komutları
- chmod: Dosya ve dizin izinlerini değiştirir. Numerik (oktal) veya sembolik modda kullanılabilir.
- chmod 755 script.sh: Okuma, yazma, çalıştırma (sahip), okuma, çalıştırma (grup), okuma, çalıştırma (diğerleri) izni verir.
Kod:chmod 755 my_program
- chmod +x script.sh: Çalıştırma izni ekler.
Kod:chmod +x run.sh
- chmod -w file.txt: Yazma iznini kaldırır.
Kod:chmod -w config.ini
- chmod 755 script.sh: Okuma, yazma, çalıştırma (sahip), okuma, çalıştırma (grup), okuma, çalıştırma (diğerleri) izni verir.
- chown: Dosya veya dizinin sahibini değiştirir. Yalnızca root veya sudo yetkisine sahip kullanıcılar kullanabilir.
Kod:sudo chown kullanici:grup dosya.txt sudo chown -R yeni_sahip:yeni_grup proje_dizini/
- sudo: "superuser do" kelimelerinin kısaltmasıdır. Yetkili kullanıcıların (genellikle root) komutlarını kendi parolanızla çalıştırmanızı sağlar.
Kod:sudo apt update sudo reboot
- su: "switch user" kelimelerinin kısaltmasıdır. Farklı bir kullanıcıya geçiş yapmanızı sağlar. Genellikle root kullanıcısına geçmek için kullanılır.
Kod:su - (root kullanıcısına geçiş) su baska_kullanici
- whoami: Şu anda hangi kullanıcı olarak oturum açtığınızı gösterir.
Kod:whoami
- id: Mevcut kullanıcının veya belirtilen kullanıcının kullanıcı kimliğini (UID), grup kimliğini (GID) ve ait olduğu tüm grupları gösterir.
Kod:id id sysadmin
Süreç Yönetimi Komutları
- ps: Çalışan süreçleri gösterir.
- ps aux: Tüm kullanıcıların süreçlerini detaylı gösterir.
Kod:ps aux | grep firefox
- ps -ef: Tüm süreçleri tam formatta listeler.
Kod:ps -ef
- ps aux: Tüm kullanıcıların süreçlerini detaylı gösterir.
- top: Süreçleri dinamik olarak, kaynak kullanımına göre sıralayarak gösterir. CPU, bellek kullanımı gibi bilgileri gerçek zamanlı izlemek için idealdir.
Kod:top
- kill: Bir süreci Process ID (PID) kullanarak sonlandırır.
- kill PID: Normal sonlandırma isteği (SIGTERM).
Kod:kill 12345
- kill -9 PID: Süreci zorla sonlandırır (SIGKILL).
Kod:kill -9 54321
- kill PID: Normal sonlandırma isteği (SIGTERM).
- pkill: Süreçleri adlarına göre sonlandırır.
Kod:pkill firefox
- bg: Bir duraklatılmış süreci arka planda çalıştırmaya devam eder.
Kod:ctrl+z (bir süreci duraklatır) bg
- fg: Arka planda çalışan veya duraklatılmış bir süreci ön plana getirir.
Kod:fg
- jobs: Arka planda çalışan veya duraklatılmış işleri listeler.
Kod:jobs
Ağ Komutları
- ping: Bir ana bilgisayara ağ üzerinden erişilebilir olup olmadığını test eder.
Kod:ping google.com
- ip addr / ifconfig: Ağ arayüzlerinin IP adreslerini ve diğer ağ bilgilerini gösterir. ifconfig eski bir komuttur, ip addr tercih edilir.
Kod:ip addr show ifconfig
- netstat: Ağ bağlantılarını, yönlendirme tablolarını, arayüz istatistiklerini gösterir.
Kod:netstat -tulnp
- ssh: "Secure Shell" kelimelerinin kısaltmasıdır. Uzak bir sunucuya güvenli bir şekilde bağlanmanızı sağlar.
Kod:ssh kullanici@uzak_sunucu_ip
- scp: "Secure Copy" kelimelerinin kısaltmasıdır. Dosyaları uzak sunuculara güvenli bir şekilde kopyalar.
Kod:scp dosya.txt kullanici@uzak_sunucu_ip:/hedef/dizin/ scp kullanici@uzak_sunucu_ip:/kaynak/dosya.log .
- wget / curl: Web sitelerinden veya FTP sunucularından dosya indirmek için kullanılır. curl daha çok veri transferi ve API etkileşimleri için çok yönlüdür.
Kod:wget https://example.com/dosya.zip curl -O https://example.com/another_file.tar.gz curl -L "https://api.example.com/data"
Sistem Bilgisi Komutları
- uname: Sistem hakkındaki bilgileri gösterir (çekirdek adı, sürümü vb.).
Kod:uname -a
- df: Disk alanı kullanımını gösterir.
Kod:df -h
- du: Dosya veya dizinlerin disk kullanımını gösterir.
Kod:du -sh /home/kullanici/belgeler/
- free: Bellek kullanımını gösterir.
Kod:free -h
- uptime: Sistemin ne kadar süredir çalıştığını, kullanıcı sayısını ve yük ortalamasını gösterir.
Kod:uptime
- history: Daha önce çalıştırdığınız komutların listesini gösterir.
Kod:history !500 (500 numaralı komutu tekrar çalıştırır)
Giriş/Çıkış Yönlendirme ve Borulama
Bash'in gücü, komutların birleştirilmesi ve çıktılarının yönlendirilmesiyle ortaya çıkar.
- > (Tek Ok): Bir komutun çıktısını bir dosyaya yazar. Dosya varsa üzerine yazar.
Kod:ls -l > dosya_listesi.txt
- >> (Çift Ok): Bir komutun çıktısını bir dosyanın sonuna ekler.
Kod:echo "Yeni satır" >> dosya_listesi.txt
- < (Giriş Yönlendirme): Bir dosyanın içeriğini bir komutun girişi olarak kullanır.
Kod:sort < sayilar.txt
- | (Boru - Pipe): Bir komutun çıktısını diğer bir komutun girdisi olarak yönlendirir. En yaygın kullanılan ve güçlü özelliklerden biridir.
Kod:ps aux | grep nginx (nginx süreçlerini bul) ls -l | less (ls çıktısını sayfa sayfa görüntüle) cat log.txt | grep "error" | wc -l (log dosyasındaki "error" içeren satır sayısını bul)
Sıkıştırma ve Arşivleme Komutları
- tar: Dosyaları bir arşive (tarball) paketlemek ve arşivden çıkarmak için kullanılır. Genellikle gzip veya bzip2 ile sıkıştırılır.
- tar -cvf arsiv.tar dosya1 dosya2 dizin/: Dosyaları arşivler (sıkıştırmaz).
Kod:tar -cvf belgelerim.tar raporlar/ notlar.txt
- tar -xvf arsiv.tar: Arşivden çıkarır.
Kod:tar -xvf yedek.tar
- tar -czvf arsiv.tar.gz dosya1 dizin/: gzip ile sıkıştırılmış arşiv oluşturur.
Kod:tar -czvf fotograflar.tar.gz fotograflar/
- tar -xzvf arsiv.tar.gz: gzip ile sıkıştırılmış arşivden çıkarır.
Kod:tar -xzvf proje.tar.gz
- tar -cvf arsiv.tar dosya1 dosya2 dizin/: Dosyaları arşivler (sıkıştırmaz).
- gzip / gunzip: Tek bir dosyayı sıkıştırmak veya açmak için kullanılır.
Kod:gzip dosya.txt gunzip dosya.txt.gz
- zip / unzip: Windows'taki ZIP formatıyla uyumlu arşivler oluşturur ve açar.
Kod:zip -r arsiv.zip dosya1 dosya2 dizin/ unzip arsiv.zip
Bash Betikleme Temelleri (Kısa Bir Bakış)
Bash komutları, tek başına kullanılmakla kalmaz, aynı zamanda betikler halinde otomatize edilebilir. Bir betik, bir dizi komutun ardı ardına çalıştırılması için yazılmış bir dosyadır.
Örnek: Basit Bir Betik
Kod:
#!/bin/bash
# Bu benim ilk Bash betiğim
echo "Merhaba, Dünya!"
CURRENT_DATE=$(date +%Y-%m-%d)
echo "Bugünün tarihi: $CURRENT_DATE"
mkdir -p loglar
echo "Loglama dizini oluşturuldu."
if [ -f "deneme.txt" ]; then
echo "deneme.txt dosyası zaten var."
else
touch deneme.txt
echo "deneme.txt dosyası oluşturuldu."
fi
# 5 saniye bekleyelim
sleep 5
echo "Betik tamamlandı."
- #!/bin/bash: "shebang" olarak bilinir, betiğin hangi yorumlayıcı ile çalıştırılacağını belirtir.
- #: Yorum satırlarını belirtir.
- echo: Metni ekrana yazdırır.
- CURRENT_DATE=$(date +%Y-%m-%d): Komut çıktısını bir değişkene atar.
- if, else, fi: Koşullu ifadeler için kullanılır.
- sleep: Belirtilen saniye kadar bekler.
Yardım Alma
- man komut_adı: Bir komutun "manual" (kılavuz) sayfasını gösterir. En detaylı bilgi kaynağıdır.
Kod:man ls man grep
- komut_adı --help veya komut_adı -h: Çoğu komutun kısa bir yardım çıktısı bulunur.
Kod:ls --help cp -h
- type komut_adı: Komutun türünü (yerleşik, takma ad, fonksiyon, dosya) gösterir.
Kod:type cd type ll
Önemli İpuçları ve En İyi Uygulamalar
- Otomatik Tamamlama: Komutları veya dosya yollarını yazarken Tab tuşuna basmak, otomatik tamamlamayı sağlar ve yazım hatalarını azaltır.
- Geçmiş Komutlar: Ok tuşlarını (yukarı/aşağı) kullanarak daha önce çalıştırılan komutlara erişebilirsiniz.
- Borular ve Yönlendirme: Komutların çıktısını başka komutlara veya dosyalara yönlendirmeyi öğrenmek Bash'in gücünü tam olarak kullanmanızı sağlar.
- Takma Adlar (Aliases): Sık kullandığınız uzun komutlar için takma adlar (alias komutu) oluşturarak iş akışınızı hızlandırabilirsiniz. Örneğin:
Kod:
alias ll='ls -lh'
- Sudo Kullanımı: Yönetici yetkisi gerektiren komutları sudo ile çalıştırın. Gereksiz yere root kullanıcısı olarak kalmaktan kaçının.
- Yedekleme: Kritik işlemler yapmadan önce daima önemli verilerinizi yedekleyin. Özellikle rm -rf gibi komutları kullanırken aşırı dikkatli olun.
Sonuç
Bash komutları, Linux ve Unix benzeri sistemlerde günlük görevlerden karmaşık otomasyonlara kadar geniş bir yelpazede kullanılabilen temel araçlardır. Bu rehber, en sık kullanılan ve en önemli komutları kapsayarak Bash dünyasına sağlam bir giriş yapmayı veya mevcut bilginizi pekiştirmeyi amaçlamıştır. Pratik yaparak ve farklı senaryolarda bu komutları kullanarak yetkinliğinizi artırabilirsiniz. Her zaman man sayfalarını ve --help seçeneklerini kullanarak komutlar hakkında daha fazla bilgi edinmekten çekinmeyin. Ek olarak, daha fazla kaynak için Bash Resmi Belgelendirmesi gibi siteleri ziyaret edebilirsiniz. İyi komut satırı kullanımları!